mirror of
				https://github.com/avecms/AVE.cms.git
				synced 2025-10-30 21:26:40 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			1237 lines
		
	
	
		
			29 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			1237 lines
		
	
	
		
			29 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | ||
| 
 | ||
| 	// Проверка
 | ||
| 	if (! defined('BASE_DIR'))
 | ||
| 		exit('Access denied');
 | ||
| 
 | ||
| 	/**
 | ||
| 	 * This source file is part of the AVE.cms. More information,
 | ||
| 	 * documentation and tutorials can be found at http://www.ave-cms.ru
 | ||
| 	 *
 | ||
| 	 * @package      AVE.cms
 | ||
| 	 * @file         system/helpers/debug.php
 | ||
| 	 * @author       @
 | ||
| 	 * @copyright    2007-2015 (c) AVE.cms
 | ||
| 	 * @link         http://www.ave-cms.ru
 | ||
| 	 * @version      4.0
 | ||
| 	 * @since        $date$
 | ||
| 	 * @license      license GPL v.2 http://www.ave-cms.ru/license.txt
 | ||
| 	*/
 | ||
| 
 | ||
| 	class Debug {
 | ||
| 
 | ||
| 		protected static $time = [];
 | ||
| 
 | ||
| 		protected static $memory = [];
 | ||
| 
 | ||
| 		protected static $_debug = [];
 | ||
| 
 | ||
| 		public static $_document_content = '';
 | ||
| 
 | ||
| 
 | ||
| 		public function __construct()
 | ||
| 		{
 | ||
| 			//
 | ||
| 		}
 | ||
| 
 | ||
| 
 | ||
| 		/**
 | ||
| 		 * Функция для вывода переменной (для отладки)
 | ||
| 		 *
 | ||
| 		 * @param mixed $var любая переменная
 | ||
| 		 * @param bool  $exit
 | ||
| 		 * @param null  $bg
 | ||
| 		 * @param bool  $echo
 | ||
| 		 *
 | ||
| 		 * @return false|null|string|string[]
 | ||
| 		 */
 | ||
| 		public static function _echo($var, $exit = false, $_bg = null, $echo = true)
 | ||
| 		{
 | ||
| 			$code = '';
 | ||
| 
 | ||
| 			$backtrace = debug_backtrace();
 | ||
| 
 | ||
| 			$backtrace = $backtrace[0];
 | ||
| 
 | ||
| 			if (preg_match('/([^\(]*)\((.*)\)/i', $backtrace['file']))
 | ||
| 			{
 | ||
| 				preg_match('/([^\(]*)\((.*)\)/i', $backtrace['file'], $match);
 | ||
| 				$file = $match[1];
 | ||
| 			}
 | ||
| 
 | ||
| 			$fh = fopen((isset($file)
 | ||
| 				? $file
 | ||
| 				: $backtrace['file']), 'r');
 | ||
| 
 | ||
| 			$line = 0;
 | ||
| 
 | ||
| 			while (++$line <= $backtrace['line'])
 | ||
| 				$code = fgets($fh);
 | ||
| 
 | ||
| 			fclose($fh);
 | ||
| 
 | ||
| 			preg_match('/' . __FUNCTION__ . '\s*\((.*)\)\s*;/u', $code, $name);
 | ||
| 
 | ||
| 			unset ($code, $backtrace);
 | ||
| 
 | ||
| 			ob_start();
 | ||
| 
 | ||
| 			var_dump($var);
 | ||
| 
 | ||
| 			$var_dump = ob_get_contents();
 | ||
| 
 | ||
| 			$var_dump = preg_replace('/=>(\s+|\s$)/', ' => ', $var_dump);
 | ||
| 
 | ||
| 			$var_dump = htmlspecialchars($var_dump);
 | ||
| 
 | ||
| 			$var_dump = preg_replace('/(=>)/', '<span style="color: #ff8c00;">$1</span>', $var_dump);
 | ||
| 
 | ||
| 			ob_end_clean();
 | ||
| 
 | ||
| 			if (! empty($name))
 | ||
| 			{
 | ||
| 				$fn_name = explode(',', $name[1]);
 | ||
| 				$fn_name = array_shift($fn_name);
 | ||
| 			}
 | ||
| 			else
 | ||
| 				$fn_name = 'EVAL';
 | ||
| 
 | ||
| 			if ($_bg)
 | ||
| 				$bg = 'style="background: #' . $_bg . ';"';
 | ||
| 			else
 | ||
| 				$bg = '';
 | ||
| 
 | ||
| 			$var_dump = '
 | ||
| 				<style>
 | ||
| 					.debug_bg {
 | ||
| 						margin: 20px;
 | ||
| 						border: 1px solid #d9d9d9;
 | ||
| 						background-color: #f1efef;
 | ||
| 						border-radius: 5px;
 | ||
| 						box-shadow: 0 0 3px rgba(0, 0, 0, 0.1);
 | ||
| 						font-family: "Consolas", Verdana, Arial;
 | ||
| 						font-size: 11px;
 | ||
| 					}
 | ||
| 					.debug_top {
 | ||
| 						color: #ffffff;
 | ||
| 						font-size: 15px;
 | ||
| 						font-weight: bold;
 | ||
| 						padding-left: 20px;
 | ||
| 						padding-top: 10px;
 | ||
| 						padding-bottom: 10px;
 | ||
| 						text-shadow: 0 1px 1px rgba(0, 0, 0, 0.75);
 | ||
| 						background-color: #43648c;
 | ||
| 						background-repeat: repeat-x;
 | ||
| 						border-bottom: 1px solid #ffffff;
 | ||
| 					}
 | ||
| 					.debug_box {
 | ||
| 						margin: 10px;
 | ||
| 						padding: 4px;
 | ||
| 						background-color: #efeded;
 | ||
| 						border: 1px solid #dedcdc;
 | ||
| 					}
 | ||
| 				</style>
 | ||
| 				<div class="debug_bg">
 | ||
| 					<div class="debug_top" ' . $bg . '>
 | ||
| 						var_dump(<strong>' . trim($fn_name) . '</strong>)
 | ||
| 					</div>
 | ||
| 					'.self::_trace().'
 | ||
| 					<div class="debug_box">
 | ||
| 						<pre style="background:#f5f5f5; color: #000; margin: 0; padding: 5px; border: 0; font-size: 11px; font-family: Consolas, Verdana, Arial;">'
 | ||
| 						. $var_dump .
 | ||
| 						'</pre>
 | ||
| 					</div>
 | ||
| 				</div>
 | ||
| 			';
 | ||
| 
 | ||
| 			if (! $echo)
 | ||
| 				return $var_dump;
 | ||
| 
 | ||
| 			echo $var_dump;
 | ||
| 
 | ||
| 			if ($exit)
 | ||
| 				exit;
 | ||
| 		}
 | ||
| 
 | ||
| 
 | ||
| 		/**
 | ||
| 		 * Функция для вывода переменной (для отладки)
 | ||
| 		 *
 | ||
| 		 * @param mixed $var любая переменная
 | ||
| 		 * @param bool  $exit
 | ||
| 		 * @param null  $bg
 | ||
| 		 * @param bool  $echo
 | ||
| 		 *
 | ||
| 		 * @return null|string|string[]
 | ||
| 		 */
 | ||
| 		public static function _print($var, $exit = false, $_bg = null, $echo = true)
 | ||
| 		{
 | ||
| 			$code = '';
 | ||
| 
 | ||
| 			$backtrace = debug_backtrace();
 | ||
| 
 | ||
| 			$backtrace = $backtrace[0];
 | ||
| 
 | ||
| 			if (preg_match('/([^\(]*)\((.*)\)/i', $backtrace['file']))
 | ||
| 			{
 | ||
| 				preg_match('/([^\(]*)\((.*)\)/i', $backtrace['file'], $match);
 | ||
| 				$file = $match[1];
 | ||
| 			}
 | ||
| 
 | ||
| 			$fh = fopen((isset($file)
 | ||
| 				? $file
 | ||
| 				: $backtrace['file']), 'r');
 | ||
| 
 | ||
| 			$line = 0;
 | ||
| 
 | ||
| 			while (++$line <= $backtrace['line'])
 | ||
| 				$code = fgets($fh);
 | ||
| 
 | ||
| 			fclose($fh);
 | ||
| 
 | ||
| 			preg_match('/' . __FUNCTION__ . '\s*\((.*)\)\s*;/u', $code, $name);
 | ||
| 
 | ||
| 			ob_start();
 | ||
| 
 | ||
| 			print_r($var);
 | ||
| 
 | ||
| 			$var_dump = htmlspecialchars(ob_get_contents());
 | ||
| 
 | ||
| 			$var_dump = preg_replace('/(=>)/', '<span style="color: #FF8C00;">$1</span>', $var_dump);
 | ||
| 
 | ||
| 			ob_end_clean();
 | ||
| 
 | ||
| 			if (! empty($name))
 | ||
| 			{
 | ||
| 				$fn_name = explode(',', $name[1]);
 | ||
| 				$fn_name = array_shift($fn_name);
 | ||
| 			}
 | ||
| 			else
 | ||
| 				$fn_name = 'EVAL';
 | ||
| 
 | ||
| 			if ($_bg)
 | ||
| 				$bg = 'style="background: #' . $_bg . ';"';
 | ||
| 			else
 | ||
| 				$bg = '';
 | ||
| 
 | ||
| 			$var_dump = '
 | ||
| 				<style>
 | ||
| 					.debug_bg {
 | ||
| 						margin: 20px;
 | ||
| 						border: 1px solid #d9d9d9;
 | ||
| 						background-color: #f1efef;
 | ||
| 						border-radius: 5px;
 | ||
| 						box-shadow: 0 0 3px rgba(0, 0, 0, 0.1);
 | ||
| 						font-family: "Consolas", Verdana, Arial;
 | ||
| 						font-size: 11px;
 | ||
| 					}
 | ||
| 					.debug_top {
 | ||
| 						color: #ffffff;
 | ||
| 						font-size: 15px;
 | ||
| 						font-weight: bold;
 | ||
| 						padding-left: 20px;
 | ||
| 						padding-top: 10px;
 | ||
| 						padding-bottom: 10px;
 | ||
| 						text-shadow: 0 1px 1px rgba(0, 0, 0, 0.75);
 | ||
| 						background-color: #4e5665;
 | ||
| 						background-repeat: repeat-x;
 | ||
| 						border-bottom: 1px solid #ffffff;
 | ||
| 					}
 | ||
| 					.debug_box {
 | ||
| 						margin: 10px;
 | ||
| 						padding: 4px;
 | ||
| 						background-color: #efeded;
 | ||
| 						border: 1px solid #dedcdc;
 | ||
| 					}
 | ||
| 				</style>
 | ||
| 				<div class="debug_bg">
 | ||
| 					<div class="debug_top" ' . $bg . '>
 | ||
| 						print_r(<strong>' . trim($fn_name) . '</strong>)
 | ||
| 					</div>
 | ||
| 					'.self::_trace().'
 | ||
| 					<div class="debug_box">
 | ||
| 						<pre style="background:#f5f5f5; color: #000; margin: 0; padding: 5px; border: 0; font-size: 11px; font-family: Consolas, Verdana, Arial;">'
 | ||
| 						. $var_dump .
 | ||
| 						'</pre>
 | ||
| 					</div>
 | ||
| 				</div>
 | ||
| 			';
 | ||
| 
 | ||
| 			if (! $echo)
 | ||
| 				return $var_dump;
 | ||
| 
 | ||
| 			echo $var_dump;
 | ||
| 
 | ||
| 			if ($exit)
 | ||
| 				exit;
 | ||
| 		}
 | ||
| 
 | ||
| 
 | ||
| 		/**
 | ||
| 		 * Функция для вывода переменной (для экспорта)
 | ||
| 		 *
 | ||
| 		 * @param mixed $var любая переменная
 | ||
| 		 * @param bool  $exit
 | ||
| 		 * @param null  $bg
 | ||
| 		 * @param bool  $echo
 | ||
| 		 *
 | ||
| 		 * @return string
 | ||
| 		 */
 | ||
| 		public static function _exp($var, $exit = false, $_bg = null, $echo = true)
 | ||
| 		{
 | ||
| 			$code = '';
 | ||
| 
 | ||
| 			$backtrace = debug_backtrace();
 | ||
| 
 | ||
| 			$backtrace = $backtrace[0];
 | ||
| 
 | ||
| 			if (preg_match('/([^\(]*)\((.*)\)/i', $backtrace['file']))
 | ||
| 			{
 | ||
| 				preg_match('/([^\(]*)\((.*)\)/i', $backtrace['file'], $match);
 | ||
| 				$file = $match[1];
 | ||
| 			}
 | ||
| 
 | ||
| 			$fh = fopen((isset($file)
 | ||
| 				? $file
 | ||
| 				: $backtrace['file']), 'r');
 | ||
| 
 | ||
| 			$line = 0;
 | ||
| 
 | ||
| 			while (++$line <= $backtrace['line'])
 | ||
| 				$code = fgets($fh);
 | ||
| 
 | ||
| 			fclose($fh);
 | ||
| 
 | ||
| 			preg_match('/' . __FUNCTION__ . '\s*\((.*)\)\s*;/u', $code, $name);
 | ||
| 
 | ||
| 			ob_start();
 | ||
| 
 | ||
| 			var_export($var);
 | ||
| 
 | ||
| 			if (! empty($name))
 | ||
| 			{
 | ||
| 				$fn_name = explode(',', $name[1]);
 | ||
| 				$fn_name = array_shift($fn_name);
 | ||
| 			}
 | ||
| 			else
 | ||
| 				$fn_name = 'EVAL';
 | ||
| 
 | ||
| 			if ($_bg)
 | ||
| 				$bg = 'style="background: #' . $_bg . ';"';
 | ||
| 			else
 | ||
| 				$bg = '';
 | ||
| 
 | ||
| 			$var_export = htmlspecialchars(ob_get_contents());
 | ||
| 
 | ||
| 			$var_export = preg_replace('/(=>)/', '<span style="color: #FF8C00;">$1</span>', $var_export);
 | ||
| 
 | ||
| 			ob_end_clean();
 | ||
| 
 | ||
| 			$var_dump = '
 | ||
| 				<style>
 | ||
| 					.debug_bg {
 | ||
| 						margin: 20px;
 | ||
| 						border: 1px solid #d9d9d9;
 | ||
| 						background-color: #f1efef;
 | ||
| 						border-radius: 5px;
 | ||
| 						box-shadow: 0 0 3px rgba(0, 0, 0, 0.1);
 | ||
| 						font-family: "Consolas", Verdana, Arial;
 | ||
| 						font-size: 11px;
 | ||
| 					}
 | ||
| 					.debug_top {
 | ||
| 						color: #ffffff;
 | ||
| 						font-size: 15px;
 | ||
| 						font-weight: bold;
 | ||
| 						padding-left: 20px;
 | ||
| 						padding-top: 10px;
 | ||
| 						padding-bottom: 10px;
 | ||
| 						text-shadow: 0 1px 1px rgba(0, 0, 0, 0.75);
 | ||
| 						background-color: #ccc;
 | ||
| 						background-repeat: repeat-x;
 | ||
| 						border-bottom: 1px solid #ffffff;
 | ||
| 					}
 | ||
| 					.debug_box {
 | ||
| 						margin: 10px;
 | ||
| 						padding: 4px;
 | ||
| 						background-color: #efeded;
 | ||
| 						border: 1px solid #dedcdc;
 | ||
| 					}
 | ||
| 				</style>
 | ||
| 				<div class="debug_bg">
 | ||
| 					<div class="debug_top" ' . $bg . '>
 | ||
| 						var_export(<strong>' . trim($fn_name) . '</strong>)
 | ||
| 					</div>
 | ||
| 					'.self::_trace().'
 | ||
| 					<div class="debug_box">
 | ||
| 						<pre style="background:#f5f5f5; color: #000; margin: 0; padding: 5px; border: 0; font-size: 11px; font-family: Consolas, Verdana, Arial;">'
 | ||
| 						. $var_export .
 | ||
| 						'</pre>
 | ||
| 					</div>
 | ||
| 				</div>
 | ||
| 			';
 | ||
| 
 | ||
| 			if (! $echo)
 | ||
| 				return $var_dump;
 | ||
| 
 | ||
| 			echo $var_dump;
 | ||
| 
 | ||
| 			if ($exit)
 | ||
| 				exit;
 | ||
| 		}
 | ||
| 
 | ||
| 
 | ||
| 		/**
 | ||
| 		 * Функция для вывода переменной (для отладки)
 | ||
| 		 *
 | ||
| 		 * @param mixed $var  любая переменная
 | ||
| 		 * @param bool  $exit true - остановливает дальнейшее выполнение скрипта, false - продолжает выполнять скрипт
 | ||
| 		 * @param null  $bg
 | ||
| 		 * @param bool  $echo
 | ||
| 		 *
 | ||
| 		 * @return false|string
 | ||
| 		 */
 | ||
| 		public static function _html($var, $exit = false, $_bg = null, $echo = true)
 | ||
| 		{
 | ||
| 			$code = '';
 | ||
| 
 | ||
| 			$backtrace = debug_backtrace();
 | ||
| 
 | ||
| 			$backtrace = $backtrace[0];
 | ||
| 
 | ||
| 			if (preg_match('/([^\(]*)\((.*)\)/i', $backtrace['file']))
 | ||
| 			{
 | ||
| 				preg_match('/([^\(]*)\((.*)\)/i', $backtrace['file'], $match);
 | ||
| 				$file = $match[1];
 | ||
| 			}
 | ||
| 
 | ||
| 			$fh = fopen((isset($file)
 | ||
| 				? $file
 | ||
| 				: $backtrace['file']), 'r');
 | ||
| 
 | ||
| 			$line = 0;
 | ||
| 
 | ||
| 			while (++$line <= $backtrace['line'])
 | ||
| 				$code = fgets($fh);
 | ||
| 
 | ||
| 			fclose($fh);
 | ||
| 
 | ||
| 			preg_match('/' . __FUNCTION__ . '\s*\((.*)\)\s*;/u', $code, $name);
 | ||
| 
 | ||
| 			ob_start();
 | ||
| 
 | ||
| 			var_export($var);
 | ||
| 
 | ||
| 			if (! empty($name))
 | ||
| 			{
 | ||
| 				$fn_name = explode(',', $name[1]);
 | ||
| 				$fn_name = array_shift($fn_name);
 | ||
| 			}
 | ||
| 			else
 | ||
| 				$fn_name = 'EVAL';
 | ||
| 
 | ||
| 			if ($_bg)
 | ||
| 				$bg = 'style="background: #' . $_bg . ';"';
 | ||
| 			else
 | ||
| 				$bg = '';
 | ||
| 
 | ||
| 			$var_dump = ob_get_contents();
 | ||
| 
 | ||
| 			ob_end_clean();
 | ||
| 
 | ||
| 			$var_dump = '
 | ||
| 				<style>
 | ||
| 					.debug_bg {
 | ||
| 						margin: 20px;
 | ||
| 						border: 1px solid #d9d9d9;
 | ||
| 						background-color: #f1efef;
 | ||
| 						border-radius: 5px;
 | ||
| 						box-shadow: 0 0 3px rgba(0, 0, 0, 0.1);
 | ||
| 						font-family: "Consolas", Verdana, Arial;
 | ||
| 						font-size: 11px;
 | ||
| 					}
 | ||
| 					.debug_top {
 | ||
| 						color: #ffffff;
 | ||
| 						font-size: 15px;
 | ||
| 						font-weight: bold;
 | ||
| 						padding-left: 20px;
 | ||
| 						padding-top: 10px;
 | ||
| 						padding-bottom: 10px;
 | ||
| 						text-shadow: 0 1px 1px rgba(0, 0, 0, 0.75);
 | ||
| 						background-color: #43648c;
 | ||
| 						background-repeat: repeat-x;
 | ||
| 						border-bottom: 1px solid #ffffff;
 | ||
| 					}
 | ||
| 					.debug_box {
 | ||
| 						margin: 10px;
 | ||
| 						padding: 4px;
 | ||
| 						background-color: #efeded;
 | ||
| 						border: 1px solid #dedcdc;
 | ||
| 					}
 | ||
| 				</style>
 | ||
| 				<div class="debug_bg">
 | ||
| 					<div class="debug_top" ' . $bg . '>
 | ||
| 						var_export(<strong>' . trim($fn_name) . '</strong>)
 | ||
| 					</div>
 | ||
| 					'.self::_trace().'
 | ||
| 					<div class="debug_box">
 | ||
| 						<pre style="background:#f5f5f5; color: #000; margin: 0; padding: 5px; border: 0; font-size: 11px; font-family: Consolas, Verdana, Arial;">'
 | ||
| 						. htmlentities($var_dump, ENT_QUOTES) .
 | ||
| 						'</pre>
 | ||
| 					</div>
 | ||
| 				</div>
 | ||
| 			';
 | ||
| 
 | ||
| 			if (! $echo)
 | ||
| 				return $var_dump;
 | ||
| 
 | ||
| 			echo $var_dump;
 | ||
| 
 | ||
| 			if ($exit)
 | ||
| 				exit;
 | ||
| 		}
 | ||
| 
 | ||
| 
 | ||
| 		/**
 | ||
| 		 * Функция для записи переменной в файл (для отладки)
 | ||
| 		 *
 | ||
| 		 * @param mixed $var  любая переменная
 | ||
| 		 * @param bool  $exit true - остановливает дальнейшее выполнение скрипта, false - продолжает выполнять скрипт
 | ||
| 		 * @param null  $bg
 | ||
| 		 * @param bool  $append
 | ||
| 		 */
 | ||
| 		public static function _dump($var, $exit = false, $bg = null, $append = true)
 | ||
| 		{
 | ||
| 			$code = '';
 | ||
| 
 | ||
| 			$backtrace = debug_backtrace();
 | ||
| 
 | ||
| 			$backtrace = $backtrace[0];
 | ||
| 
 | ||
| 			if (preg_match('/([^\(]*)\((.*)\)/i', $backtrace['file']))
 | ||
| 			{
 | ||
| 				$file = preg_match('/([^\(]*)\((.*)\)/i', $backtrace['file'], $match);
 | ||
| 				$file = $match[1];
 | ||
| 			}
 | ||
| 
 | ||
| 			$fh = fopen((isset($file)
 | ||
| 				? $file
 | ||
| 				: $backtrace['file']), 'r');
 | ||
| 
 | ||
| 			$line = 0;
 | ||
| 
 | ||
| 			while (++$line <= $backtrace['line'])
 | ||
| 				$code = fgets($fh);
 | ||
| 
 | ||
| 			fclose($fh);
 | ||
| 
 | ||
| 			preg_match('/' . __FUNCTION__ . '\s*\((.*)\)\s*;/u', $code, $name);
 | ||
| 
 | ||
| 			ob_start();
 | ||
| 
 | ||
| 			var_dump($var);
 | ||
| 
 | ||
| 			$var_dump = ob_get_contents();
 | ||
| 
 | ||
| 			$var_dump = preg_replace('/=>(\s+|\s$)/', ' => ', $var_dump);
 | ||
| 
 | ||
| 			$var_dump = htmlspecialchars($var_dump);
 | ||
| 
 | ||
| 			$var_dump = preg_replace('/(=> )+([a-zA-Z]+\(\d+\))/', '$1<span style="color: #FF8C00;">$2</span>', $var_dump);
 | ||
| 
 | ||
| 			ob_end_clean();
 | ||
| 
 | ||
| 			if (! empty($name))
 | ||
| 			{
 | ||
| 				$fn_name = explode(',', $name[1]);
 | ||
| 				$fn_name = array_shift($fn_name);
 | ||
| 			}
 | ||
| 			else
 | ||
| 				$fn_name = 'EVAL';
 | ||
| 
 | ||
| 			if (! $bg)
 | ||
| 			{
 | ||
| 				$br = '2a5885';
 | ||
| 				$bg = '43648c';
 | ||
| 			}
 | ||
| 			else
 | ||
| 				{
 | ||
| 					$br = $bg;
 | ||
| 				}
 | ||
| 
 | ||
| 			$var_dump = '
 | ||
| 				<style>
 | ||
| 					.debug_bg {
 | ||
| 						margin: 20px;
 | ||
| 						border: 1px solid #d9d9d9;
 | ||
| 						background-color: #f1efef;
 | ||
| 						border-radius: 5px;
 | ||
| 						box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.1);
 | ||
| 						font-family: Consolas, Verdana, Arial;
 | ||
| 						font-size: 11px;
 | ||
| 					}
 | ||
| 					.debug_top {
 | ||
| 						color: #ffffff;
 | ||
| 						font-size: 15px;
 | ||
| 						font-weight: bold;
 | ||
| 						padding-left: 20px;
 | ||
| 						padding-top: 10px;
 | ||
| 						padding-bottom: 10px;
 | ||
| 						text-shadow: 0 1px 1px rgba(0, 0, 0, 0.75);
 | ||
| 						background-color: #'.$bg.';
 | ||
| 						background-repeat: repeat-x;
 | ||
| 						border-bottom: 1px solid #ffffff;
 | ||
| 					}
 | ||
| 					.debug_box {
 | ||
| 						margin: 10px;
 | ||
| 						padding: 4px;
 | ||
| 						background-color: #efeded;
 | ||
| 						border: 1px solid #dedcdc;
 | ||
| 					}
 | ||
| 				</style>
 | ||
| 				<div class="debug_bg">
 | ||
| 					<div class="debug_top">
 | ||
| 						var_dump(<strong>' . trim($fn_name) . '</strong>)
 | ||
| 					</div>
 | ||
| 					'.self::_trace().'
 | ||
| 					<div class="debug_box">
 | ||
| 						<pre style="background:#f5f5f5; color: #000; margin: 0; padding: 5px; border: 0; font-size: 11px; font-family: Consolas, Verdana, Arial;">'
 | ||
| 						. $var_dump .
 | ||
| 						'</pre>
 | ||
| 					</div>
 | ||
| 				</div>
 | ||
| 			';
 | ||
| 
 | ||
| 			if ($append)
 | ||
| 				file_put_contents(BASE_DIR . '/debug.html', $var_dump, FILE_APPEND);
 | ||
| 			else
 | ||
| 				file_put_contents(BASE_DIR . '/debug.html', $var_dump);
 | ||
| 
 | ||
| 			if ($exit)
 | ||
| 				exit;
 | ||
| 		}
 | ||
