mirror of
https://github.com/wallabag/wallabag.git
synced 2025-02-08 07:38:48 +01:00
101 lines
2.9 KiB
PHP
101 lines
2.9 KiB
PHP
|
<?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)
|
||
|
{
|
||
|
// 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 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 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 redirect($rurl = '')
|
||
|
{
|
||
|
if ($rurl === '') {
|
||
|
$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 = pocheTool::getUrl();
|
||
|
}
|
||
|
|
||
|
if (substr($rurl, 0, 1) !== '?') {
|
||
|
$ref = pocheTool::getUrl();
|
||
|
if (substr($rurl, 0, strlen($ref)) !== $ref) {
|
||
|
$rurl = $ref;
|
||
|
}
|
||
|
}
|
||
|
header('Location: '.$rurl);
|
||
|
exit();
|
||
|
}
|
||
|
}
|