+++ /dev/null
-<?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
+++ /dev/null
-<?php
-//--------------------------------------------------------------------------------------------------
-// Session-Based Flash Messages v1.0
-// Copyright 2012 Mike Everhart (http://mikeeverhart.net)
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-//------------------------------------------------------------------------------
-// Description:
-//------------------------------------------------------------------------------
-//
-// Stores messages in Session data to be easily retrieved later on.
-// This class includes four different types of messages:
-// - Success
-// - Error
-// - Warning
-// - Information
-//
-// See README for basic usage instructions, or see samples/index.php for more advanced samples
-//
-//--------------------------------------------------------------------------------------------------
-// Changelog
-//--------------------------------------------------------------------------------------------------
-//
-// 2011-05-15 - v1.0 - Initial Version
-//
-//--------------------------------------------------------------------------------------------------
-
-class Messages {
-
- //-----------------------------------------------------------------------------------------------
- // Class Variables
- //-----------------------------------------------------------------------------------------------
- var $msgId;
- var $msgTypes = array( 'help', 'info', 'warning', 'success', 'error' );
- var $msgClass = 'messages';
- var $msgWrapper = "<div class='%s %s'><a href='#' class='closeMessage'></a>\n%s</div>\n";
- var $msgBefore = '<p>';
- var $msgAfter = "</p>\n";
-
-
- /**
- * Constructor
- * @author Mike Everhart
- */
- public function __construct() {
-
- // Generate a unique ID for this user and session
- $this->msgId = md5(uniqid());
-
- // Create the session array if it doesnt already exist
- if( !array_key_exists('flash_messages', $_SESSION) ) $_SESSION['flash_messages'] = array();
-
- }
-
- /**
- * Add a message to the queue
- *
- * @author Mike Everhart
- *
- * @param string $type The type of message to add
- * @param string $message The message
- * @param string $redirect_to (optional) If set, the user will be redirected to this URL
- * @return bool
- *
- */
- public function add($type, $message, $redirect_to=null) {
-
- if( !isset($_SESSION['flash_messages']) ) return false;
-
- if( !isset($type) || !isset($message[0]) ) return false;
-
- // Replace any shorthand codes with their full version
- if( strlen(trim($type)) == 1 ) {
- $type = str_replace( array('h', 'i', 'w', 'e', 's'), array('help', 'info', 'warning', 'error', 'success'), $type );
-
- // Backwards compatibility...
- } elseif( $type == 'information' ) {
- $type = 'info';
- }
-
- // Make sure it's a valid message type
- if( !in_array($type, $this->msgTypes) ) die('"' . strip_tags($type) . '" is not a valid message type!' );
-
- // If the session array doesn't exist, create it
- if( !array_key_exists( $type, $_SESSION['flash_messages'] ) ) $_SESSION['flash_messages'][$type] = array();
-
- $_SESSION['flash_messages'][$type][] = $message;
-
- if( !is_null($redirect_to) ) {
- header("Location: $redirect_to");
- exit();
- }
-
- return true;
-
- }
-
- //-----------------------------------------------------------------------------------------------
- // display()
- // print queued messages to the screen
- //-----------------------------------------------------------------------------------------------
- /**
- * Display the queued messages
- *
- * @author Mike Everhart
- *
- * @param string $type Which messages to display
- * @param bool $print True = print the messages on the screen
- * @return mixed
- *
- */
- public function display($type='all', $print=true) {
- $messages = '';
- $data = '';
-
- if( !isset($_SESSION['flash_messages']) ) return false;
-
- if( $type == 'g' || $type == 'growl' ) {
- $this->displayGrowlMessages();
- return true;
- }
-
- // Print a certain type of message?
- if( in_array($type, $this->msgTypes) ) {
- foreach( $_SESSION['flash_messages'][$type] as $msg ) {
- $messages .= $this->msgBefore . $msg . $this->msgAfter;
- }
-
- $data .= sprintf($this->msgWrapper, $this->msgClass, $type, $messages);
-
- // Clear the viewed messages
- $this->clear($type);
-
- // Print ALL queued messages
- } elseif( $type == 'all' ) {
- foreach( $_SESSION['flash_messages'] as $type => $msgArray ) {
- $messages = '';
- foreach( $msgArray as $msg ) {
- $messages .= $this->msgBefore . $msg . $this->msgAfter;
- }
- $data .= sprintf($this->msgWrapper, $this->msgClass, $type, $messages);
- }
-
- // Clear ALL of the messages
- $this->clear();
-
- // Invalid Message Type?
- } else {
- return false;
- }
-
- // Print everything to the screen or return the data
- if( $print ) {
- echo $data;
- } else {
- return $data;
- }
- }
-
-
- /**
- * Check to see if there are any queued error messages
- *
- * @author Mike Everhart
- *
- * @return bool true = There ARE error messages
- * false = There are NOT any error messages
- *
- */
- public function hasErrors() {
- return empty($_SESSION['flash_messages']['error']) ? false : true;
- }
-
- /**
- * Check to see if there are any ($type) messages queued
- *
- * @author Mike Everhart
- *
- * @param string $type The type of messages to check for
- * @return bool
- *
- */
- public function hasMessages($type=null) {
- if( !is_null($type) ) {
- if( !empty($_SESSION['flash_messages'][$type]) ) return $_SESSION['flash_messages'][$type];
- } else {
- foreach( $this->msgTypes as $type ) {
- if( !empty($_SESSION['flash_messages']) ) return true;
- }
- }
- return false;
- }
-
- /**
- * Clear messages from the session data
- *
- * @author Mike Everhart
- *
- * @param string $type The type of messages to clear
- * @return bool
- *
- */
- public function clear($type='all') {
- if( $type == 'all' ) {
- unset($_SESSION['flash_messages']);
- } else {
- unset($_SESSION['flash_messages'][$type]);
- }
- return true;
- }
-
- public function __toString() { return $this->hasMessages(); }
-
- public function __destruct() {
- //$this->clear();
- }
-
-
-} // end class
-?>
\ No newline at end of file
--- /dev/null
+<?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();
+ }
+}
\ No newline at end of file