| 
 | ||
| 
 | ||
| 		/**
 | ||
| 		 * Функция для вывода переменной (для отладки)
 | ||
| 		 *
 | ||
| 		 * @param mixed $var любая переменная
 | ||
| 		 * @param bool  $exit
 | ||
| 		 * @param null  $bg
 | ||
| 		 * @param bool  $echo
 | ||
| 		 *
 | ||
| 		 * @return false|null|string|string[]
 | ||
| 		 */
 | ||
| 		public static function _($var, $_bg = null, $from = '')
 | ||
| 		{
 | ||
| 			$code = '';
 | ||
| 
 | ||
| 			$backtrace = debug_backtrace();
 | ||
| 
 | ||
| 			$backtrace = $backtrace[0];
 | ||
| 
 | ||
| 			if (preg_match('/([^\(]*)\((.*)\)/i', $backtrace['file']))
 | ||
| 			{
 | ||
| 				preg_match('/([^\(]*)\((.*)\)/i', $backtrace['file'], $match);
 | ||
| 				$file = $match[1];
 | ||
| 			}
 | ||
| 
 | ||
| 			$fh = fopen((isset($file)
 | ||
| 				? $file
 | ||
| 				: $backtrace['file']), 'r');
 | ||
| 
 | ||
| 			$line = 0;
 | ||
| 
 | ||
| 			while (++$line <= $backtrace['line'])
 | ||
| 				$code = fgets($fh);
 | ||
| 
 | ||
| 			fclose($fh);
 | ||
| 
 | ||
| 			preg_match('/' . __FUNCTION__ . '\s*\((.*)\)\s*;/u', $code, $name);
 | ||
| 
 | ||
| 			unset ($code, $backtrace);
 | ||
| 
 | ||
| 			ob_start();
 | ||
| 
 | ||
| 			var_dump($var);
 | ||
| 
 | ||
| 			$var_dump = ob_get_contents();
 | ||
| 
 | ||
| 			$var_dump = preg_replace('/=>(\s+|\s$)/', ' => ', $var_dump);
 | ||
| 
 | ||
| 			$var_dump = htmlspecialchars($var_dump);
 | ||
| 
 | ||
| 			$var_dump = preg_replace('/(=>)/', '<span style="color: #ff8c00;">$1</span>', $var_dump);
 | ||
| 
 | ||
| 			ob_end_clean();
 | ||
| 
 | ||
| 			if (! empty($name))
 | ||
| 			{
 | ||
| 				$fn_name = explode(',', $name[1]);
 | ||
| 				$fn_name = array_shift($fn_name);
 | ||
| 			}
 | ||
| 			else
 | ||
| 				$fn_name = 'EVAL';
 | ||
| 
 | ||
| 			if ($_bg)
 | ||
| 				$bg = 'style="background: #' . $_bg . ';"';
 | ||
| 			else
 | ||
| 				$bg = '';
 | ||
| 
 | ||
| 			$var_dump = '
 | ||
| 				<style>
 | ||
| 					.debug_bg {
 | ||
| 						margin: 20px;
 | ||
| 						border: 1px solid #d9d9d9;
 | ||
| 						background-color: #f1efef;
 | ||
| 						border-radius: 5px;
 | ||
| 						box-shadow: 0 0 3px rgba(0, 0, 0, 0.1);
 | ||
| 						font-family: "Consolas", Verdana, Arial;
 | ||
| 						font-size: 11px;
 | ||
| 					}
 | ||
| 					.debug_top {
 | ||
| 						color: #ffffff;
 | ||
| 						font-size: 15px;
 | ||
| 						font-weight: bold;
 | ||
| 						padding-left: 20px;
 | ||
| 						padding-top: 10px;
 | ||
| 						padding-bottom: 10px;
 | ||
| 						text-shadow: 0 1px 1px rgba(0, 0, 0, 0.75);
 | ||
| 						background-color: #43648c;
 | ||
| 						background-repeat: repeat-x;
 | ||
| 						border-bottom: 1px solid #ffffff;
 | ||
| 					}
 | ||
| 					.debug_box {
 | ||
| 						margin: 10px;
 | ||
| 						padding: 4px;
 | ||
| 						background-color: #efeded;
 | ||
| 						border: 1px solid #dedcdc;
 | ||
| 					}
 | ||
| 				</style>
 | ||
| 				<div class="debug_bg">
 | ||
| 					<div class="debug_top" ' . $bg . '>
 | ||
| 						var_dump(<strong>' . trim($fn_name) . '</strong>) ' . $from . '
 | ||
| 					</div>
 | ||
| 					'.self::_trace().'
 | ||
| 					<div class="debug_box">
 | ||
| 						<pre style="background:#f5f5f5; color: #000; margin: 0; padding: 5px; border: 0; font-size: 11px; font-family: Consolas, Verdana, Arial;">'
 | ||
| 				. $var_dump .
 | ||
| 				'</pre>
 | ||
| 					</div>
 | ||
| 				</div>
 | ||
| 			';
 | ||
| 
 | ||
| 			self::$_debug[] = $var_dump;
 | ||
| 		}
 | ||
