public static function display() { if (!self::isActive()) { return false; } $data_time = time(); $debugger_id = !empty(self::$debugger_cookie) ? self::$debugger_cookie : substr(Session::getId(), 0, 8); $ch_p = array_values(self::$checkpoints); $included_templates = array(); $depth = array(); $d = 0; foreach (Registry::get('view')->template_objects as $k => $v) { if (count(explode('#', $k)) == 1) { continue; } list(, $tpl) = explode('#', $k); if (!empty($v->parent)) { if (property_exists($v->parent, 'template_resource')) { if (empty($depth[$v->parent->template_resource])) { $depth[$v->parent->template_resource] = ++$d; } $included_templates[] = array('filename' => $tpl, 'depth' => $depth[$v->parent->template_resource]); } } } $assigned_vars = Registry::get('view')->tpl_vars; ksort($assigned_vars); $exclude_vars = array('_REQUEST', 'config', 'settings', 'runtime', 'demo_password', 'demo_username', 'empty', 'ldelim', 'rdelim'); foreach ($assigned_vars as $name => $value_obj) { if (in_array($name, $exclude_vars)) { unset($assigned_vars[$name]); } else { $assigned_vars[$name] = $value_obj->value; } } self::$totals['time_page'] = $ch_p[count($ch_p) - 1]['time'] - $ch_p[0]['time']; self::$totals['memory_page'] = ($ch_p[count($ch_p) - 1]['memory'] - $ch_p[0]['memory']) / 1024; self::$totals['count_queries'] = count(self::$queries); self::$totals['count_tpls'] = count($included_templates); $runtime = fn_foreach_recursive(Registry::get('runtime'), '.'); foreach ($runtime as $key => $value) { if (in_array(gettype($value), array('object', 'resource'))) { $runtime[$key] = gettype($value); } } $data = array('request' => array('request' => $_REQUEST, 'server' => $_SERVER, 'cookie' => $_COOKIE), 'config' => array('runtime' => $runtime), 'sql' => array('totals' => array('count' => self::$totals['count_queries'], 'rcount' => 0, 'time' => self::$totals['time_queries']), 'queries' => self::$queries), 'backtraces' => self::$backtraces, 'logging' => self::$checkpoints, 'templates' => array('tpls' => $included_templates, 'vars' => $assigned_vars), 'totals' => self::$totals); $datas = Registry::get('debugger.data'); $datas = is_array($datas) ? $datas : array(); foreach (array_keys($datas) as $id) { foreach (array_keys($datas[$id]) as $time) { if ($time < time() - self::EXPIRE_DEBUGGER) { unset($datas[$id][$time]); } } if (empty($datas[$id])) { unset($datas[$id]); } } $datas[$debugger_id][$data_time] = $data; Registry::set('debugger.data', $datas); Registry::get('view')->assign('debugger_id', $debugger_id); Registry::get('view')->assign('debugger_hash', $data_time); Registry::get('view')->assign('totals', self::$totals); Registry::get('view')->display('views/debugger/debugger.tpl'); return true; }
/** * Convert multi-level array to single-level array * * @param array $item Multi-level array * @param string $delimiter Delimiter name * @return array Single-level array */ function fn_foreach_recursive($item, $delimiter, $name = '', $arr = array()) { if (is_array($item)) { foreach ($item as $key => $value) { $new_key = $name === '' ? $key : $name . $delimiter . $key; $arr = fn_foreach_recursive($value, $delimiter, $new_key, $arr); } } else { $arr[$name] = $item; } return $arr; }
function content_55dc83c80a39d3_28756302($_smarty_tpl) { ?> <div class="deb-tab-content" id="DebugToolbarTabConfigContent"> <div class="deb-sub-tab"> <ul> <li class="active"><a data-sub-tab-id="DebugToolbarSubTabConfigConfig">Config</a></li> <li><a data-sub-tab-id="DebugToolbarSubTabConfigSettings">Settings</a></li> <li><a data-sub-tab-id="DebugToolbarSubTabConfigRuntime">Runtime</a></li> </ul> </div> <div class="deb-sub-tab-content" id="DebugToolbarSubTabConfigConfig"> <table class="deb-table"> <caption>Config</caption> <?php $_smarty_tpl->tpl_vars["value"] = new Smarty_Variable(); $_smarty_tpl->tpl_vars["value"]->_loop = false; $_smarty_tpl->tpl_vars["name"] = new Smarty_Variable(); $_from = fn_foreach_recursive($_smarty_tpl->tpl_vars['config']->value, "."); if (!is_array($_from) && !is_object($_from)) { settype($_from, 'array'); } foreach ($_from as $_smarty_tpl->tpl_vars["value"]->key => $_smarty_tpl->tpl_vars["value"]->value) { $_smarty_tpl->tpl_vars["value"]->_loop = true; $_smarty_tpl->tpl_vars["name"]->value = $_smarty_tpl->tpl_vars["value"]->key; ?> <tr> <td width="200px"><?php echo htmlspecialchars($_smarty_tpl->tpl_vars['name']->value, ENT_QUOTES, 'UTF-8'); ?> </td> <td> <?php if (gettype($_smarty_tpl->tpl_vars['value']->value) == 'boolean') { ?> <pre><code class="php"><?php if ($_smarty_tpl->tpl_vars['value']->value) { ?> true<?php } else { ?> false<?php } ?> </code></pre> <?php } elseif (gettype($_smarty_tpl->tpl_vars['value']->value) == 'NULL') { ?> <pre><code class="php">null</code></pre> <?php } elseif (gettype($_smarty_tpl->tpl_vars['value']->value) == 'object') { ?> <pre><code class="php"><span class="pseudo">Object</span></code></pre> <?php } elseif (gettype($_smarty_tpl->tpl_vars['value']->value) == 'resource') { ?> <pre><code class="php"><span class="pseudo">Resource</span></code></pre> <?php } else { ?> <?php echo htmlspecialchars(strval($_smarty_tpl->tpl_vars['value']->value), ENT_QUOTES, 'UTF-8'); ?> <?php } ?> </td> </tr> <?php } ?> </table> </div> <div class="deb-sub-tab-content" id="DebugToolbarSubTabConfigSettings"> <table class="deb-table"> <caption>Settings</caption> <?php $_smarty_tpl->tpl_vars["value"] = new Smarty_Variable(); $_smarty_tpl->tpl_vars["value"]->_loop = false; $_smarty_tpl->tpl_vars["name"] = new Smarty_Variable(); $_from = fn_foreach_recursive($_smarty_tpl->tpl_vars['settings']->value, "."); if (!is_array($_from) && !is_object($_from)) { settype($_from, 'array'); } foreach ($_from as $_smarty_tpl->tpl_vars["value"]->key => $_smarty_tpl->tpl_vars["value"]->value) { $_smarty_tpl->tpl_vars["value"]->_loop = true; $_smarty_tpl->tpl_vars["name"]->value = $_smarty_tpl->tpl_vars["value"]->key; ?> <tr> <td width="200px"><?php echo htmlspecialchars($_smarty_tpl->tpl_vars['name']->value, ENT_QUOTES, 'UTF-8'); ?> </td> <td> <?php if (gettype($_smarty_tpl->tpl_vars['value']->value) == 'boolean') { ?> <pre><code class="php"><?php if ($_smarty_tpl->tpl_vars['value']->value) { ?> true<?php } else { ?> false<?php } ?> </code></pre> <?php } elseif (gettype($_smarty_tpl->tpl_vars['value']->value) == 'NULL') { ?> <pre><code class="php">null</code></pre> <?php } elseif (gettype($_smarty_tpl->tpl_vars['value']->value) == 'object') { ?> <pre><code class="php"><span class="pseudo">Object</span></code></pre> <?php } elseif (gettype($_smarty_tpl->tpl_vars['value']->value) == 'resource') { ?> <pre><code class="php"><span class="pseudo">Resource</span></code></pre> <?php } else { ?> <?php echo htmlspecialchars(strval($_smarty_tpl->tpl_vars['value']->value), ENT_QUOTES, 'UTF-8'); ?> <?php } ?> </td> </tr> <?php } ?> </table> </div> <div class="deb-sub-tab-content" id="DebugToolbarSubTabConfigRuntime"> <table class="deb-table"> <caption>Runtime</caption> <?php $_smarty_tpl->tpl_vars["value"] = new Smarty_Variable(); $_smarty_tpl->tpl_vars["value"]->_loop = false; $_smarty_tpl->tpl_vars["name"] = new Smarty_Variable(); $_from = fn_foreach_recursive($_smarty_tpl->tpl_vars['data']->value['runtime'], "."); if (!is_array($_from) && !is_object($_from)) { settype($_from, 'array'); } foreach ($_from as $_smarty_tpl->tpl_vars["value"]->key => $_smarty_tpl->tpl_vars["value"]->value) { $_smarty_tpl->tpl_vars["value"]->_loop = true; $_smarty_tpl->tpl_vars["name"]->value = $_smarty_tpl->tpl_vars["value"]->key; ?> <tr> <td width="200px"><?php echo htmlspecialchars($_smarty_tpl->tpl_vars['name']->value, ENT_QUOTES, 'UTF-8'); ?> </td> <td> <?php if (gettype($_smarty_tpl->tpl_vars['value']->value) == 'boolean') { ?> <pre><code class="php"><?php if ($_smarty_tpl->tpl_vars['value']->value) { ?> true<?php } else { ?> false<?php } ?> </code></pre> <?php } elseif (gettype($_smarty_tpl->tpl_vars['value']->value) == 'NULL') { ?> <pre><code class="php">null</code></pre> <?php } elseif (gettype($_smarty_tpl->tpl_vars['value']->value) == 'object' || $_smarty_tpl->tpl_vars['value']->value === 'object') { ?> <pre><code class="php"><span class="pseudo">Object</span></code></pre> <?php } elseif (gettype($_smarty_tpl->tpl_vars['value']->value) == 'resource' || $_smarty_tpl->tpl_vars['value']->value === 'resource') { ?> <pre><code class="php"><span class="pseudo">Resource</span></code></pre> <?php } else { ?> <?php echo htmlspecialchars(strval($_smarty_tpl->tpl_vars['value']->value), ENT_QUOTES, 'UTF-8'); ?> <?php } ?> </td> </tr> <?php } ?> </table> </div> <!--DebugToolbarTabConfigContent--></div><?php }