271 lines
7.2 KiB
PHP
271 lines
7.2 KiB
PHP
<?php namespace ProcessWire; if(!defined("PROCESSWIRE")) die(); ?>
|
|
|
|
<p><a id="debug_toggle" href="#debug"><i class='fa fa-cog'></i> <?php echo __('Debug Mode Tools', __FILE__); ?></a></p>
|
|
|
|
<div id="debug">
|
|
|
|
<div class="container">
|
|
<h3><a href='#'><?php echo __('Pages Loaded', __FILE__); ?></a></h3>
|
|
<div>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>ID</th>
|
|
<th>Path</th>
|
|
<th>Title</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<?php
|
|
foreach($pages->getCache() as $p) {
|
|
echo "\n<tr><td>$p->id</td><td>$p->path</td><td>$p->title</td></tr>";
|
|
}
|
|
?>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="container">
|
|
<h3><a href='#'><?php echo __('API Variables', __FILE__); ?></a></h3>
|
|
<div>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th>
|
|
<th>Class</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<?php
|
|
foreach($fuel as $key => $value) {
|
|
if(!is_object($value)) continue;
|
|
echo "\n<tr><td><a target='_blank' href='http://processwire.com/api/variables/$key/'>\$$key</a></td>" .
|
|
"<td>" . get_class($value) . "</td></tr>";
|
|
}
|
|
?>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="container">
|
|
<h3><a href='#'><?php echo __('Session', __FILE__); ?></a></h3>
|
|
<div>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Key</th>
|
|
<th>Value</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<?php
|
|
foreach($session as $key => $value) {
|
|
if(is_object($value)) $value = (string) $value;
|
|
if(is_array($value)) $value = print_r($value, true);
|
|
echo "<tr><td>$key</td><td><pre>" . $sanitizer->entities($value) . "</pre></td></tr>";
|
|
}
|
|
?>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="container">
|
|
<h3><a href='#'><?php echo __('Modules Loaded', __FILE__); ?></a></h3>
|
|
<div>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Class</th>
|
|
<th>Version</th>
|
|
<th>Title</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<?php
|
|
$numLoaded = 0;
|
|
$numSkipped = 0;
|
|
foreach($modules as $module) {
|
|
if($module instanceof ModulePlaceholder) {
|
|
$numSkipped++;
|
|
continue;
|
|
}
|
|
$numLoaded++;
|
|
$info = $modules->getModuleInfo($module, array('verbose' => false));
|
|
echo "<tr>";
|
|
echo "<td>$info[name]</td>";
|
|
echo "<td>$info[version]</td>";
|
|
echo "<td>$info[title]</td>";
|
|
echo "</tr>";
|
|
}
|
|
?>
|
|
</tbody>
|
|
</table>
|
|
<p class='description'><?php echo
|
|
sprintf(__('%d modules loaded', __FILE__), $numLoaded) . ' / ' .
|
|
sprintf(__('%d not loaded', __FILE__), $numSkipped);
|
|
?></p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="container">
|
|
<h3><a href='#'><?php echo __('Hooks', __FILE__); ?></a></h3>
|
|
<div>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>When</th>
|
|
<th>Method::object</th>
|
|
<th>Visited by</th>
|
|
<th>Type</th>
|
|
<th>Priority</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<?php
|
|
$hooks = array_merge($this->wire()->getHooks('*'), Wire::$allLocalHooks);
|
|
ksort($hooks);
|
|
foreach($hooks as $key => $hook) {
|
|
$suffix = $hook['options']['type'] == 'method' ? '()' : '';
|
|
$toObject = !empty($hook['toObject']) ? $hook['toObject'] : '';
|
|
$toMethod = $hook['toMethod'];
|
|
if(is_callable($toMethod)) $toMethod = 'anonymous function';
|
|
echo "<tr>";
|
|
echo "<td>" . ($hook['options']['before'] ? 'before ' : '') . ($hook['options']['after'] ? 'after' : '') . "</td>";
|
|
echo "<td>" . ($hook['options']['fromClass'] ? $hook['options']['fromClass'] . '::' : '') . "$hook[method]$suffix</td>";
|
|
echo "<td>" . ($toObject ? "$toObject::$toMethod" : $toMethod) . "()</td>";
|
|
echo "<td>" . ($hook['options']['allInstances'] || $hook['options']['fromClass'] ? "class " : "instance ") . $hook['options']['type'] . "</td>";
|
|
echo "<td>" . $hook['options']['priority'] . "</td>";
|
|
echo "</tr>";
|
|
}
|
|
?>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="container">
|
|
<h3><a href='#'><?php echo __('PDO Queries ($database)', __FILE__); ?></a></h3>
|
|
<div>
|
|
<table>
|
|
<tbody>
|
|
<?php foreach(WireDatabasePDO::getQueryLog() as $n => $sql) echo "\n<tr><th>$n</th><td>$sql</td></tr>"; ?>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="container">
|
|
<h3><a href='#'><?php echo __('Timers', __FILE__); ?></a></h3>
|
|
<div>
|
|
<table>
|
|
<tbody>
|
|
<?php
|
|
$timers = Debug::getSavedTimers();
|
|
foreach($timers as $name => $timer) echo "\n<tr><th>$name</th><td>$timer</td></tr>"; ?>
|
|
</tbody>
|
|
</table>
|
|
<p class='description'>To add more timers here…</p>
|
|
<pre>
|
|
Debug::timer('timer-name'); // start timer, you make up the name
|
|
execute_some_code(); // any amount of code you want to time
|
|
Debug::saveTimer('timer-name', 'optional notes'); // stop and save timer
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
|
|
<?php if($db->isInstantiated()): ?>
|
|
<div class="container">
|
|
<h3><a href='#'><?php echo __('MySQLi Queries ($db) - Deprecated', __FILE__); ?></a></h3>
|
|
<div>
|
|
<?php
|
|
$queries = Database::getQueryLog();
|
|
if(count($queries)): ?>
|
|
<p>Mysqli was instantiated and queries were made. These should ideally be converted to PDO ($database). Here are the queries:</p>
|
|
<table>
|
|
<tbody>
|
|
<?php foreach($queries as $n => $sql) echo "\n<tr><th>$n</th><td>$sql</td></tr>"; ?>
|
|
</tbody>
|
|
</table>
|
|
<?php else: ?>
|
|
<p>Mysqli was instantiated but no queries executed. Here are the callers that should be converted to PDO:</p>
|
|
<ul><?php foreach($db->getCallers() as $n => $caller) echo "<li>" . ($n+1) . ". $caller</li>"; ?></ul>
|
|
<?php
|
|
endif;
|
|
unset($queries);
|
|
?>
|
|
</div>
|
|
</div>
|
|
<?php endif; ?>
|
|
|
|
<div class="container">
|
|
<h3><a href='#'><?php echo __('User', __FILE__); ?> (<?php echo $user->name;?>)</a></h3>
|
|
<div>
|
|
<h4><?php echo __('Current User Roles', __FILE__); ?></h4>
|
|
<ol>
|
|
<?php foreach($user->roles as $role) echo "\n<li>{$role->name}</li>"; ?>
|
|
</ol>
|
|
<h4><?php echo __('Current User Permissions', __FILE__); ?></h4>
|
|
<ol>
|
|
<?php foreach($user->getPermissions() as $permission) echo "\n<li>{$permission->name}</li>"; ?>
|
|
</ol>
|
|
<h4><?php echo __('Current User Permissions on this page', __FILE__); ?></h4>
|
|
<ol>
|
|
<?php foreach($user->getPermissions($page) as $permission) echo "\n<li>{$permission->name}</li>"; ?>
|
|
</ol>
|
|
</div>
|
|
</div>
|
|
|
|
<?php
|
|
foreach(array('get', 'post', 'cookie') as $type):
|
|
$i = $input->$type;
|
|
if(!count($i)) continue;
|
|
?>
|
|
<div class="container">
|
|
<h3><a href='#'>$input-><?php echo $type; ?></a></h3>
|
|
<div>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Key</th>
|
|
<th>Value</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<?php
|
|
foreach($i as $key => $value) {
|
|
if(is_array($value)) $value = print_r($value, true);
|
|
echo "<tr><td>" . $sanitizer->entities($key) . "</td><td><pre>" . $sanitizer->entities($value) . "</pre></td></tr>";
|
|
}
|
|
?>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<?php endforeach; ?>
|
|
|
|
|
|
</div>
|
|
|
|
<script type="text/javascript">
|
|
$(document).ready(function() {
|
|
$("#debug").accordion({
|
|
header: 'h3',
|
|
heightStyle: 'content'
|
|
}).hide();
|
|
$("#debug_toggle").click(function() {
|
|
if ($('#debug').is(":hidden"))
|
|
$("#debug").slideDown();
|
|
else
|
|
$("#debug").slideUp();
|
|
var n = $(document).height();
|
|
$('html, body').animate({ scrollTop: n },'50');
|
|
return false;
|
|
});
|
|
});
|
|
</script>
|
|
|