+<?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 pocheTools
+{
+ 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)
+ {
+ $pattern = '|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i';
+
+ return preg_match($pattern, $url);
+ }
+
+ 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 redirect($url = '')
+ {
+ if ($url === '') {
+ $url = (empty($_SERVER['HTTP_REFERER'])?'?':$_SERVER['HTTP_REFERER']);
+ if (isset($_POST['returnurl'])) {
+ $url = $_POST['returnurl'];
+ }
+ }
+
+ # prevent loop
+ if (empty($url) || parse_url($url, PHP_URL_QUERY) === $_SERVER['QUERY_STRING']) {
+ $url = pocheTool::getUrl();
+ }
+
+ if (substr($url, 0, 1) !== '?') {
+ $ref = pocheTool::getUrl();
+ if (substr($url, 0, strlen($ref)) !== $ref) {
+ $url = $ref;
+ }
+ }
+ header('Location: '.$url);
+ exit();
+ }
+
+ public static function cleanURL($url)
+ {
+
+ $url = html_entity_decode(trim($url));
+
+ $stuff = strpos($url,'&utm_source=');
+ if ($stuff !== FALSE)
+ $url = substr($url, 0, $stuff);
+ $stuff = strpos($url,'?utm_source=');
+ if ($stuff !== FALSE)
+ $url = substr($url, 0, $stuff);
+ $stuff = strpos($url,'#xtor=RSS-');
+ if ($stuff !== FALSE)
+ $url = substr($url, 0, $stuff);
+
+ return $url;
+ }
+
+ 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 logm($message)
+ {
+ if (DEBUG_POCHE) {
+ $t = strval(date('Y/m/d_H:i:s')) . ' - ' . $_SERVER["REMOTE_ADDR"] . ' - ' . strval($message) . "\n";
+ file_put_contents('./log.txt', $t, FILE_APPEND);
+ }
+ }
+}
\ No newline at end of file