| 
 | ||
| 
 | ||
| 		/**
 | ||
| 		 * Функция для трейсинга дебаггера
 | ||
| 		 *
 | ||
| 		 * @param
 | ||
| 		 * @return string
 | ||
| 		 */
 | ||
| 		public static function _trace()
 | ||
| 		{
 | ||
| 			$bt = debug_backtrace();
 | ||
| 
 | ||
| 			$trace = $bt[1];
 | ||
| 
 | ||
| 			$line = $trace['line'];
 | ||
| 
 | ||
| 			$file = $trace['file'];
 | ||
| 
 | ||
| 			//$function = $trace['function'];
 | ||
| 
 | ||
| 			$class = (isset($bt[2]['class'])
 | ||
| 				? $bt[2]['class']
 | ||
| 				: 'None');
 | ||
| 
 | ||
| 			if (isset($bt[2]['class']))
 | ||
| 				$type = $bt[2]['type'];
 | ||
| 			else
 | ||
| 				$type = 'Unknow';
 | ||
| 
 | ||
| 			$function = isset($bt[2]['function'])
 | ||
| 				? $bt[2]['function']
 | ||
| 				: 'None';
 | ||
| 
 | ||
| 			return sprintf('<div class="debug_box">Class: <strong>%s</strong> | Type: <strong>%s</strong> | Function: <strong>%s</strong></div><div class="debug_box">File: <strong>%s</strong> line <strong>%s</strong></div>', $class, $type, $function, $file, $line);
 | ||
| 		}
 | ||
