';
- if (! $echo)
- return $var_dump;
+ if (!$echo) {
+ return $var_dump;
+ }
- echo $var_dump;
+ echo $var_dump;
- if ($exit)
- exit;
- }
+ 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 = "";
- /**
- * Функция для записи переменной в файл (для отладки)
- *
- * @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 = debug_backtrace();
+ $backtrace = $backtrace[0];
- $backtrace = $backtrace[0];
+ if (preg_match("/([^\(]*)\((.*)\)/i", $backtrace["file"])) {
+ $file = preg_match(
+ "/([^\(]*)\((.*)\)/i",
+ $backtrace["file"],
+ $match,
+ );
+ $file = $match[1];
+ }
- if (preg_match('/([^\(]*)\((.*)\)/i', $backtrace['file']))
- {
- $file = preg_match('/([^\(]*)\((.*)\)/i', $backtrace['file'], $match);
- $file = $match[1];
- }
+ $fh = fopen(isset($file) ? $file : $backtrace["file"], "r");
- $fh = fopen((isset($file)
- ? $file
- : $backtrace['file']), 'r');
+ $line = 0;
- $line = 0;
+ while (++$line <= $backtrace["line"]) {
+ $code = fgets($fh);
+ }
- while (++$line <= $backtrace['line'])
- $code = fgets($fh);
+ fclose($fh);
- fclose($fh);
+ preg_match("/" . __FUNCTION__ . "\s*\((.*)\)\s*;/u", $code, $name);
- preg_match('/' . __FUNCTION__ . '\s*\((.*)\)\s*;/u', $code, $name);
+ ob_start();
- ob_start();
+ var_dump($var);
- var_dump($var);
+ $var_dump = ob_get_contents();
- $var_dump = ob_get_contents();
+ $var_dump = preg_replace('/=>(\s+|\s$)/', " => ", $var_dump);
- $var_dump = preg_replace('/=>(\s+|\s$)/', ' => ', $var_dump);
+ $var_dump = htmlspecialchars($var_dump);
- $var_dump = htmlspecialchars($var_dump);
+ $var_dump = preg_replace(
+ "/(=> )+([a-zA-Z]+\(\d+\))/",
+ '$1
',
+ $var_dump,
+ );
- $var_dump = preg_replace('/(=> )+([a-zA-Z]+\(\d+\))/', '$1
', $var_dump);
+ ob_end_clean();
- ob_end_clean();
+ if (!empty($name)) {
+ $fn_name = explode(",", $name[1]);
+ $fn_name = array_shift($fn_name);
+ } else {
+ $fn_name = "EVAL";
+ }
- 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;
+ }
- if (! $bg)
- {
- $br = '2a5885';
- $bg = '43648c';
- }
- else
- {
- $br = $bg;
- }
-
- $var_dump = '
+ $var_dump =
+ '
';
- if ($append)
- file_put_contents(BASE_DIR . '/debug.html', $var_dump, FILE_APPEND);
- else
- file_put_contents(BASE_DIR . '/debug.html', $var_dump);
+ 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;
- }
+ 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 = "";
- /**
- * Функция для вывода переменной (для отладки)
- *
- * @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 = debug_backtrace();
+ $backtrace = $backtrace[0];
- $backtrace = $backtrace[0];
+ if (preg_match("/([^\(]*)\((.*)\)/i", $backtrace["file"])) {
+ preg_match("/([^\(]*)\((.*)\)/i", $backtrace["file"], $match);
+ $file = $match[1];
+ }
- if (preg_match('/([^\(]*)\((.*)\)/i', $backtrace['file']))
- {
- preg_match('/([^\(]*)\((.*)\)/i', $backtrace['file'], $match);
- $file = $match[1];
- }
+ $fh = fopen(isset($file) ? $file : $backtrace["file"], "r");
- $fh = fopen((isset($file)
- ? $file
- : $backtrace['file']), 'r');
+ $line = 0;
- $line = 0;
+ while (++$line <= $backtrace["line"]) {
+ $code = fgets($fh);
+ }
- while (++$line <= $backtrace['line'])
- $code = fgets($fh);
+ fclose($fh);
- fclose($fh);
+ preg_match("/" . __FUNCTION__ . "\s*\((.*)\)\s*;/u", $code, $name);
- preg_match('/' . __FUNCTION__ . '\s*\((.*)\)\s*;/u', $code, $name);
+ unset($code, $backtrace);
- unset ($code, $backtrace);
+ ob_start();
- ob_start();
+ var_dump($var);
- var_dump($var);
+ $var_dump = ob_get_contents();
- $var_dump = ob_get_contents();
+ $var_dump = preg_replace('/=>(\s+|\s$)/', " => ", $var_dump);
- $var_dump = preg_replace('/=>(\s+|\s$)/', ' => ', $var_dump);
+ $var_dump = htmlspecialchars($var_dump);
- $var_dump = htmlspecialchars($var_dump);
+ $var_dump = preg_replace(
+ "/(=>)/",
+ '
',
+ $var_dump,
+ );
- $var_dump = preg_replace('/(=>)/', '
', $var_dump);
+ ob_end_clean();
- ob_end_clean();
+ if (!empty($name)) {
+ $fn_name = explode(",", $name[1]);
+ $fn_name = array_shift($fn_name);
+ } else {
+ $fn_name = "EVAL";
+ }
- 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 = "";
+ }
- if ($_bg)
- $bg = 'style="background: #' . $_bg . ';"';
- else
- $bg = '';
-
- $var_dump = '
+ $var_dump =
+ '
-
- var_dump(
' . trim($fn_name) . ') ' . $from . '
+
+ var_dump(' .
+ trim($fn_name) .
+ ") " .
+ $from .
+ '
- '.self::_trace().'
+ ' .
+ self::_trace() .
+ '
-
'
- . $var_dump .
- '
+
' .
+ $var_dump .
+ '
';
- self::$_debug[] = $var_dump;
- }
+ self::$_debug[] = $var_dump;
+ }
+ /**
+ * Функция для трейсинга дебаггера
+ *
+ * @param
+ * @return string
+ */
+ public static function _trace()
+ {
+ $bt = debug_backtrace();
- /**
- * Функция для трейсинга дебаггера
- *
- * @param
- * @return string
- */
- public static function _trace()
- {
- $bt = debug_backtrace();
+ $trace = $bt[1];
- $trace = $bt[1];
+ $line = $trace["line"];
- $line = $trace['line'];
+ $file = $trace["file"];
- $file = $trace['file'];
+ //$function = $trace['function'];
- //$function = $trace['function'];
+ $class = isset($bt[2]["class"]) ? $bt[2]["class"] : "None";
- $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('
Class: %s | Type: %s | Function: %s
File: %s line %s
', $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;
-
- if (!defined('START_MEMORY')) {
- define('START_MEMORY', memory_get_usage());
- }
-
- $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 'template':
- $mod = $_REQUEST['module'] ?? 'index';
- $act = $_REQUEST['action'] ?? 'main';
- $stat = "[{$mod}] -> {$act}.tpl";
-
- if (isset($AVE_Template)) {
- $real_tpl = $AVE_Template->template_resource ?? $AVE_Template->_current_file ?? null;
- if ($real_tpl) {
- $stat = basename($real_tpl);
- }
- }
- 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')
- if (isset($GLOBALS['block_generate'])) {
- var_dump($GLOBALS['block_generate']);
+ if (isset($bt[2]["class"])) {
+ $type = $bt[2]["type"];
+ } else {
+ $type = "Unknow";
}
- $stat = ob_get_contents();
- $stat = preg_replace('/=>(\s+|\s$)/', ' => ', $stat);
- $stat = htmlspecialchars($stat);
- $stat = preg_replace('/(=>)/', '
$1', $stat);
- $stat = '
'. $stat .'
';
-
- ob_end_clean();
- return $stat;
- }
+ $function = isset($bt[2]["function"]) ? $bt[2]["function"] : "None";
+ return sprintf(
+ '
Class: %s | Type: %s | Function: %s
File: %s line %s
',
+ $class,
+ $type,
+ $function,
+ $file,
+ $line,
+ );
+ }
-public static function getDocumentInfo ()
- {
- global $AVE_Template;
+ /**
+ * Функция отвечает за начало таймера
+ *
+ * @param string $name любая переменная (ключ массива)
+ */
+ public static function startTime($name = "")
+ {
+ Debug::$time[$name] = microtime(true);
+ }
- $_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='
- ];
+ /**
+ * Функция отвечает за окончание таймера
+ *
+ * @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";
+ }
+ }
- // ИСПРАВЛЕНИЕ : Безопасно получаем 'id' из $_REQUEST
- $doc = get_document($_REQUEST['id'] ?? '');
+ /**
+ * Функция отвечает за начало подсчета используеой памяти
+ *
+ * @param string $name любая переменная (ключ массива)
+ */
+ public static function startMemory($name = "")
+ {
+ Debug::$memory[$name] = memory_get_usage();
+ }
- $_edit = [];
+ /**
+ * Функция отвечает за окончание подсчета используемой памяти
+ *
+ * @param string $name любая переменная (ключ массива)
+ * @return string
+ */
+ public static function endMemory($name = "")
+ {
+ if (isset(Debug::$memory[$name])) {
+ return Debug::formatSize(
+ memory_get_usage() - Debug::$memory[$name],
+ );
+ }
+ }
- // ИСПРАВЛЕНИЕ : Проверяем, что $doc содержит данные и нужные ключи
- if (!empty($doc) && isset($doc['Id'], $doc['rubric_id'])) {
- $_edit['DOC'][$doc['Id']] = $_arr['DOC'] . $doc['Id'];
- $_edit['RUBRIC'][$doc['rubric_id']] = $_arr['RUBRIC'] . $doc['rubric_id'];
- }
-
- // ИСПРАВЛЕНИЕ : Проверяем, что $GLOBALS['block_generate'] существует и является массивом/объектом
- if (isset($GLOBALS['block_generate']) && (is_array($GLOBALS['block_generate']) || $GLOBALS['block_generate'] instanceof Traversable)) {
- foreach ($GLOBALS['block_generate'] AS $k => $v)
- {
- if (! in_array($k, array_keys($_arr))) {
- continue;
- }
+ /**
+ * Форматированный вывод размера
+ *
+ * @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";
+ }
- // Защита внутреннего цикла
- if (is_array($v) || $v instanceof Traversable) {
- foreach ($v as $key => $value) {
- $_edit[$k][$key] = $_arr[$k] . $key;
- }
- }
- }
- }
+ return $size;
+ }
- $AVE_Template->assign('edit', $_edit);
- $AVE_Template->assign('session', session_id());
+ /**
+ * Форматированный вывод чисел
+ *
+ * @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 = $AVE_Template->fetch(BASE_DIR . '/lib/debug/debug.tpl');
+ return "";
+ }
- return $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;
- /**
- * @return string
- */
- public static function displayInfo (): string
- {
- global $AVE_DB;
+ if (!defined("START_MEMORY")) {
+ define("START_MEMORY", memory_get_usage());
+ }
- $out = PHP_EOL;
- $out .= '
';
- $out .= PHP_EOL;
- $out .= '';
- $out .= PHP_EOL;
- $out .= '';
- $out .= PHP_EOL;
- $out .= '
';
- $out .= PHP_EOL;
- $out .= '
+ $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 "template":
+ // Извлекаем все возможные ключи модуля
+ $req_do = $_REQUEST["do"] ?? "";
+ $req_mod = $_REQUEST["mod"] ?? "";
+ $req_module = $_REQUEST["module"] ?? "";
+ $action = $_REQUEST["action"] ?? "";
+
+ // Определяем имя модуля
+ if ($req_do == "modules" || $req_module == "modules") {
+ $real_mod = !empty($req_mod)
+ ? $req_mod
+ : ($req_module != "modules"
+ ? $req_module
+ : "system");
+ $display_name = "modules → {$real_mod}";
+ $current_context = $real_mod;
+ } else {
+ $display_name = !empty($req_module)
+ ? $req_module
+ : ($req_do ?:
+ "index");
+ $current_context = $display_name;
+ }
+
+ $stat =
+ "
[{$display_name}]" .
+ ($action
+ ? "
→ {$action}"
+ : "");
+
+ if (!empty(self::$template_stack)) {
+ $tpls = array_unique(self::$template_stack);
+
+ // Ищем целевой шаблон (Target)
+ $target = "";
+ foreach ($tpls as $t) {
+ $pure = str_replace(".tpl", "", $t);
+ // Ищем совпадение с экшеном или именем модуля
+ if (
+ $pure == $action ||
+ $pure == $current_context ||
+ ($current_context == "sysblocks" &&
+ $pure == "start")
+ ) {
+ $target = $t;
+ break;
+ }
+ }
+
+ if (!$target) {
+ $rev = array_reverse($tpls);
+ foreach ($rev as $t) {
+ if (
+ !in_array($t, [
+ "main.tpl",
+ "cp_links.tpl",
+ "header.tpl",
+ "footer.tpl",
+ ])
+ ) {
+ $target = $t;
+ break;
+ }
+ }
+ }
+
+ $stack_output = [];
+ foreach ($tpls as $t) {
+ if ($t === $target) {
+ $stack_output[] = "
{$t}";
+ } else {
+ $stack_output[] = "
{$t}";
+ }
+ }
+ $stat .=
+ " | " .
+ implode(
+ '
→ ',
+ $stack_output,
+ );
+ }
+ 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);
+ } elseif ($type == "post") {
+ var_dump($_POST);
+ } elseif ($type == "request") {
+ var_dump($_REQUEST);
+ } elseif ($type == "files") {
+ var_dump($_FILES);
+ } elseif ($type == "cookie") {
+ var_dump($_COOKIE);
+ } elseif ($type == "session") {
+ var_dump($_SESSION);
+ } elseif ($type == "server") {
+ var_dump($_SERVER);
+ } elseif ($type == "env") {
+ var_dump($_ENV);
+ } elseif ($type == "globals") {
+ var_dump($GLOBALS);
+ } elseif ($type == "blocks") {
+ if (isset($GLOBALS["block_generate"])) {
+ var_dump($GLOBALS["block_generate"]);
+ }
+ }
+ $stat = ob_get_contents();
+ $stat = preg_replace('/=>(\s+|\s$)/', " => ", $stat);
+ $stat = htmlspecialchars($stat);
+ $stat = preg_replace(
+ "/(=>)/",
+ '
$1',
+ $stat,
+ );
+ $stat =
+ '
' .
+ $stat .
+ "
";
+
+ 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=",
+ ];
+
+ // ИСПРАВЛЕНИЕ : Безопасно получаем 'id' из $_REQUEST
+ $doc = get_document($_REQUEST["id"] ?? "");
+
+ $_edit = [];
+
+ // ИСПРАВЛЕНИЕ : Проверяем, что $doc содержит данные и нужные ключи
+ if (!empty($doc) && isset($doc["Id"], $doc["rubric_id"])) {
+ $_edit["DOC"][$doc["Id"]] = $_arr["DOC"] . $doc["Id"];
+ $_edit["RUBRIC"][$doc["rubric_id"]] =
+ $_arr["RUBRIC"] . $doc["rubric_id"];
+ }
+
+ // ИСПРАВЛЕНИЕ : Проверяем, что $GLOBALS['block_generate'] существует и является массивом/объектом
+ if (
+ isset($GLOBALS["block_generate"]) &&
+ (is_array($GLOBALS["block_generate"]) ||
+ $GLOBALS["block_generate"] instanceof Traversable)
+ ) {
+ foreach ($GLOBALS["block_generate"] as $k => $v) {
+ if (!in_array($k, array_keys($_arr))) {
+ continue;
+ }
+
+ // Защита внутреннего цикла
+ if (is_array($v) || $v instanceof Traversable) {
+ 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;
+ }
+
+ /**
+ * Вывод отладочной информации
+ * Поддерживает режимы: off, full, tpl
+ * * @param string|null $force_mode Принудительный режим
+ * @return string
+ */
+ public static function displayInfo($force_mode = null): string
+ {
+ global $AVE_DB;
+
+ // 1. ОПРЕДЕЛЕНИЕ РЕЖИМА (Паблик vs Админка)
+ if ($force_mode !== null) {
+ $mode = $force_mode;
+ } elseif (defined("ACP") && defined("PROFILING_ADMIN")) {
+ // Режим для панели управления
+ $mode = PROFILING_ADMIN;
+ } elseif (defined("PROFILING")) {
+ // Режим для публичной части
+ $mode = PROFILING;
+ } else {
+ $mode = "off";
+ }
+
+ // 2. ЕСЛИ ВЫКЛЮЧЕНО
+ if ($mode === "off" || $mode === false || $mode === "0") {
+ return "";
+ }
+
+ // 3. РЕЖИМ ТОЛЬКО ШАБЛОН (Минималистичный вывод)
+ if ($mode === "tpl") {
+ return '
+
+ ' .
+ self::getStatistic("template") .
+ '
+
';
+ }
+
+ // 4. РЕЖИМ FULL (Твой стандартный дебаг-бар)
+ $out = PHP_EOL;
+ $out .= '
';
+ $out .= PHP_EOL;
+ $out .=
+ '';
+ $out .= PHP_EOL;
+ $out .= '';
+ $out .= PHP_EOL;
+ $out .= '
';
+ $out .= PHP_EOL;
+ $out .= '
- Timers
@@ -1089,131 +1300,179 @@ public static function getDocumentInfo ()
- Edit
';
- $out .= PHP_EOL;
- $out .= '
' . PHP_EOL;
- $out .= 'Time generation: ' . self::getStatistic('time') . ' sec';
- $out .= '
';
- $out .= 'Memory usage: ' . self::getStatistic('memory');
- $out .= '
';
- $out .= 'Memory peak usage: ' . self::getStatistic('peak');
- $out .= '
';
- $out .= 'Real SQL Queries: ' . $AVE_DB->DBProfilesGet('count') . ' for ' . $AVE_DB->DBProfilesGet('time') . ' sec';
- $out .= '
';
- $out .= 'All SQL Queries: ' . (is_array($AVE_DB->_query_list) || $AVE_DB->_query_list instanceof Countable ? count($AVE_DB->_query_list) : 0);
- $out .= '
';
+ $out .= PHP_EOL;
+ $out .=
+ '
' .
+ PHP_EOL;
- $out .= PHP_EOL;
+ // Выводим имя шаблона в первой вкладке
+ $out .=
+ "
Template: " .
+ self::getStatistic("template") .
+ "";
- $out .= '
' . PHP_EOL;
- $out .= 'Blocks:';
- $out .= self::getStatistic('blocks');
- $out .= '
';
+ $out .= "Time generation: " . self::getStatistic("time") . " sec";
+ $out .= "
";
+ $out .= "Memory usage: " . self::getStatistic("memory");
+ $out .= "
";
+ $out .= "Memory peak usage: " . self::getStatistic("peak");
+ $out .= "
";
+ $out .=
+ "Real SQL Queries: " .
+ $AVE_DB->DBProfilesGet("count") .
+ " for " .
+ $AVE_DB->DBProfilesGet("time") .
+ " sec";
+ $out .= "
";
+ $out .=
+ "All SQL Queries: " .
+ (is_array($AVE_DB->_query_list) ||
+ $AVE_DB->_query_list instanceof Countable
+ ? count($AVE_DB->_query_list)
+ : 0);
+ $out .= "
";
- $out .= PHP_EOL;
+ $out .= PHP_EOL;
- $out .= '
' . PHP_EOL;
- $out .= 'GET:';
- $out .= self::getStatistic('get');
- $out .= '
';
+ $out .=
+ '
' .
+ PHP_EOL;
+ $out .= "Blocks:";
+ $out .= self::getStatistic("blocks");
+ $out .= "
";
- $out .= PHP_EOL;
+ $out .= PHP_EOL;
- $out .= '
' . PHP_EOL;
- $out .= 'POST:';
- $out .= self::getStatistic('post');
- $out .= '
';
+ $out .=
+ '
' .
+ PHP_EOL;
+ $out .= "GET:";
+ $out .= self::getStatistic("get");
+ $out .= "
";
- $out .= PHP_EOL;
+ $out .= PHP_EOL;
- $out .= '
' . PHP_EOL;
- $out .= 'REQUEST:';
- $out .= self::getStatistic('request');
- $out .= '
';
+ $out .=
+ '
' .
+ PHP_EOL;
+ $out .= "POST:";
+ $out .= self::getStatistic("post");
+ $out .= "
";
- $out .= PHP_EOL;
+ $out .= PHP_EOL;
- $out .= '
' . PHP_EOL;
- $out .= 'FILES:';
- $out .= self::getStatistic('files');
- $out .= '
';
+ $out .=
+ '
' .
+ PHP_EOL;
+ $out .= "REQUEST:";
+ $out .= self::getStatistic("request");
+ $out .= "
";
- $out .= PHP_EOL;
+ $out .= PHP_EOL;
- $out .= '
' . PHP_EOL;
- $out .= 'COOKIE:';
- $out .= self::getStatistic('cookie');
- $out .= '
';
+ $out .=
+ '
' .
+ PHP_EOL;
+ $out .= "FILES:";
+ $out .= self::getStatistic("files");
+ $out .= "
";
- $out .= PHP_EOL;
+ $out .= PHP_EOL;
- $out .= '
' . PHP_EOL;
- $out .= 'SESSION:';
- $out .= self::getStatistic('session');
- $out .= '
';
+ $out .=
+ '
' .
+ PHP_EOL;
+ $out .= "COOKIE:";
+ $out .= self::getStatistic("cookie");
+ $out .= "
";
- $out .= PHP_EOL;
+ $out .= PHP_EOL;
- $out .= '
' . PHP_EOL;
- $out .= 'SERVER:';
- $out .= self::getStatistic('server');
- $out .= '
';
+ $out .=
+ '
' .
+ PHP_EOL;
+ $out .= "SESSION:";
+ $out .= self::getStatistic("session");
+ $out .= "
";
- $out .= PHP_EOL;
+ $out .= PHP_EOL;
- $out .= '
' . PHP_EOL;
- $out .= 'ENV:';
- $out .= self::getStatistic('env');
- $out .= '
';
+ $out .=
+ '
' .
+ PHP_EOL;
+ $out .= "SERVER:";
+ $out .= self::getStatistic("server");
+ $out .= "
";
- $out .= PHP_EOL;
+ $out .= PHP_EOL;
- $out .= '
' . PHP_EOL;
- $out .= self::getStatistic('globals');
- $out .= '
';
+ $out .=
+ '
' .
+ PHP_EOL;
+ $out .= "ENV:";
+ $out .= self::getStatistic("env");
+ $out .= "
";
- $out .= PHP_EOL;
- $out .= '
' . PHP_EOL;
- $out .= $AVE_DB->DBProfilesGet('list');
- $out .= '
';
+ $out .= PHP_EOL;
- $out .= PHP_EOL;
- $out .= '
' . PHP_EOL;
- $out .= $AVE_DB->showAllQueries();
- $out .= '
';
+ $out .=
+ '
' .
+ PHP_EOL;
+ $out .= self::getStatistic("globals");
+ $out .= "
";
- $out .= PHP_EOL;
- $out .= '
' . PHP_EOL;
- $out .= implode('', self::$_debug);
- $out .= '
';
+ $out .= PHP_EOL;
+ $out .=
+ '
' .
+ PHP_EOL;
+ $out .= $AVE_DB->DBProfilesGet("list");
+ $out .= "
";
- $out .= PHP_EOL;
- $out .= '
' . PHP_EOL;
- $out .= self::getDocumentInfo();
- $out .= '
';
+ $out .= PHP_EOL;
+ $out .=
+ '
' .
+ PHP_EOL;
+ $out .= $AVE_DB->showAllQueries();
+ $out .= "
";
- $out .= PHP_EOL;
- $out .= '
';
+ $out .= PHP_EOL;
+ $out .=
+ '
' .
+ PHP_EOL;
+ $out .= implode("", self::$_debug);
+ $out .= "
";
- return $out;
- }
+ $out .= PHP_EOL;
+ $out .=
+ '
' .
+ PHP_EOL;
+ $out .= self::getDocumentInfo();
+ $out .= "
";
- /**
- * @return string
- */
- public static function displayInfoLight (): string
- {
- global $AVE_DB;
+ $out .= PHP_EOL;
+ $out .= "
';
- $out .= PHP_EOL;
- $out .= '';
- $out .= PHP_EOL;
- $out .= '';
- $out .= PHP_EOL;
- $out .= '
';
- $out .= PHP_EOL;
- $out .= '
+ return $out;
+ }
+
+ /**
+ * @return string
+ */
+ public static function displayInfoLight(): string
+ {
+ global $AVE_DB;
+
+ $out = PHP_EOL;
+ $out .= '
';
+ $out .= PHP_EOL;
+ $out .=
+ '';
+ $out .= PHP_EOL;
+ $out .= '';
+ $out .= PHP_EOL;
+ $out .= '
- Timers
@@ -1223,44 +1482,67 @@ public static function getDocumentInfo ()
- Document
';
- $out .= PHP_EOL;
- $out .= '
' . PHP_EOL;
- $out .= 'Time generation: ' . self::getStatistic('time') . ' sec';
- $out .= '
';
- $out .= 'Memory usage: ' . self::getStatistic('memory');
- $out .= '
';
- $out .= 'Memory peak usage: ' . self::getStatistic('peak');
- $out .= '
';
- $out .= 'Real SQL Queries: ' . $AVE_DB->DBProfilesGet('count') . ' for ' . $AVE_DB->DBProfilesGet('time') . ' sec';
- $out .= '
';
- $out .= 'All SQL Queries: ' . (is_array($AVE_DB->_query_list) || $AVE_DB->_query_list instanceof Countable ? count($AVE_DB->_query_list) : 0);
- $out .= '
';
+ $out .= PHP_EOL;
+ $out .=
+ '
' .
+ PHP_EOL;
+ $out .= "Time generation: " . self::getStatistic("time") . " sec";
+ $out .= "
";
+ $out .= "Memory usage: " . self::getStatistic("memory");
+ $out .= "
";
+ $out .= "Memory peak usage: " . self::getStatistic("peak");
+ $out .= "
";
+ $out .=
+ "Real SQL Queries: " .
+ $AVE_DB->DBProfilesGet("count") .
+ " for " .
+ $AVE_DB->DBProfilesGet("time") .
+ " sec";
+ $out .= "
";
+ $out .=
+ "All SQL Queries: " .
+ (is_array($AVE_DB->_query_list) ||
+ $AVE_DB->_query_list instanceof Countable
+ ? count($AVE_DB->_query_list)
+ : 0);
+ $out .= "
";
- $out .= PHP_EOL;
- $out .= '
' . PHP_EOL;
- $out .= 'Blocks:';
- $out .= self::getStatistic('blocks');
- $out .= '
';
+ $out .= PHP_EOL;
+ $out .=
+ '
' .
+ PHP_EOL;
+ $out .= "Blocks:";
+ $out .= self::getStatistic("blocks");
+ $out .= "
";
- $out .= PHP_EOL;
- $out .= '
' . PHP_EOL;
- $out .= '
' . htmlspecialchars(self::$_document_content) . '
';
- $out .= '
';
+ $out .= PHP_EOL;
+ $out .=
+ '
' .
+ PHP_EOL;
+ $out .=
+ "
" .
+ htmlspecialchars(self::$_document_content) .
+ "
";
+ $out .= "
";
- $out .= PHP_EOL;
- $out .= '
' . PHP_EOL;
- $out .= implode('', self::$_debug);
- $out .= '
';
+ $out .= PHP_EOL;
+ $out .=
+ '
' .
+ PHP_EOL;
+ $out .= implode("", self::$_debug);
+ $out .= "
";
- $out .= PHP_EOL;
- $out .= '
' . PHP_EOL;
- $out .= self::getDocumentInfo();
- $out .= '
';
+ $out .= PHP_EOL;
+ $out .=
+ '
' .
+ PHP_EOL;
+ $out .= self::getDocumentInfo();
+ $out .= "
";
- $out .= PHP_EOL;
- $out .= '