This commit is contained in:
rGaillard
2011-07-06 10:54:11 +00:00
parent 4d2c770c6f
commit 8fc7f11014
5398 changed files with 482149 additions and 0 deletions
File diff suppressed because it is too large Load Diff
+360
View File
@@ -0,0 +1,360 @@
<?php
/*
* 2007-2011 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com>
* @copyright 2007-2011 PrestaShop SA
* @version Release: $Revision: 6844 $
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
//
// IMPORTANT : don't forget to delete the underscore _ in the file name if you want to use it !
//
function developpementErrorHandler($errno, $errstr, $errfile, $errline)
{
if (!(error_reporting() & $errno))
return;
switch($errno)
{
case E_ERROR:
echo '[PHP Error #'.$errno.'] '.$errstr.' ('.$errfile.', line '.$errline.')';
break;
case E_WARNING:
echo '[PHP Warning #'.$errno.'] '.$errstr.' ('.$errfile.', line '.$errline.')';
break;
case E_PARSE:
echo '[PHP Parse #'.$errno.'] '.$errstr.' ('.$errfile.', line '.$errline.')';
break;
case E_NOTICE:
echo '[PHP Notice #'.$errno.'] '.$errstr.' ('.$errfile.', line '.$errline.')';
break;
case E_CORE_ERROR:
echo '[PHP Core #'.$errno.'] '.$errstr.' ('.$errfile.', line '.$errline.')';
break;
case E_CORE_WARNING:
echo '[PHP Core warning #'.$errno.'] '.$errstr.' ('.$errfile.', line '.$errline.')';
break;
case E_COMPILE_ERROR:
echo '[PHP Compile #'.$errno.'] '.$errstr.' ('.$errfile.', line '.$errline.')';
break;
case E_COMPILE_WARNING:
echo '[PHP Compile warning #'.$errno.'] '.$errstr.' ('.$errfile.', line '.$errline.')';
break;
case E_USER_ERROR:
echo '[PHP Error #'.$errno.'] '.$errstr.' ('.$errfile.', line '.$errline.')';
break;
case E_USER_WARNING:
echo '[PHP User warning #'.$errno.'] '.$errstr.' ('.$errfile.', line '.$errline.')';
break;
case E_USER_NOTICE:
echo '[PHP User notice #'.$errno.'] '.$errstr.' ('.$errfile.', line '.$errline.')';
break;
case E_STRICT:
echo '[PHP Strict #'.$errno.'] '.$errstr.' ('.$errfile.', line '.$errline.')';
break;
case E_RECOVERABLE_ERROR:
echo '[PHP Recoverable error #'.$errno.'] '.$errstr.' ('.$errfile.', line '.$errline.')';
break;
default:
echo '[PHP Unknown error #'.$errno.'] '.$errstr.' ('.$errfile.', line '.$errline.')';
}
die;
return true;
}
class FrontController extends FrontControllerCore
{
public $_memory = array();
public $_time = array();
private static $_footer = true;
public static function disableParentCalls()
{
self::$_footer = false;
}
private function displayMemoryColor($n)
{
$n /= 1048576;
if ($n > 3)
return '<span style="color:red">'.round($n, 2).' Mb</span>';
if ($n > 1)
return '<span style="color:orange">'.round($n, 2).' Mb</span>';
return '<span style="color:green">'.round($n, 2).' Mb</span>';
}
private function displaySQLQueries($n)
{
if ($n > 150)
return '<span style="color:red">'.$n.' queries</span>';
if ($n > 100)
return '<span style="color:orange">'.$n.' queries</span>';
return '<span style="color:green">'.$n.' quer'.($n == 1 ? 'y' : 'ies').'</span>';
}
private function displayLoadTimeColor($n, $kikoo = false)
{
if ($n > 1)
return '<span style="color:red">'.round($n, 3).'s</span>'.($kikoo ? '<br />You\'d better run your shop on a toaster' : '');
if ($n > 0.5)
return '<span style="color:orange">'.round($n * 1000).'ms</span>'.($kikoo ? '<br />I hope it is a shared hosting' : '');
return '<span style="color:green">'.round($n * 1000).'ms</span>'.($kikoo ? '<br />Good boy! That\'s what I call a webserver!' : '');
}
private function getTimeColor($n)
{
if ($n > 4)
return 'style="color:red"';
if ($n > 2)
return 'style="color:orange"';
return 'style="color:green"';
}
private function getQueryColor($n)
{
if ($n > 5)
return 'style="color:red"';
if ($n > 2)
return 'style="color:orange"';
return 'style="color:green"';
}
private function getTableColor($n)
{
if ($n > 30)
return 'style="color:red"';
if ($n > 20)
return 'style="color:orange"';
return 'style="color:green"';
}
public function __construct()
{
// error management
set_error_handler('developpementErrorHandler');
ini_set('html_errors', 'on');
ini_set('display_errors', 'on');
error_reporting(E_ALL | E_STRICT);
$this->_memory = array_fill(0, 10, 0);
$this->_time = array_fill(0, 10, 0);
// Usually set in the parent constructor, but here I need it to evaluate init()
$useSSL = $this->ssl;
if (!self::$_footer)
return;
$this->_memory[-3] = memory_get_usage();
$this->_time[-3] = microtime(true);
$this->init();
$this->_memory[-2] = memory_get_usage();
$this->_time[-2] = microtime(true);
parent::__construct();
$this->_memory[-1] = memory_get_usage();
$this->_time[-1] = microtime(true);
}
public function run()
{
$this->_memory[0] = memory_get_usage();
$this->_time[0] = microtime(true);
$this->preProcess();
$this->_memory[1] = memory_get_usage();
$this->_time[1] = microtime(true);
$this->setMedia();
$this->_memory[2] = memory_get_usage();
$this->_time[2] = microtime(true);
$this->displayHeader();
$this->_memory[3] = memory_get_usage();
$this->_time[3] = microtime(true);
$this->process();
$this->_memory[4] = memory_get_usage();
$this->_time[4] = microtime(true);
$this->displayContent();
$this->_memory[5] = memory_get_usage();
$this->_time[5] = microtime(true);
$this->displayFooter();
}
function ini_get_display_errors()
{
$a = 'display_errors';
$b = ini_get($a);
switch (strtolower($b))
{
case 'on':
case 'yes':
case 'true':
return 'assert.active' !== $a;
case 'stdout':
case 'stderr':
return 'display_errors' === $a;
default:
return (bool)(int)$b;
}
}
private function sizeofvar($var)
{
$start_memory = memory_get_usage();
$tmp = unserialize(serialize($var));
$size = memory_get_usage() - $start_memory;
return $size;
}
public function displayFooter()
{
global $start_time;
if (self::$_footer)
parent::displayFooter();
if (!$this->ini_get_display_errors())
return;
$this->_memory[6] = memory_get_usage();
$this->_time[6] = microtime(true);
$hr = '<hr style="color:#F5F5F5;margin:2px" />';
$totalSize = 0;
foreach (get_included_files() as $file)
$totalSize += filesize($file);
$totalQueryTime = 0;
foreach (Db::getInstance()->queriesTime as $time)
$totalQueryTime += $time;
$hooktime = Module::getHookTime();
arsort($hooktime);
$totalHookTime = 0;
foreach ($hooktime as $time)
$totalHookTime += $time;
$globalSize = array();
$totalGlobalSize = 0;
foreach ($GLOBALS as $key => $value)
if ($key != 'GLOBALS')
{
$totalGlobalSize += ($size = $this->sizeofvar($value));
if ($size > 1024)
$globalSize[$key] = round($size / 1024, 1);
}
arsort($globalSize);
echo '<br /><br />
<div class="rte" style="text-align:left;padding:8px;float:left">
<b>Load time</b>: '.$this->displayLoadTimeColor($this->_time[6] - $start_time, true).'';
if (self::$_footer)
echo '
<ul>
<li>Config: '.$this->displayLoadTimeColor($this->_time[-3] - $start_time).'</li>
<li>Init: '.$this->displayLoadTimeColor(($this->_time[-2] - $this->_time[-3])).'</li>
<li>Constructor: '.$this->displayLoadTimeColor(($this->_time[-1] - $this->_time[-2])).'</li>
<li>preProcess: '.$this->displayLoadTimeColor(($this->_time[1] - $this->_time[0])).'</li>
<li>setMedia: '.$this->displayLoadTimeColor(($this->_time[2] - $this->_time[1])).'</li>
<li>displayHeader: '.$this->displayLoadTimeColor(($this->_time[3] - $this->_time[2])).'</li>
<li>process: '.$this->displayLoadTimeColor(($this->_time[4] - $this->_time[3])).'</li>
<li>displayContent: '.$this->displayLoadTimeColor(($this->_time[5] - $this->_time[4])).'</li>
<li>displayFooter: '.$this->displayLoadTimeColor(($this->_time[6] - $this->_time[5])).'</li>
</ul>';
echo '</div>
<div class="rte" style="text-align:left;padding:8px;float:left;margin-left:20px">
<b>Hook processing</b>: '.$this->displayLoadTimeColor($totalHookTime).'
<ul>';
foreach ($hooktime as $hook => $time)
echo '<li>'.$hook.': '.$this->displayLoadTimeColor($time).'</li>';
echo '</ul>
</div>
<div class="rte" style="text-align:left;padding:8px;float:left;margin-left:20px">
<b>Memory peak usage</b>: '.$this->displayMemoryColor(memory_get_peak_usage()).'';
if (self::$_footer)
echo '
<ul>
<li>Config: '.$this->displayMemoryColor($this->_memory[-3]).'</li>
<li>Init: '.$this->displayMemoryColor(($this->_memory[-2] - $this->_memory[-3])).'</li>
<li>Constructor: '.$this->displayMemoryColor(($this->_memory[-1] - $this->_memory[-2])).'</li>
<li>preProcess: '.$this->displayMemoryColor(($this->_memory[1] - $this->_memory[0])).'</li>
<li>setMedia: '.$this->displayMemoryColor(($this->_memory[2] - $this->_memory[1])).'</li>
<li>displayHeader: '.$this->displayMemoryColor(($this->_memory[3] - $this->_memory[2])).'</li>
<li>process: '.$this->displayMemoryColor(($this->_memory[4] - $this->_memory[3])).'</li>
<li>displayContent: '.$this->displayMemoryColor(($this->_memory[5] - $this->_memory[4])).'</li><li>displayFooter: '.$this->displayMemoryColor(($this->_memory[6] - $this->_memory[5])).'</li>
</ul>';
echo '</div>';
$countByTypes = '';
foreach (Db::getInstance()->countTypes as $type => $count)
if ($count)
$countByTypes .= '<li>'.$count.' x '.$type.'</li>';
$countByTypes = rtrim($countByTypes, ' |');
echo '
<div class="rte" style="text-align:left;padding:8px;float:left;margin-left:20px">
<b>SQL Queries</b>: '.$this->displaySQLQueries(Db::getInstance()->count).'
<ul>'.$countByTypes.'</ul>
<br /><b>Time spent querying</b>: '.$this->displayLoadTimeColor($totalQueryTime).'
</div>
<div class="rte" style="text-align:left;padding:8px;float:left;margin-left:20px">
<b>Included files</b>: '.sizeof(get_included_files()).'<br />
<b>Size of included files</b>: '.$this->displayMemoryColor($totalSize).'
</div>
<div class="rte" style="text-align:left;padding:8px;float:left;margin-left:20px">
<b>Globals (&gt; 1 Ko only): '.round($totalGlobalSize / 1024).' Ko</b>
<ul>';
foreach ($globalSize as $global => $size)
echo '<li>'.$global.' &asymp; '.$size.' Ko</li>';
echo '</ul>
</div>';
echo '
<div class="rte" style="text-align:left;padding:8px;clear:both;margin-top:20px">
<ul>
<li><a href="#stopwatch">Go to Stopwatch</a></li>
<li><a href="#doubles">Go to Doubles</a></li>
<li><a href="#tables">Go to Tables</a></li>
</ul>
</div>
<div class="rte" style="text-align:left;padding:8px">
<h3><a name="stopwatch">Stopwatch (with SQL_NO_CACHE)</a></h3>';
$queries = Db::getInstance()->queriesTime;
arsort($queries);
foreach ($queries as $q => $time)
echo $hr.'<b '.$this->getTimeColor($time * 1000).'>'.round($time * 1000, 3).' ms</b> '.$q;
echo '</div>
<div class="rte" style="text-align:left;padding:8px">
<h3><a name="doubles">Doubles (IDs replaced by "XX")</a></h3>';
$queries = Db::getInstance()->queries;
arsort($queries);
foreach ($queries as $q => $nb)
echo $hr.'<b '.$this->getQueryColor($nb).'>'.$nb.'</b> '.$q;
echo '</div>
<div class="rte" style="text-align:left;padding:8px">
<h3><a name="tables">Tables stress</a></h3>';
$tables = Db::getInstance()->tables;
arsort($tables);
foreach ($tables as $table => $nb)
echo $hr.'<b '.$this->getTableColor($nb).'>'.$nb.'</b> '.$table;
echo '</div>';
}
}
+48
View File
@@ -0,0 +1,48 @@
<?php
/*
* 2007-2011 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com>
* @copyright 2007-2011 PrestaShop SA
* @version Release: $Revision: 7310 $
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
//
// IMPORTANT : don't forget to delete the underscore _ in the file name if you want to use it !
//
class Module extends ModuleCore
{
private static $hookTime = array();
public static function getHookTime()
{
return self::$hookTime;
}
public static function hookExec($hook_name, $hookArgs = array(), $id_module = NULL)
{
$t0 = microtime(true);
$result = parent::hookExec($hook_name, $hookArgs, $id_module);
self::$hookTime[$hook_name] = microtime(true) - $t0;
return $result;
}
}
+213
View File
@@ -0,0 +1,213 @@
<?php
/*
* 2007-2011 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com>
* @copyright 2007-2011 PrestaShop SA
* @version Release: $Revision: 6844 $
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
//
// IMPORTANT : don't forget to delete the underscore _ in the file name if you want to use it !
//
class MySQL extends MySQLCore
{
public $count = 0;
public $queries = array();
public $queriesTime = array();
public $tables = array();
public $countTypes = array('getRow' => 0, 'getValue' => 0, 'Execute' => 0, 'ExecuteS' => 0, 'delete' => 0, 'q' => 0);
private function disableCache($query)
{
return preg_replace('/^select /', 'SELECT SQL_NO_CACHE', trim($query));
}
public function getRow($query, $use_cache = 1)
{
$this->count++;
$this->countTypes['getRow']++;
$query2 = preg_replace('/[0-9]+/', '<span style="color:blue">XX</span>', $query);
if (!isset($this->queries[$query2]))
$this->queries[$query2] = 0;
$this->queries[$query2]++;
preg_match_all('/(from|join)\s+`?'.preg_replace('/[0-9]+/', 'XX', _DB_PREFIX_).'([a-z0-9_-]+)/ui', $query2, $matches);
foreach ($matches[2] as $table)
{
if (!isset($this->tables[$table]))
$this->tables[$table] = 0;
$this->tables[$table]++;
}
$query = $this->disableCache($query);
$t0 = microtime(true);
$return = parent::getRow($query, $use_cache);
if (!isset($this->queriesTime[$query]))
$this->queriesTime[$query] = microtime(true)-$t0;
return $return;
}
public function getValue($query, $use_cache = 1)
{
$this->count++;
$this->countTypes['getValue']++;
$query2 = preg_replace('/[0-9]+/', '<span style="color:blue">XX</span>', $query);
if (!isset($this->queries[$query2]))
$this->queries[$query2] = 0;
$this->queries[$query2]++;
preg_match_all('/(from|join)\s+`?'.preg_replace('/[0-9]+/', 'XX', _DB_PREFIX_).'([a-z0-9_-]+)/ui', $query2, $matches);
foreach ($matches[2] as $table)
{
if (!isset($this->tables[$table]))
$this->tables[$table] = 0;
$this->tables[$table]++;
}
$query = $this->disableCache($query);
$t0 = microtime(true);
$return = parent::getValue($query, $use_cache);
if (!isset($this->queriesTime[$query]))
$this->queriesTime[$query] = microtime(true)-$t0;
return $return;
}
public function Execute($query, $use_cache = 1)
{
$this->count++;
$this->countTypes['Execute']++;
$query2 = preg_replace('/[0-9]+/', '<span style="color:blue">XX</span>', $query);
if (!isset($this->queries[$query2]))
$this->queries[$query2] = 0;
$this->queries[$query2]++;
preg_match_all('/(from|join)\s+`?'.preg_replace('/[0-9]+/', 'XX', _DB_PREFIX_).'([a-z0-9_-]+)/ui', $query2, $matches);
foreach ($matches[2] as $table)
{
if (!isset($this->tables[$table]))
$this->tables[$table] = 0;
$this->tables[$table]++;
}
$query = $this->disableCache($query);
$t0 = microtime(true);
$return = parent::Execute($query, $use_cache);
if (!isset($this->queriesTime[$query]))
$this->queriesTime[$query] = microtime(true)-$t0;
return $return;
}
public function ExecuteS($query, $array = true, $use_cache = 1)
{
$this->count++;
$this->countTypes['ExecuteS']++;
$query2 = preg_replace('/[0-9]+/', '<span style="color:blue">XX</span>', $query);
if (!isset($this->queries[$query2]))
$this->queries[$query2] = 0;
$this->queries[$query2]++;
preg_match_all('/(from|join)\s+`?'.preg_replace('/[0-9]+/', 'XX', _DB_PREFIX_).'([a-z0-9_-]+)/ui', $query2, $matches);
foreach ($matches[2] as $table)
{
if (!isset($this->tables[$table]))
$this->tables[$table] = 0;
$this->tables[$table]++;
}
$query = $this->disableCache($query);
$t0 = microtime(true);
$return = parent::ExecuteS($query, $array, $use_cache);
if (!isset($this->queriesTime[$query]))
$this->queriesTime[$query] = microtime(true)-$t0;
return $return;
}
public function delete($table, $where = false, $limit = false, $use_cache = 1)
{
$this->_result = false;
if ($this->_link)
{
$query = 'DELETE FROM `'.pSQL($table).'`'.($where ? ' WHERE '.$where : '').($limit ? ' LIMIT '.(int)($limit) : '');
$this->count++;
$this->countTypes['delete']++;
$query2 = preg_replace('/[0-9]+/', '<span style="color:blue">XX</span>', $query);
if (!isset($this->queries[$query2]))
$this->queries[$query2] = 0;
$this->queries[$query2]++;
preg_match_all('/(from|join)\s+`?'.preg_replace('/[0-9]+/', 'XX', _DB_PREFIX_).'([a-z0-9_-]+)/ui', $query2, $matches);
foreach ($matches[2] as $table)
{
if (!isset($this->tables[$table]))
$this->tables[$table] = 0;
$this->tables[$table]++;
}
$query = $this->disableCache($query);
$t0 = microtime(true);
$return = parent::delete($table, $where, $limit, $use_cache);
if (!isset($this->queriesTime[$query]))
$this->queriesTime[$query] = microtime(true)-$t0;
return $return;
}
return false;
}
protected function q($query, $use_cache = 1)
{
$this->count++;
$this->countTypes['q']++;
$query2 = preg_replace('/[0-9]+/', '<span style="color:blue">XX</span>', $query);
if (!isset($this->queries[$query2]))
$this->queries[$query2] = 0;
$this->queries[$query2]++;
preg_match_all('/(from|join)\s+`?'.preg_replace('/[0-9]+/', 'XX', _DB_PREFIX_).'([a-z0-9_-]+)/ui', $query2, $matches);
foreach ($matches[2] as $table)
{
if (!isset($this->tables[$table]))
$this->tables[$table] = 0;
$this->tables[$table]++;
}
$query = $this->disableCache($query);
$t0 = microtime(true);
$return = parent::q($query, $use_cache);
if (!isset($this->queriesTime[$query]))
$this->queriesTime[$query] = microtime(true)-$t0;
return $return;
}
}
+316
View File
@@ -0,0 +1,316 @@
<?php
/*
* 2007-2011 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com>
* @copyright 2007-2011 PrestaShop SA
* @version Release: $Revision: 6844 $
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
//
// IMPORTANT : don't forget to delete the underscore _ in the file name if you want to use it !
//
// if FB class is already loaded, just enable it. else, enable it only if fb.php exists and is loaded
if (!defined('PS_USE_FIREPHP') AND class_exists('FB'))
define('PS_USE_FIREPHP',true);
elseif (file_exists(dirname(__FILE__).DIRECTORY_SEPARATOR.'fb.php'))
{
if (!defined('PS_USE_FIREPHP'))
{
require_once(dirname(__FILE__).DIRECTORY_SEPARATOR.'fb.php');
define('PS_USE_FIREPHP',true);
}
else
define('PS_USE_FIREPHP',false);
}
else
define('PS_USE_FIREPHP',class_exists('FB'));
class Tools extends ToolsCore
{
/**
* Redirect user to another page after 5 sec
*
* @param string $url Desired URL
* @param string $baseUri Base URI (optional)
*/
public static function redirect($url, $baseUri = __PS_BASE_URI__)
{
if (strpos($url, 'http://') === FALSE && strpos($url, 'https://') === FALSE)
{
global $link;
if (strpos($url, $baseUri) !== FALSE && strpos($url, $baseUri) == 0)
$url = substr($url, strlen($baseUri));
$explode = explode('?', $url);
$url = $link->getPageLink($explode[0], true);
if (isset($explode[1]))
$url .= '?'.$explode[1];
$baseUri = '';
}
if (isset($_SERVER['HTTP_REFERER']) AND ($url == $_SERVER['HTTP_REFERER']))
header('Refresh: 5; url='.$_SERVER['HTTP_REFERER']);
else
header('Refresh: 5; url='.$baseUri.$url);
exit;
}
/**
* Redirect url wich allready PS_BASE_URI after 5 sec
*
* @param string $url Desired URL
*/
public static function redirectLink($url)
{
if (!preg_match('@^https?://@i', $url))
{
global $link;
if (strpos($url, __PS_BASE_URI__) !== FALSE && strpos($url, __PS_BASE_URI__) == 0)
$url = substr($url, strlen(__PS_BASE_URI__));
$explode = explode('?', $url);
$url = $link->getPageLink($explode[0]);
if (isset($explode[1]))
$url .= '?'.$explode[1];
}
header('Refresh: 5; url='.$url);
echo '<h1>Redirection automatique dans 5 secondes</h1><a href='.$url.'>'.$url.'</a>';
exit;
}
/**
* Redirect user to another admin page after 5 sec
*
* @param string $url Desired URL
*/
public static function redirectAdmin($url)
{
header('Refresh: 5; url='.$url);
echo '<h1>Redirection automatique dans 5 secondes</h1><a href='.$url.'>'.$url.'</a>';
exit;
}
/**
* Display an error with detailed object
* (display in firefox console if Firephp is enabled)
*
* @param mixed $object
* @param boolean $kill
* @return $object if $kill = false;
*/
public static function dieObject($object, $kill = true)
{
if(PS_USE_FIREPHP)
FB::error($object);
else
return parent::dieObject($object,$kill);
if ($kill)
die('END');
return $object;
}
/**
* ALIAS OF dieObject() - Display an error with detailed object
* (display in firefox console if Firephp is enabled)
*
* @param object $object Object to display
*/
public static function d($obj, $kill = true)
{
if(PS_USE_FIREPHP)
FB::error($obj);
else
parent::d($obj,$kill);
if ($kill)
die('END');
return $object;
}
/**
* ALIAS OF dieObject() - Display an error with detailed object but don't stop the execution
* (display in firefox console if Firephp is enabled)
*
* @param object $object Object to display
*/
public static function p($object)
{
if(PS_USE_FIREPHP)
FB::info($object);
else
return parent::p($object);
return $object;
}
/**
* Display a warning message indicating that the method is deprecated
* (display in firefox console if Firephp is enabled)
*/
public static function displayAsDeprecated()
{
if (_PS_DISPLAY_COMPATIBILITY_WARNING_)
{
$backtrace = debug_backtrace();
$callee = next($backtrace);
if(PS_USE_FIREPHP)
FB::warn('Function <strong>'.$callee['function'].'()</strong> is deprecated in <strong>'.$callee['file'].'</strong> on line <strong>'.$callee['line'].'</strong><br />', 'Deprecated method');
else
trigger_error('Function <strong>'.$callee['function'].'()</strong> is deprecated in <strong>'.$callee['file'].'</strong> on line <strong>'.$callee['line'].'</strong><br />', E_USER_WARNING);
$message = Tools::displayError('The function').' '.$callee['function'].' ('.Tools::displayError('Line').' '.$callee['line'].') '.Tools::displayError('is deprecated and will be removed in the next major version.');
Logger::addLog($message, 3, $callee['class']);
}
}
/**
* Display a warning message indicating that the parameter is deprecated
* (display in firefox console if Firephp is enabled)
*/
public static function displayParameterAsDeprecated($parameter)
{
if (_PS_DISPLAY_COMPATIBILITY_WARNING_)
{
$backtrace = debug_backtrace();
$callee = next($backtrace);
trigger_error('Parameter <strong>'.$parameter.'</strong> in function <strong>'.$callee['function'].'()</strong> is deprecated in <strong>'.$callee['file'].'</strong> on line <strong>'.$callee['Line'].'</strong><br />', E_USER_WARNING);
if(PS_USE_FIREPHP)
FB::trace('Parameter <strong>'.$parameter.'</strong> in function <strong>'.$callee['function'].'()</strong> is deprecated in <strong>'.$callee['file'].'</strong> on line <strong>'.$callee['Line'].'</strong><br />', 'deprecated parameter');
else
$message = Tools::displayError('The parameter').' '.$parameter.' '.Tools::displayError(' in function ').' '.$callee['function'].' ('.Tools::displayError('Line').' '.$callee['Line'].') '.Tools::displayError('is deprecated and will be removed in the next major version.');
Logger::addLog($message, 3, $callee['class']);
}
}
/**
* use of FirePHP::error() if allowed
*
* @param mixed $obj
* @param string $label
* @return void
*/
public static function error($obj, $label = '')
{
if(PS_USE_FIREPHP)
FB::error($object, $label);
}
/**
* use of FirePHP::warn() if allowed
*
* @param mixed $obj
* @param string $label
* @return void
*/
public static function warn($obj, $label = '')
{
if(PS_USE_FIREPHP)
FB::warn($obj, $label);
}
/**
* use of FirePHP::info() if allowed
*
* @param mixed $obj
* @param string $label
* @return void
*/
public static function info($obj, $label = '')
{
if(PS_USE_FIREPHP)
FB::info($obj, $label);
}
/**
* use of FirePHP::log() if allowed
*
* @param mixed $obj
* @param string $label
* @return void
*/
public static function log($obj, $label = '')
{
if(PS_USE_FIREPHP)
FB::log($obj,$label);
}
/**
* display debug_backtrace()
* (display in firefox console if Firephp is enabled)
*
* @param mixed $obj
* @return void
*/
public static function trace($obj = NULL, $label = '')
{
if(PS_USE_FIREPHP)
FB::trace($obj, $label);
else{
Tools::p($obj);
echo'<pre><h1>'.$label.'</h1><br/>';
debug_print_backtrace();
echo '</pre>';
}
}
}
// Add some convenient shortcut
if (!function_exists('error'))
{
function error($obj, $label = ''){
return Tools::error($obj, $label);
}
}
if (!function_exists('warn'))
{
function warn($obj, $label = ''){
return Tools::warn($obj,$label);
}
}
if (!function_exists('info'))
{
function info($obj, $label = ''){
return Tools::info($obj, $label);
}
}
if (!function_exists('log'))
{
function log($obj, $label = ''){
return Tools::log($obj, $label);
}
}
if (!function_exists('trace'))
{
function trace($obj, $label = ''){
return Tools::trace($obj, $label);
}
}
+276
View File
@@ -0,0 +1,276 @@
<?php
/* ***** BEGIN LICENSE BLOCK *****
*
* This file is part of FirePHP (http://www.firephp.org/).
*
* Software License Agreement (New BSD License)
*
* Copyright (c) 2006-2010, Christoph Dorn
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* * Neither the name of Christoph Dorn nor the names of its
* contributors may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* ***** END LICENSE BLOCK *****
*
* @copyright Copyright (C) 2007-2009 Christoph Dorn
* @author Christoph Dorn <christoph@christophdorn.com>
* @license http://www.opensource.org/licenses/bsd-license.php
* @package FirePHPCore
*/
if(!class_exists('FirePHP')) {
require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'FirePHP.class.php';
}
/**
* Sends the given data to the FirePHP Firefox Extension.
* The data can be displayed in the Firebug Console or in the
* "Server" request tab.
*
* @see http://www.firephp.org/Wiki/Reference/Fb
* @param mixed $Object
* @return true
* @throws Exception
*/
function fb()
{
$instance = FirePHP::getInstance(true);
$args = func_get_args();
return call_user_func_array(array($instance,'fb'),$args);
}
class FB
{
/**
* Enable and disable logging to Firebug
*
* @see FirePHP->setEnabled()
* @param boolean $Enabled TRUE to enable, FALSE to disable
* @return void
*/
public static function setEnabled($Enabled)
{
$instance = FirePHP::getInstance(true);
$instance->setEnabled($Enabled);
}
/**
* Check if logging is enabled
*
* @see FirePHP->getEnabled()
* @return boolean TRUE if enabled
*/
public static function getEnabled()
{
$instance = FirePHP::getInstance(true);
return $instance->getEnabled();
}
/**
* Specify a filter to be used when encoding an object
*
* Filters are used to exclude object members.
*
* @see FirePHP->setObjectFilter()
* @param string $Class The class name of the object
* @param array $Filter An array or members to exclude
* @return void
*/
public static function setObjectFilter($Class, $Filter)
{
$instance = FirePHP::getInstance(true);
$instance->setObjectFilter($Class, $Filter);
}
/**
* Set some options for the library
*
* @see FirePHP->setOptions()
* @param array $Options The options to be set
* @return void
*/
public static function setOptions($Options)
{
$instance = FirePHP::getInstance(true);
$instance->setOptions($Options);
}
/**
* Get options for the library
*
* @see FirePHP->getOptions()
* @return array The options
*/
public static function getOptions()
{
$instance = FirePHP::getInstance(true);
return $instance->getOptions();
}
/**
* Log object to firebug
*
* @see http://www.firephp.org/Wiki/Reference/Fb
* @param mixed $Object
* @return true
* @throws Exception
*/
public static function send()
{
$instance = FirePHP::getInstance(true);
$args = func_get_args();
return call_user_func_array(array($instance,'fb'),$args);
}
/**
* Start a group for following messages
*
* Options:
* Collapsed: [true|false]
* Color: [#RRGGBB|ColorName]
*
* @param string $Name
* @param array $Options OPTIONAL Instructions on how to log the group
* @return true
*/
public static function group($Name, $Options=null)
{
$instance = FirePHP::getInstance(true);
return $instance->group($Name, $Options);
}
/**
* Ends a group you have started before
*
* @return true
* @throws Exception
*/
public static function groupEnd()
{
return self::send(null, null, FirePHP::GROUP_END);
}
/**
* Log object with label to firebug console
*
* @see FirePHP::LOG
* @param mixes $Object
* @param string $Label
* @return true
* @throws Exception
*/
public static function log($Object, $Label=null)
{
return self::send($Object, $Label, FirePHP::LOG);
}
/**
* Log object with label to firebug console
*
* @see FirePHP::INFO
* @param mixes $Object
* @param string $Label
* @return true
* @throws Exception
*/
public static function info($Object, $Label=null)
{
return self::send($Object, $Label, FirePHP::INFO);
}
/**
* Log object with label to firebug console
*
* @see FirePHP::WARN
* @param mixes $Object
* @param string $Label
* @return true
* @throws Exception
*/
public static function warn($Object, $Label=null)
{
return self::send($Object, $Label, FirePHP::WARN);
}
/**
* Log object with label to firebug console
*
* @see FirePHP::ERROR
* @param mixes $Object
* @param string $Label
* @return true
* @throws Exception
*/
public static function error($Object, $Label=null)
{
return self::send($Object, $Label, FirePHP::ERROR);
}
/**
* Dumps key and variable to firebug server panel
*
* @see FirePHP::DUMP
* @param string $Key
* @param mixed $Variable
* @return true
* @throws Exception
*/
public static function dump($Key, $Variable)
{
return self::send($Variable, $Key, FirePHP::DUMP);
}
/**
* Log a trace in the firebug console
*
* @see FirePHP::TRACE
* @param string $Label
* @return true
* @throws Exception
*/
public static function trace($Label)
{
return self::send($Label, FirePHP::TRACE);
}
/**
* Log a table in the firebug console
*
* @see FirePHP::TABLE
* @param string $Label
* @param string $Table
* @return true
* @throws Exception
*/
public static function table($Label, $Table)
{
return self::send($Table, $Label, FirePHP::TABLE);
}
}