| 
 | ||
| 
 | ||
| 		/**
 | ||
| 		 * Функция отвечает за начало таймера
 | ||
| 		 *
 | ||
| 		 * @param string $name любая переменная (ключ массива)
 | ||
| 		 */
 | ||
| 		public static function startTime($name = '')
 | ||
| 		{
 | ||
| 			Debug::$time[$name] = microtime(true);
 | ||
| 		}
 | ||
| 
 | ||
| 
 | ||
| 		/**
 | ||
| 		 * Функция отвечает за окончание таймера
 | ||
| 		 *
 | ||
| 		 * @param string $name любая переменная (ключ массива)
 | ||
| 		 *
 | ||
| 		 * @return string
 | ||
| 		 */
 | ||
| 		public static function endTime($name = '')
 | ||
| 		{
 | ||
| 			if (isset(Debug::$time[$name]))
 | ||
| 				return sprintf("%01.4f", microtime(true) - Debug::$time[$name]) . ' sec';
 | ||
| 		}
 | ||
| 
 | ||
| 
 | ||
| 		/**
 | ||
| 		 * Функция отвечает за начало подсчета используеой памяти
 | ||
| 		 *
 | ||
| 		 * @param string $name любая переменная (ключ массива)
 | ||
| 		 */
 | ||
