-<?php
-/**
- * poche, a read it later open source system
- *
- * @category poche
- * @author Nicolas Lœuillet <support@inthepoche.com>
- * @copyright 2013
- * @license http://www.wtfpl.net/ see COPYING file
- */
-
-class MyTool
-{
- public static function initPhp()
- {
- define('START_TIME', microtime(true));
-
- if (phpversion() < 5) {
- die(_('Oops, it seems you don\'t have PHP 5.'));
- }
-
- error_reporting(E_ALL);
-
- function stripslashesDeep($value) {
- return is_array($value)
- ? array_map('stripslashesDeep', $value)
- : stripslashes($value);
- }
-
- if (get_magic_quotes_gpc()) {
- $_POST = array_map('stripslashesDeep', $_POST);
- $_GET = array_map('stripslashesDeep', $_GET);
- $_COOKIE = array_map('stripslashesDeep', $_COOKIE);
- }
-
- ob_start();
- register_shutdown_function('ob_end_flush');
- }
-
- public static function isUrl($url)
- {
- // http://neo22s.com/check-if-url-exists-and-is-online-php/
- $pattern='|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i';
-
- return preg_match($pattern, $url);
- }
-
- public static function isEmail($email)
- {
- $pattern = "/^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2, 4}$/i";
-
- return (preg_match($pattern, $email));
- }
-
- public static function formatBBCode($text)
- {
- $replace = array(
- '/\[m\](.+?)\[\/m\]/is'
- => '/* moderate */',
- '/\[b\](.+?)\[\/b\]/is'
- => '<strong>$1</strong>',
- '/\[i\](.+?)\[\/i\]/is'
- => '<em>$1</em>',
- '/\[s\](.+?)\[\/s\]/is'
- => '<del>$1</del>',
- '/\[u\](.+?)\[\/u\]/is'
- => '<span style="text-decoration: underline;">$1</span>',
- '/\[url\](.+?)\[\/url]/is'
- => '<a href="$1">$1</a>',
- '/\[url=(\w+:\/\/[^\]]+)\](.+?)\[\/url]/is'
- => '<a href="$1">$2</a>',
- '/\[quote\](.+?)\[\/quote\]/is'
- => '<blockquote>$1</blockquote>',
- '/\[code\](.+?)\[\/code\]/is'
- => '<code>$1</code>',
- '/\[([^[]+)\|([^[]+)\]/is'
- => '<a href="$2">$1</a>'
- );
- $text = preg_replace(
- array_keys($replace),
- array_values($replace),
- $text
- );
-
- return $text;
- }
-
- public static function formatText($text)
- {
- $text = preg_replace_callback(
- '/<code_html>(.*?)<\/code_html>/is',
- create_function(
- '$matches',
- 'return htmlspecialchars($matches[1]);'
- ),
- $text
- );
- $text = preg_replace_callback(
- '/<code_php>(.*?)<\/code_php>/is',
- create_function(
- '$matches',
- 'return highlight_string("<?php $matches[1] ?>", true);'
- ),
- $text
- );
- $text = preg_replace('/<br \/>/is', '', $text);
-
- $text = preg_replace(
- '#(^|\s)([a-z]+://([^\s\w/]?[\w/])*)(\s|$)#im',
- '\\1<a href="\\2">\\2</a>\\4',
- $text
- );
- $text = preg_replace(
- '#(^|\s)wp:?([a-z]{2}|):([\w]+)#im',
- '\\1<a href="http://\\2.wikipedia.org/wiki/\\3">\\3</a>',
- $text
- );
- $text = str_replace(
- 'http://.wikipedia.org/wiki/',
- 'http://www.wikipedia.org/wiki/',
- $text
- );
- $text = str_replace('\wp:', 'wp:', $text);
- $text = str_replace('\http:', 'http:', $text);
- $text = MyTool::formatBBCode($text);
- $text = nl2br($text);
-
- return $text;
- }
-
- public static function getUrl()
- {
- $https = (!empty($_SERVER['HTTPS'])
- && (strtolower($_SERVER['HTTPS']) == 'on'))
- || (isset($_SERVER["SERVER_PORT"])
- && $_SERVER["SERVER_PORT"] == '443'); // HTTPS detection.
- $serverport = (!isset($_SERVER["SERVER_PORT"])
- || $_SERVER["SERVER_PORT"] == '80'
- || ($https && $_SERVER["SERVER_PORT"] == '443')
- ? ''
- : ':' . $_SERVER["SERVER_PORT"]);
-
- $scriptname = str_replace('/index.php', '/', $_SERVER["SCRIPT_NAME"]);
-
- if (!isset($_SERVER["SERVER_NAME"])) {
- return $scriptname;
- }
-
- return 'http' . ($https ? 's' : '') . '://'
- . $_SERVER["SERVER_NAME"] . $serverport . $scriptname;
- }
-
- public static function rrmdir($dir)
- {
- if (is_dir($dir) && ($d = @opendir($dir))) {
- while (($file = @readdir($d)) !== false) {
- if ( $file == '.' || $file == '..' ) {
- continue;
- } else {
- unlink($dir . '/' . $file);
- }
- }
- }
- }
-
- public static function humanBytes($bytes)
- {
- $siPrefix = array( 'bytes', 'KB', 'MB', 'GB', 'TB', 'EB', 'ZB', 'YB' );
- $base = 1024;
- $class = min((int) log($bytes, $base), count($siPrefix) - 1);
- $val = sprintf('%1.2f', $bytes / pow($base, $class));
-
- return $val . ' ' . $siPrefix[$class];
- }
-
- public static function returnBytes($val)
- {
- $val = trim($val);
- $last = strtolower($val[strlen($val)-1]);
- switch($last)
- {
- case 'g': $val *= 1024;
- case 'm': $val *= 1024;
- case 'k': $val *= 1024;
- }
-
- return $val;
- }
-
- public static function getMaxFileSize()
- {
- $sizePostMax = MyTool::returnBytes(ini_get('post_max_size'));
- $sizeUploadMax = MyTool::returnBytes(ini_get('upload_max_filesize'));
-
- // Return the smaller of two:
- return min($sizePostMax, $sizeUploadMax);
- }
-
- public static function smallHash($text)
- {
- $t = rtrim(base64_encode(hash('crc32', $text, true)), '=');
- // Get rid of characters which need encoding in URLs.
- $t = str_replace('+', '-', $t);
- $t = str_replace('/', '_', $t);
- $t = str_replace('=', '@', $t);
-
- return $t;
- }
-
- public static function renderJson($data)
- {
- header('Cache-Control: no-cache, must-revalidate');
- header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');
- header('Content-type: application/json; charset=UTF-8');
-
- echo json_encode($data);
- exit();
- }
-
- public static function grabToLocal($url, $file, $force = false)
- {
- if ((!file_exists($file) || $force) && in_array('curl', get_loaded_extensions())){
- $ch = curl_init ($url);
- curl_setopt($ch, CURLOPT_HEADER, false);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
- $raw = curl_exec($ch);
- if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == 200) {
- $fp = fopen($file, 'x');
- fwrite($fp, $raw);
- fclose($fp);
- }
- curl_close ($ch);
- }
- }
-
- public static function redirect($rurl = '')
- {
- if ($rurl === '') {
- // if (!empty($_SERVER['HTTP_REFERER']) && strcmp(parse_url($_SERVER['HTTP_REFERER'],PHP_URL_HOST),$_SERVER['SERVER_NAME'])==0)
- $rurl = (empty($_SERVER['HTTP_REFERER'])?'?':$_SERVER['HTTP_REFERER']);
- if (isset($_POST['returnurl'])) {
- $rurl = $_POST['returnurl'];
- }
- }
-
- // prevent loop
- if (empty($rurl) || parse_url($rurl, PHP_URL_QUERY) === $_SERVER['QUERY_STRING']) {
- $rurl = MyTool::getUrl();
- }
-
- if (substr($rurl, 0, 1) !== '?') {
- $ref = MyTool::getUrl();
- if (substr($rurl, 0, strlen($ref)) !== $ref) {
- $rurl = $ref;
- }
- }
- header('Location: '.$rurl);
- exit();
- }
-
- public static function silence_errors($num, $str)
- {
-// No-op
- }
-}
\ No newline at end of file