Debug should be a plugin not a core feature for now. See #14772.

git-svn-id: https://develop.svn.wordpress.org/trunk@16042 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Peter Westwood 2010-10-28 08:48:52 +00:00
parent 20c34b481c
commit c3a0a1919b
2 changed files with 0 additions and 171 deletions

View File

@ -11,7 +11,6 @@ class WP_Admin_Bar {
/* Only load super admin menu code if the logged in user is a super admin */
if ( is_super_admin() ) {
require( ABSPATH . WPINC . '/admin-bar/admin-bar-debug.php' );
require( ABSPATH . WPINC . '/admin-bar/admin-bar-superadmin.php' );
}

View File

@ -1,170 +0,0 @@
<?php
/***
* Debug Functions
*
* When logged in as a super admin, these functions will run to provide
* debugging information when specific super admin menu items are selected.
*
* They are not used when a regular user is logged in.
*/
function wp_admin_bar_debug_menu() {
global $wp_admin_bar, $wpdb;
if ( ! is_super_admin() || ! apply_filters('wp_admin_bar_enable_debug_menu', false ) )
return;
$queries = $wpdb->num_queries;
$seconds = timer_stop();
/* Add the main siteadmin menu item */
$wp_admin_bar->add_menu( array( 'id' => 'queries', 'title' => "{$queries}q/{$seconds}", 'href' => 'javascript:toggle_query_list()', 'meta' => array( 'class' => 'ab-sadmin' ) ) );
}
add_action( 'wp_before_admin_bar_render', 'wp_admin_bar_debug_menu', 1000 );
function wp_admin_bar_query_debug_list() {
global $wpdb, $wp_object_cache;
if ( !is_super_admin() )
return false;
$debugs = array();
if ( defined('SAVEQUERIES') && SAVEQUERIES )
$debugs['wpdb'] = array( __('Queries'), 'wp_admin_bar_debug_queries' );
if ( is_object($wp_object_cache) && method_exists($wp_object_cache, 'stats') )
$debugs['object-cache'] = array( __('Object Cache'), 'wp_admin_bar_debug_object_cache' );
$debugs = apply_filters( 'wp_admin_bar_debugs_list', $debugs );
if ( empty($debugs) )
return;
?>
<script type="text/javascript">
/* <![CDATA[ */
var toggle_query_list = function() {
var querylist = document.getElementById( 'querylist' );
if( querylist && querylist.style.display == 'block' ) {
querylist.style.display='none';
} else {
querylist.style.display='block';
}
}
var clickDebugLink = function( targetsGroupId, obj) {
var sectionDivs = document.getElementById( targetsGroupId ).childNodes;
for ( var i = 0; i < sectionDivs.length; i++ ) {
if ( 1 != sectionDivs[i].nodeType ) {
continue;
}
sectionDivs[i].style.display = 'none';
}
document.getElementById( obj.href.substr( obj.href.indexOf( '#' ) + 1 ) ).style.display = 'block';
for ( var i = 0; i < obj.parentNode.parentNode.childNodes.length; i++ ) {
if ( 1 != obj.parentNode.parentNode.childNodes[i].nodeType ) {
continue;
}
obj.parentNode.parentNode.childNodes[i].removeAttribute( 'class' );
}
obj.parentNode.setAttribute( 'class', 'current' );
return false;
};
/* ]]> */
</script>
<div align='left' id='querylist'>
<h1>Debugging blog #<?php echo $GLOBALS['blog_id']; ?> on <?php echo php_uname( 'n' ); ?></h1>
<div id="debug-status">
<p class="left"></p>
<p class="right">PHP Version: <?php echo phpversion(); ?></p>
</div>
<ul class="debug-menu-links">
<?php $current = ' class="current"'; foreach ( $debugs as $debug => $debug_output ) : ?>
<li<?php echo $current; ?>><a id="debug-menu-link-<?php echo $debug; ?>" href="#debug-menu-target-<?php echo $debug; ?>" onclick="try { return clickDebugLink( 'debug-menu-targets', this ); } catch (e) { return true; }"><?php echo $debug_output[0] ?></a></li>
<?php $current = ''; endforeach; ?>
</ul>
<div id="debug-menu-targets">
<?php $current = ' style="display: block"'; foreach ( $debugs as $debug => $debug_output ) : ?>
<div id="debug-menu-target-<?php echo $debug; ?>" class="debug-menu-target"<?php echo $current; ?>>
<?php echo str_replace( '&nbsp;', '', call_user_func( $debug_output[1] ) ); ?>
</div>
<?php $current = ''; endforeach; ?>
</div>
<?php do_action( 'wp_admin_bar_debug' ); ?>
</div>
<?php
}
add_action( 'wp_after_admin_bar_render', 'wp_admin_bar_query_debug_list' );
function wp_admin_bar_debug_queries() {
global $wpdb;
$queries = array();
$out = '';
$total_time = 0;
if ( !empty($wpdb->queries) ) {
$show_many = isset($_GET['debug_queries']);
if ( $wpdb->num_queries > 500 && !$show_many )
$out .= "<p>There are too many queries to show easily! <a href='" . add_query_arg( 'debug_queries', 'true' ) . "'>Show them anyway</a>.</p>";
$out .= '<ol id="wpd-queries">';
$first_query = 0;
$counter = 0;
foreach ( $wpdb->queries as $q ) {
list($query, $elapsed, $debug) = $q;
$total_time += $elapsed;
if ( !$show_many && ++$counter > 500 )
continue;
$query = nl2br(esc_html($query));
// $dbhname, $host, $port, $name, $tcp, $elapsed
$out .= "<li>$query<br/><div class='qdebug'>$debug <span>#{$counter} (" . number_format(sprintf('%0.1f', $elapsed * 1000), 1, '.', ',') . "ms)</span></div></li>\n";
}
$out .= '</ol>';
} else {
$out .= "<p><strong>There are no queries on this page, you won the prize!!! :)</strong></p>";
}
$query_count = '<h2><span>Total Queries:</span>' . number_format( $wpdb->num_queries ) . "</h2>\n";
$query_time = '<h2><span>Total query time:</span>' . number_format(sprintf('%0.1f', $total_time * 1000), 1) . "ms</h2>\n";
$memory_usage = '<h2><span>Peak Memory Used:</span>' . number_format( memory_get_peak_usage( ) ) . " bytes</h2>\n";
$out = $query_count . $query_time . $memory_usage . $out;
return $out;
}
function wp_admin_bar_debug_object_cache() {
global $wp_object_cache;
ob_start();
echo "<div id='object-cache-stats'>";
$wp_object_cache->stats();
echo "</div>";
$out = ob_get_contents();
ob_end_clean();
return $out;
}
?>