| 		public static function startMemory($name = '')
 | ||
| 		{
 | ||
| 			Debug::$memory[$name] = memory_get_usage();
 | ||
| 		}
 | ||
| 
 | ||
| 
 | ||
| 		/**
 | ||
| 		 * Функция отвечает за окончание подсчета используемой памяти
 | ||
| 		 *
 | ||
| 		 * @param string $name любая переменная (ключ массива)
 | ||
| 		 * @return string
 | ||
| 		 */
 | ||
| 		public static function endMemory($name = '')
 | ||
| 		{
 | ||
| 			if (isset(Debug::$memory[$name]))
 | ||
| 				return Debug::formatSize(memory_get_usage() - Debug::$memory[$name]);
 | ||
| 		}
 | ||
| 
 | ||
| 
 | ||
| 		/**
 | ||
| 		 * Форматированный вывод размера
 | ||
| 		 *
 | ||
| 		 * @param int $size размер
 | ||
| 		 * @return string нормированный размер с единицой измерения
 | ||
| 		 */
 | ||
| 		public static function formatSize($size)
 | ||
| 		{
 | ||
| 			if ($size >= 1073741824)
 | ||
| 				$size = round($size / 1073741824 * 100) / 100 . ' Gb';
 | ||
| 			elseif ($size >= 1048576)
 | ||
| 				$size = round($size / 1048576 * 100) / 100 . ' Mb';
 | ||
| 			elseif ($size >= 1024)
 | ||
| 				$size = round($size / 1024 * 100) / 100 . ' Kb';
 | ||
| 			else
 | ||
| 				$size = $size . ' b';
 | ||
| 
 | ||
| 			return $size;
 | ||
| 		}
 | ||
| 
 | ||
| 
 | ||
| 		/**
 | ||
| 		 * Форматированный вывод чисел
 | ||
| 		 *
 | ||
| 		 * @param int $number число
 | ||
| 		 * @param int $decimal
 | ||
| 		 * @param string $after
 | ||
| 		 * @param string $thousand
 | ||
| 		 * @return string
 | ||
| 		 */
 | ||
| 		public static function numFormat($number, $decimal = 0, $after = ',', $thousand= '.')
 | ||
| 		{
 | ||
| 			if ($number)
 | ||
| 				return number_format($number, $decimal, $after, $thousand);
 | ||
| 
 | ||
| 			return '';
 | ||
| 		}
 | ||
| 
 | ||
| 
 | ||
| 		/**
 | ||
| 		 * @param      $header
 | ||
| 		 * @param      $body
 | ||
| 		 * @param      $caller
 | ||
| 		 * @param bool $exit
 | ||
| 		 */
 | ||
| 		public static function _errorSql ($header, $body, $caller, $exit = false)
 | ||
| 		{
 | ||
| 			//
 | ||
| 		}
 | ||
| 
 | ||
| 
 | ||
| 		/**
 | ||
| 		 * Вывод статистики
 | ||
| 		 *
 | ||
| 		 * @param null $type
 | ||
| 		 *
 | ||
| 		 * @return int|null|string
 | ||
| 		 */
 | ||
| 		public static function  getStatistic ($type = null)
 | ||
| 		{
 | ||
| 			global $AVE_DB;
 | ||
| 
 | ||
| 			$stat = null;
 | ||
| 
 | ||
| 			switch ($type)
 | ||
| 			{
 | ||
| 				case 'time':
 | ||
| 					$stat = number_format(microtime_diff(START_MICROTIME, microtime()), 3, ',', ' ');
 | ||
| 					break;
 | ||
| 
 | ||
| 				case 'memory':
 | ||
| 					$stat = Debug::formatSize(memory_get_usage() - START_MEMORY);
 | ||
| 					break;
 | ||
| 
 | ||
| 				case 'peak':
 | ||
| 					$stat = Debug::formatSize(memory_get_peak_usage());
 | ||
| 					break;
 | ||
| 
 | ||
| 				case 'sqlcount':
 | ||
| 					$stat = $AVE_DB->DBProfilesGet('count');
 | ||
| 					break;
 | ||
| 
 | ||
| 				case 'sqltrace':
 | ||
| 					$stat = count($AVE_DB->_query_list);
 | ||
| 					break;
 | ||
| 
 | ||
| 				case 'sqltime':
 | ||
| 					$stat = $AVE_DB->DBProfilesGet('time');
 | ||
| 					break;
 | ||
| 
 | ||
| 				case 'get':
 | ||
| 					$stat = self::_stat_get('get');
 | ||
| 					break;
 | ||
| 
 | ||
| 				case 'post':
 | ||
| 					$stat = self::_stat_get('post');
 | ||
| 					break;
 | ||
| 
 | ||
| 				case 'request':
 | ||
| 					$stat = self::_stat_get('request');
 | ||
| 					break;
 | ||
| 
 | ||
| 				case 'files':
 | ||
| 					$stat = self::_stat_get('files');
 | ||
| 					break;
 | ||
| 
 | ||
| 				case 'cookie':
 | ||
| 					$stat = self::_stat_get('cookie');
 | ||
| 					break;
 | ||
| 
 | ||
| 				case 'env':
 | ||
| 					$stat = self::_stat_get('env');
 | ||
| 					break;
 | ||
| 
 | ||
| 				case 'session':
 | ||
| 					$stat = self::_stat_get('session');
 | ||
| 					break;
 | ||
| 
 | ||
| 				case 'server':
 | ||
| 					$stat = self::_stat_get('server');
 | ||
| 					break;
 | ||
| 
 | ||
| 				case 'globals':
 | ||
| 					$stat = self::_stat_get('globals');
 | ||
| 					break;
 | ||
| 
 | ||
| 				case 'blocks':
 | ||
| 					$stat = self::_stat_get('blocks');
 | ||
| 					break;
 | ||
| 			}
 | ||
| 
 | ||
| 			return $stat;
 | ||
| 		}
 | ||
| 
 | ||
| 
 | ||
| 		/**
 | ||
| 		 * @param string $type
 | ||
| 		 *
 | ||
| 		 * @return false|null|string|string[]
 | ||
| 		 */
 | ||
| 		public static function _stat_get (string $type = 'get')
 | ||
| 		{
 | ||
| 			ob_start();
 | ||
| 
 | ||
| 			if ($type == 'get')
 | ||
| 				var_dump($_GET);
 | ||
| 			else if ($type == 'post')
 | ||
| 				var_dump($_POST);
 | ||
| 			else if ($type == 'request')
 | ||
| 				var_dump($_REQUEST);
 | ||
| 			else if ($type == 'files')
 | ||
| 				var_dump($_FILES);
 | ||
| 			else if ($type == 'cookie')
 | ||
| 				var_dump($_COOKIE);
 | ||
| 			else if ($type == 'session')
 | ||
| 				var_dump($_SESSION);
 | ||
| 			else if ($type == 'server')
 | ||
| 				var_dump($_SERVER);
 | ||
| 			else if ($type == 'env')
 | ||
| 				var_dump($_ENV);
 | ||
| 			else if ($type == 'globals')
 | ||
| 				var_dump($GLOBALS);
 | ||
| 			else if ($type == 'blocks')
 | ||
| 				var_dump($GLOBALS['block_generate']);
 | ||
| 			$stat = ob_get_contents();
 | ||
| 			$stat = preg_replace('/=>(\s+|\s$)/', ' => ', $stat);
 | ||
| 			$stat = htmlspecialchars($stat);
 | ||
| 			$stat = preg_replace('/(=>)/', '<span style="color: #FF8C00;">$1</span>', $stat);
 | ||
| 			$stat = '<pre style="background:#f5f5f5; color: #000; margin: 0; padding: 5px; border: 0; font-size: 11px; font-family: Consolas, Verdana, Arial;">'. $stat .'</pre>';
 | ||
| 			
 | ||
| 			ob_end_clean();
 | ||
| 
 | ||
| 			return $stat;
 | ||
| 		}
 | ||
| 
 | ||
| 
 | ||
| 		public static function getDocumentInfo ()
 | ||
| 		{
 | ||
| 			global $AVE_Template;
 | ||
| 
 | ||
| 			$_arr = [
 | ||
| 				'DOC' => '/admin/index.php?do=docs&action=edit&Id=',
 | ||
| 				'RUBRIC' => '/admin/index.php?do=rubs&action=edit&Id=',
 | ||
| 				'BLOCKS' => '/admin/index.php?do=blocks&action=edit&id=',
 | ||
| 				'SYSBLOCK' => '/admin/index.php?do=sysblocks&action=edit&id=',
 | ||
| 				'REQUESTS' => '/admin/index.php?do=request&action=edit&Id=',
 | ||
| 				'NAVIAGTIONS' => '/admin/index.php?do=navigation&action=templates&navigation_id='
 | ||
| 			];
 | ||
| 
 | ||
| 			$doc = get_document($_REQUEST['id']);
 | ||
| 
 | ||
| 			$_edit = [];
 | ||
| 
 | ||
| 			$_edit['DOC'][$doc['Id']] =  $_arr['DOC'] . $doc['Id'];
 | ||
| 			$_edit['RUBRIC'][$doc['rubric_id']] =  $_arr['RUBRIC'] . $doc['rubric_id'];
 | ||
| 
 | ||
| 			foreach ($GLOBALS['block_generate'] AS $k => $v)
 | ||
| 			{
 | ||
| 				if (! in_array($k, array_keys($_arr))) {
 | ||
| 					continue;
 | ||
| 				}
 | ||
| 
 | ||
| 				foreach ($v as $key => $value) {
 | ||
| 					$_edit[$k][$key] = $_arr[$k] . $key;
 | ||
| 				}
 | ||
| 			}
 | ||
| 
 | ||
| 			$AVE_Template->assign('edit', $_edit);
 | ||
| 			$AVE_Template->assign('session', session_id());
 | ||
| 
 | ||
| 			$return = $AVE_Template->fetch(BASE_DIR . '/lib/debug/debug.tpl');
 | ||
| 
 | ||
| 			return $return;
 | ||
| 		}
 | ||
| 
 | ||
| 
 | ||
| 		/**
 | ||
| 		 * @return string
 | ||
| 		 */
 | ||
| 		public static function displayInfo (): string
 | ||
| 		{
 | ||
| 			global $AVE_DB;
 | ||
| 
 | ||
| 			$out = PHP_EOL;
 | ||
| 			$out .= '<link rel="stylesheet" href="/lib/debug/debug.css" />';
 | ||
| 			$out .= PHP_EOL;
 | ||
| 			$out .= '<script>window.jQuery || document.write(\'<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js">\x3C/script>\')</script>';
 | ||
| 			$out .= PHP_EOL;
 | ||
| 			$out .= '<script src="/lib/debug/debug.js"></script>';
 | ||
| 			$out .= PHP_EOL;
 | ||
| 			$out .= '<div id="debug_btn"></div>';
 | ||
| 			$out .= PHP_EOL;
 | ||
| 			$out .= '
 | ||
| 				<div id="debug_bar">
 | ||
| 					<ul class="debug_tabs">
 | ||
| 						<li id="debug-1">Timers</li>
 | ||
| 						<li id="debug-2">Blocks</li>
 | ||
| 						<li id="debug-3">$_GET</li>
 | ||
| 						<li id="debug-4">$_POST</li>
 | ||
| 						<li id="debug-5">$_REQUEST</li>
 | ||
| 						<li id="debug-6">$_FILES</li>
 | ||
| 						<li id="debug-7">$_COOKIE</li>
 | ||
| 						<li id="debug-8">$_SESSION</li>
 | ||
| 						<li id="debug-9">$_SERVER</li>
 | ||
| 						<li id="debug-10">$_ENV</li>
 | ||
| 						<li id="debug-11">$GLOBALS</li>
 | ||
| 						<li id="debug-12">MySQL</li>
 | ||
| 						<li id="debug-13">Trace</li>
 | ||
| 						<li id="debug-14">Debug</li>
 | ||
| 						<li id="debug-15">Edit</li>
 | ||
| 					</ul>
 | ||
| 			';
 | ||
| 			$out .= PHP_EOL;
 | ||
| 			$out .= '<div class="debug_tab" id="debug-1-cont" style="display: block;">' . PHP_EOL;
 | ||
| 			$out .= 'Time generation: ' . self::getStatistic('time') . ' sec';
 | ||
| 			$out .= '<br>';
 | ||
| 			$out .= 'Memory usage: ' . self::getStatistic('memory');
 | ||
| 			$out .= '<br>';
 | ||
| 			$out .= 'Memory peak usage: ' . self::getStatistic('peak');
 | ||
| 			$out .= '<br>';
 | ||
| 			$out .= 'Real SQL Queries: ' . $AVE_DB->DBProfilesGet('count') . ' for ' . $AVE_DB->DBProfilesGet('time') . ' sec';
 | ||
| 			$out .= '<br>';
 | ||
| 			$out .= 'All SQL Queries: ' . count($AVE_DB->_query_list);
 | ||
| 			$out .= '</div>';
 | ||
| 
 | ||
| 			$out .= PHP_EOL;
 | ||
| 
 | ||
| 			$out .= '<div class="debug_tab" id="debug-2-cont" style="display: none;">' . PHP_EOL;
 | ||
| 			$out .= 'Blocks:';
 | ||
| 			$out .= self::getStatistic('blocks');
 | ||
| 			$out .= '</div>';
 | ||
| 
 | ||
| 			$out .= PHP_EOL;
 | ||
| 
 | ||
| 			$out .= '<div class="debug_tab" id="debug-3-cont" style="display: none;">' . PHP_EOL;
 | ||
| 			$out .= 'GET:';
 | ||
| 			$out .= self::getStatistic('get');
 | ||
| 			$out .= '</div>';
 | ||
| 
 | ||
| 			$out .= PHP_EOL;
 | ||
| 
 | ||
| 			$out .= '<div class="debug_tab" id="debug-4-cont" style="display: none;">' . PHP_EOL;
 | ||
| 			$out .= 'POST:';
 | ||
| 			$out .= self::getStatistic('post');
 | ||
| 			$out .= '</div>';
 | ||
| 
 | ||
| 			$out .= PHP_EOL;
 | ||
| 
 | ||
| 			$out .= '<div class="debug_tab" id="debug-5-cont" style="display: none;">' . PHP_EOL;
 | ||
| 			$out .= 'REQUEST:';
 | ||
| 			$out .= self::getStatistic('request');
 | ||
| 			$out .= '</div>';
 | ||
| 
 | ||
| 			$out .= PHP_EOL;
 | ||
| 
 | ||
| 			$out .= '<div class="debug_tab" id="debug-6-cont" style="display: none;">' . PHP_EOL;
 | ||
| 			$out .= 'FILES:';
 | ||
| 			$out .= self::getStatistic('files');
 | ||
| 			$out .= '</div>';
 | ||
| 
 | ||
| 			$out .= PHP_EOL;
 | ||
| 
 | ||
| 			$out .= '<div class="debug_tab" id="debug-7-cont" style="display: none;">' . PHP_EOL;
 | ||
| 			$out .= 'COOKIE:';
 | ||
| 			$out .= self::getStatistic('cookie');
 | ||
| 			$out .= '</div>';
 | ||
| 
 | ||
| 			$out .= PHP_EOL;
 | ||
| 
 | ||
| 			$out .= '<div class="debug_tab" id="debug-8-cont" style="display: none;">' . PHP_EOL;
 | ||
| 			$out .= 'SESSION:';
 | ||
| 			$out .= self::getStatistic('session');
 | ||
| 			$out .= '</div>';
 | ||
| 
 | ||
| 			$out .= PHP_EOL;
 | ||
| 
 | ||
| 			$out .= '<div class="debug_tab" id="debug-9-cont" style="display: none;">' . PHP_EOL;
 | ||
| 			$out .= 'SERVER:';
 | ||
| 			$out .= self::getStatistic('server');
 | ||
| 			$out .= '</div>';
 | ||
| 
 | ||
| 			$out .= PHP_EOL;
 | ||
| 
 | ||
| 			$out .= '<div class="debug_tab" id="debug-10-cont" style="display: none;">' . PHP_EOL;
 | ||
| 			$out .= 'ENV:';
 | ||
| 			$out .= self::getStatistic('env');
 | ||
| 			$out .= '</div>';
 | ||
| 
 | ||
| 			$out .= PHP_EOL;
 | ||
| 
 | ||
| 			$out .= '<div class="debug_tab" id="debug-11-cont" style="display: none;">' . PHP_EOL;
 | ||
| 			$out .= self::getStatistic('globals');
 | ||
| 			$out .= '</div>';
 | ||
| 
 | ||
| 			$out .= PHP_EOL;
 | ||
| 			$out .= '<div class="debug_tab" id="debug-12-cont" style="display: none;">' . PHP_EOL;
 | ||
| 			$out .= $AVE_DB->DBProfilesGet('list');
 | ||
| 			$out .= '</div>';
 | ||
| 
 | ||
| 			$out .= PHP_EOL;
 | ||
| 			$out .= '<div class="debug_tab" id="debug-13-cont" style="display: none;">' . PHP_EOL;
 | ||
| 			$out .= $AVE_DB->showAllQueries();
 | ||
| 			$out .= '</div>';
 | ||
| 
 | ||
| 			$out .= PHP_EOL;
 | ||
| 			$out .= '<div class="debug_tab" id="debug-14-cont" style="display: none;">' . PHP_EOL;
 | ||
| 			$out .= implode('', self::$_debug);
 | ||
| 			$out .= '</div>';
 | ||
| 
 | ||
| 			$out .= PHP_EOL;
 | ||
| 			$out .= '<div class="debug_tab" id="debug-15-cont" style="display: none;">' . PHP_EOL;
 | ||
| 			$out .= self::getDocumentInfo();
 | ||
| 			$out .= '</div>';
 | ||
| 
 | ||
| 			$out .= PHP_EOL;
 | ||
| 			$out .= '</div>';
 | ||
| 
 | ||
| 			return $out;
 | ||
| 		}
 | ||
| 
 | ||
| 		/**
 | ||
| 		 * @return string
 | ||
| 		 */
 | ||
| 		public static function displayInfoLight (): string
 | ||
| 		{
 | ||
| 			global $AVE_DB;
 | ||
| 
 | ||
| 			$out = PHP_EOL;
 | ||
| 			$out .= '<link rel="stylesheet" href="/lib/debug/debug.css" />';
 | ||
| 			$out .= PHP_EOL;
 | ||
| 			$out .= '<script>window.jQuery || document.write(\'<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js">\x3C/script>\')</script>';
 | ||
| 			$out .= PHP_EOL;
 | ||
| 			$out .= '<script src="/lib/debug/debug.js"></script>';
 | ||
| 			$out .= PHP_EOL;
 | ||
| 			$out .= '<div id="debug_btn"></div>';
 | ||
| 			$out .= PHP_EOL;
 | ||
| 			$out .= '
 | ||
| 				<div id="debug_bar">
 | ||
| 					<ul class="debug_tabs">
 | ||
| 						<li id="debug-1">Timers</li>
 | ||
| 						<li id="debug-2">Blocks</li>
 | ||
| 						<li id="debug-3">Content</li>
 | ||
| 						<li id="debug-4">Debug</li>
 | ||
| 						<li id="debug-5">Document</li>
 | ||
| 					</ul>
 | ||
| 			';
 | ||
| 			$out .= PHP_EOL;
 | ||
| 			$out .= '<div class="debug_tab" id="debug-1-cont" style="display: block;">' . PHP_EOL;
 | ||
| 			$out .= 'Time generation: ' . self::getStatistic('time') . ' sec';
 | ||
| 			$out .= '<br>';
 | ||
| 			$out .= 'Memory usage: ' . self::getStatistic('memory');
 | ||
| 			$out .= '<br>';
 | ||
| 			$out .= 'Memory peak usage: ' . self::getStatistic('peak');
 | ||
| 			$out .= '<br>';
 | ||
| 			$out .= 'Real SQL Queries: ' . $AVE_DB->DBProfilesGet('count') . ' for ' . $AVE_DB->DBProfilesGet('time') . ' sec';
 | ||
| 			$out .= '<br>';
 | ||
| 			$out .= 'All SQL Queries: ' . count($AVE_DB->_query_list);
 | ||
| 			$out .= '</div>';
 | ||
| 
 | ||
| 			$out .= PHP_EOL;
 | ||
| 			$out .= '<div class="debug_tab" id="debug-2-cont" style="display: none;">' . PHP_EOL;
 | ||
| 			$out .= 'Blocks:';
 | ||
| 			$out .= self::getStatistic('blocks');
 | ||
| 			$out .= '</div>';
 | ||
| 
 | ||
| 			$out .= PHP_EOL;
 | ||
| 			$out .= '<div class="debug_tab" id="debug-3-cont" style="display: none;">' . PHP_EOL;
 | ||
| 			$out .= '<pre>' . htmlspecialchars(self::$_document_content) . '</pre>';
 | ||
| 			$out .= '</div>';
 | ||
| 
 | ||
| 			$out .= PHP_EOL;
 | ||
| 			$out .= '<div class="debug_tab" id="debug-4-cont" style="display: none;">' . PHP_EOL;
 | ||
| 			$out .= implode('', self::$_debug);
 | ||
| 			$out .= '</div>';
 | ||
| 
 | ||
| 			$out .= PHP_EOL;
 | ||
| 			$out .= '<div class="debug_tab" id="debug-5-cont" style="display: none;">' . PHP_EOL;
 | ||
| 			$out .= self::getDocumentInfo();
 | ||
| 			$out .= '</div>';
 | ||
| 
 | ||
| 			$out .= PHP_EOL;
 | ||
| 			$out .= '</div>';
 | ||
| 
 | ||
| 			return $out;
 | ||
| 		}
 | ||
| 	}
 | ||
| ?>
 |