WordPress.org

Plugin Directory

Changeset 448525


Ignore:
Timestamp:
10/07/11 17:09:03 (3 years ago)
Author:
askapache
Message:

Added to admin bar. Added improved defaults and handling error_reporting changes through register_shutdown_function (very clever code i came up with.)

Location:
askapache-debug-viewer
Files:
50 added
3 edited

Legend:

Unmodified
Added
Removed
  • askapache-debug-viewer/trunk/askapache-debug-viewer.php

    r445850 r448525  
    55 * Description: Displays Advanced Debugging Output 
    66 * Author: AskApache 
    7  * Version: 2.2.2 
     7 * Version: 2.2.3 
    88 * Requires at least: 2.7 
    99 * Access: 10 
     
    784784        0x0008000   =>  array('globalprint',    'Show All GLOBALS') 
    785785    ); 
     786    var $pages = array( 
     787            'home' => array('Settings', 'Setup Debugging Options'), 
     788            'wpconfig' => array('wp-config File', 'Current and recommended wp-config.php file'), 
     789            'phpinfo' => array('PHPINFO', 'phpinfo page detailing php settings'), 
     790            'files' => array('Directory File Browser', 'Browse files and directories') 
     791        ); 
     792    var $page_nonces=array( 
     793            'home' => '', 
     794            'wpconfig' => '', 
     795            'phpinfo' => '', 
     796            'files' => '' 
     797        ); 
     798 
    786799 
    787800 
    788801    /** AA_DEBUG::AA_DEBUG() 
    789802     */ 
    790     function AA_DEBUG() {   return $this->__construct(); } 
     803    //function AA_DEBUG()   {   return $this->__construct(); } 
    791804 
    792805     
     
    809822        $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__); 
    810823        $this->LoadOptions(); 
    811         $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__); 
    812     } 
    813      
    814      
     824        register_shutdown_function(create_function('','$oe='.$this->old_inis['error_reporting'].';$ne='.error_reporting($this->options['error_level']).';error_reporting($oe);')); 
     825        $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__); 
     826    } 
     827     
     828    /** AA_DEBUG::AddHelp($text, $screen) 
     829     */ 
     830    function AddHelp($text, $screen) 
     831    { 
     832        if ( 'settings_page_askapache-debug-viewer' == $screen ) return $text; 
     833         
     834        $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__); 
     835         
     836        $text = '<h4>Fixing Status Headers</h4>'; 
     837        $text .= '<p>For super-advanced users, or those with access and knowledge of Apache <a href="http://www.askapache.com/htaccess/htaccess.html">.htaccess/httpd.conf files</a>'; 
     838        $text .=' you should check that your error pages are correctly returning a <a href="http://www.askapache.com/htaccess/apache-status-code-headers-errordocument.html"><code>404 Not Found</code>'; 
     839        $text .=' HTTP Header</a> and not a <code>200 OK</code> Header which appears to be the default for many WP installs, this plugin attempts to fix this using PHP, but the best way I have found'; 
     840        $text .=' is to add the following to your <a href="http://www.askapache.com/htaccess/htaccess.html">.htaccess</a> file.</p>'; 
     841        $text .= '<pre>ErrorDocument 404 /index.php?error=404'."\n".'Redirect 404 /index.php?error=404</pre>'; 
     842        $text .= '<h5>Comments/Questions</h5><p><strong>Please visit <a href="http://www.askapache.com/">AskApache.com</a> or send me an email at <code>webmaster@askapache.com</code></strong></p>'; 
     843         
     844        $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__); 
     845        return $text; 
     846    } 
    815847     
    816848    /** AA_DEBUG::__destruct() 
     
    835867        foreach($this->ini_overwrites as $k=>$v)$this->old_inis[$k]=@ini_get($k); 
    836868        $this->old_inis['error_reporting']=error_reporting(); 
     869         
     870 
    837871 
    838872        $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__); 
     
    866900 
    867901        $this->options=array( 
     902                             'page'=> 'home', 
    868903                             'logfile' => $this->get_error_log(), 
    869904                             'dirtoexplore' => dirname($this->get_error_log()), 
     
    871906                             'debug_live' => '0', 
    872907                             'admin_footer' => '1', 
    873                              'wp_footer' => '0', 
    874                              'error_reporting' => 4983, 
    875                              'error_level' => 4983, 
     908                             'wp_footer' => '1', 
     909                             'error_reporting' => 2147483647, 
     910                             'error_level' => 2147483647, 
    876911                             'plugin_debug_level' => 0, 
    877                              'debug_mods_verbose' => 0, 
    878                              'debug_mods' => 0 
     912                             'debug_mods_verbose' => 16384, 
     913                             'debug_mods' => 16424 
    879914                            ); 
    880915         
     
    940975        if ( !$user = wp_get_current_user() ) return; 
    941976        add_action("load-{$this->plugin['hook']}", array(&$this, 'Load')); 
    942         add_action("admin_print_styles-{$this->plugin['hook']}", create_function('', 'echo "<style type=\"text/css\"> 
    943                                 #oamsub_'.$this->plugin['pagenice'].' a {background-image:url('.plugins_url("/f/icon-ozh.png",__FILE__).') !important;} 
    944                                 #ozhmenu .ozhmenu_sublevel #oamsub_'.$this->plugin['pagenice'].' a {background-image:url('.plugins_url("/f/icon-ozh.png",__FILE__).') !important;} 
    945                                 #ozhmenu .ozhmenu_sublevel #oamsub_'.$this->plugin['pagenice'].' a {background-image:url('.plugins_url("/f/icon-ozh.png",__FILE__).') !important;} 
    946                                 #adv7_logfile,#adv7_dirtoexplore,#adv7_error_level {width:95%; min-width:400px} 
    947                                 #'.$this->op.' #icon-askapache {background-image:url('.plugins_url("/f/icon-askapache.png",__FILE__).'); } 
    948                                 #'.$this->op.' .icon32 {background:transparent url('.plugins_url("/f/icon-askapache3.png",__FILE__).') no-repeat -16px -16px !important;} 
    949                                 </style>";')); 
     977        add_action("admin_print_styles-{$this->plugin['hook']}", create_function('','wp_enqueue_style("'.$this->plugin['pagenice'].'", "'.plugins_url('/f/admin.css',__FILE__).'", false, "'.$this->plugin['version'].'", "all");')); 
    950978        add_action("admin_print_scripts-{$this->plugin['hook']}",create_function('',' 
    951979                                                                                wp_register_script("'.$this->plugin['pagenice'].'",  
    952980                                                                                                                     "'.plugins_url('/f/admin.js',__FILE__).'",  
    953                                                                                                                      array("jquery","common","wp-lists","postbox","jquery-ui-core","jquery-ui-dialog","jquery-ui-tabs"),  
     981                                                                                                                     array("jquery","common","wp-lists","postbox","jquery-ui-core","jquery-ui-dialog"),  
    954982                                                                                                                     "'.$this->plugin['version'].'",  
    955983                                                                                                                     true);  
    956984                                                                                wp_enqueue_script("'.$this->plugin['pagenice'].'",  
    957985                                                                                                                     "'.plugins_url('/f/admin.js',__FILE__).'",  
    958                                                                                                                      array("jquery","common","wp-lists","postbox","jquery-ui-core","jquery-ui-dialog","jquery-ui-tabs"),  
     986                                                                                                                     array("jquery","common","wp-lists","postbox","jquery-ui-core","jquery-ui-dialog"),  
    959987                                                                                                                     "'.$this->plugin['version'].'",  
    960988                                                                                                                     true);  
    961989                                                                                ' 
    962990                                                                                ));                                                                                                                                                   
    963                                                                                                                                                           
     991        //add_action( 'admin_enqueue_scripts', create_function('','wp_enqueue_style("'.$this->plugin['pagenice'].'", "'.plugins_url('/f/admin.css',__FILE__).'", false, "'.$this->plugin['version'].'", "all");') ); 
    964992        /*add_action("admin_print_scripts-{$this->plugin['hook']}", create_function('', 'echo "<script src=\"'.plugins_url('/f/admin.js',__FILE__).'\" type=\"text/javascript\"></script>";'));*/ 
    965993        //add_action("admin_print_scripts",create_function('','wp_enqueue_script("jquery");')); 
    966         $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__); 
    967     } 
    968      
     994         
     995        foreach ($this->pages as $id => $title) $this->page_nonces[$id]=wp_nonce_url(admin_url("{$this->plugin['action']}&amp;{$this->op}_tab={$id}"), "{$this->op}_tab_{$id}"); 
     996 
     997        $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__); 
     998    } 
     999     
     1000     
     1001     
     1002     
     1003    /** AA_DEBUG::AdminBar() 
     1004     */ 
     1005    function AdminBar($wp_admin_bar) 
     1006    { 
     1007        global $screen,$current_screen, $wp_meta_boxes, $_wp_contextual_help, $title;        
     1008        if(!is_object($wp_admin_bar))return; 
     1009        if(!current_user_can('askapache_debug_viewer')) return; 
     1010         
     1011        $wp_admin_bar->add_menu( array( 'id'  =>$this->op, 'title' => $this->plugin["short-name"], 'href'  => admin_url($this->plugin['action']) ) ); 
     1012         
     1013            foreach ($this->pages as $id => $title) { 
     1014                $wp_admin_bar->add_menu( array( 'parent' =>$this->op, 'title' => $title[1], 'href'  => $this->page_nonces[$id]) ); 
     1015        } 
     1016 
     1017         
     1018    } 
    9691019     
    9701020    /** AA_DEBUG::Load() 
     
    9791029        if(!function_exists('set_current_screen')) aadv_DEFINE_function('set_current_screen'); 
    9801030        if(function_exists('set_current_screen')) set_current_screen($current_screen->id); 
    981  
    982          
     1031         
     1032         
     1033        // Handle page 
     1034        foreach (array_keys($this->pages) as $w) { 
     1035            if (isset($_GET["{$this->op}_tab"]) && $_GET["{$this->op}_tab"] == $w) { 
     1036                check_admin_referer("{$this->op}_tab_" . $w); 
     1037                $this->options['page'] = $w; 
     1038                $this->SaveOptions(); 
     1039                break; 
     1040            } 
     1041        } 
     1042 
    9831043        // parse and handle post requests to plugin 
    9841044        if('POST' === $_SERVER['REQUEST_METHOD']) $this->HandlePost(); 
    985              
    986         // add contextual help 
    987         $help = '<h4>Fixing Status Headers</h4>'; 
    988         $help .= '<p>For super-advanced users, or those with access and knowledge of Apache <a href="http://www.askapache.com/htaccess/htaccess.html">.htaccess/httpd.conf files</a>'; 
    989         $help .=' you should check that your error pages are correctly returning a <a href="http://www.askapache.com/htaccess/apache-status-code-headers-errordocument.html"><code>404 Not Found</code>'; 
    990         $help .=' HTTP Header</a> and not a <code>200 OK</code> Header which appears to be the default for many WP installs, this plugin attempts to fix this using PHP, but the best way I have found'; 
    991         $help .=' is to add the following to your <a href="http://www.askapache.com/htaccess/htaccess.html">.htaccess</a> file.</p>'; 
    992         $help .= '<pre>ErrorDocument 404 /index.php?error=404'."\n".'Redirect 404 /index.php?error=404</pre>'; 
    993         $help .= '<h5>Comments/Questions</h5><p><strong>Please visit <a href="http://www.askapache.com/">AskApache.com</a> or send me an email at <code>webmaster@askapache.com</code></strong></p>'; 
    994         add_contextual_help($this->plugin['hook'], $help); 
     1045         
    9951046 
    9961047        // enqueue css 
    997         wp_enqueue_style($this->plugin['pagenice'], plugins_url('/f/admin.css',__FILE__), array('dashboard','wp-admin'), $this->plugin['version'], 'all'); 
     1048         
    9981049        //wp_register_script( $handle, $src, $deps = array(), $ver = false, $in_footer = false )  
    9991050        //wp_register_script($this->plugin['pagenice'], plugins_url('/f/admin.js',__FILE__), array("jquery","common","wp-lists","postbox","thickbox","jquery-ui-core","jquery-ui-dialog","jquery-ui-tabs"), $this->plugin['version'], true); 
     
    10321083         
    10331084 
    1034         if (isset($_POST["save_debug_options"])) 
     1085        if (isset($_POST["{$this->op}_save_debug_options"])) 
    10351086        { 
    10361087            //if ( !wp_verify_nonce($_POST['_wpnonce'], 'aadebug_settings_form') ) wp_die( '<strong>ERROR</strong>: Incorrect Form Submission, please try again.' ); 
     
    10901141        if(function_exists('screen_icon')) screen_icon(); 
    10911142        echo '<h2>' . $this->plugin['plugin-name'].'</h2>'; 
     1143         
     1144             
     1145 
     1146        echo '<h2>' . $this->pages[$this->options['page']][1] . '</h2>'; 
     1147        echo "<p id=\"{$this->op}_css_menu\">"; 
     1148        foreach ($this->pages as $id => $title) { 
     1149            printf('<a href="%1$s" title="%3$s" class="aa_css_menu_btn">%2$s</a> ', $this->page_nonces[$id], $title[0], $title[1]); 
     1150        } 
     1151        echo '<br class="clear" /></p>'; 
     1152 
     1153 
    10921154 
    10931155        if($this->d(5)) { 
    1094             $this->p($_POST); 
     1156            if($_SERVER['REQUEST_METHOD']=='POST')$this->p($_POST); 
    10951157            $this->p($this->options); 
    10961158        } 
    1097  
    1098         echo '<form action="' . admin_url($this->plugin['action']) . '" method="post" id="'.$this->op.'_form">'; 
    1099         echo '<p style="display:none;"><input type="hidden" id="_' . $this->plugin['nonce'] . '" name="_' . $this->plugin['nonce'] . '" value="' . wp_create_nonce($this->plugin['nonce']) . '" />'; 
    1100         echo '<input type="hidden" name="_wp_http_referer" value="' . (esc_attr($_SERVER['REQUEST_URI'])) . '" /></p>';  
    1101              
    1102              
    1103         echo '<div id="'.$this->op.'-tabs">'; 
    1104             echo '<ul class="hide-if-no-js">'; 
    1105             foreach($this->sections as $section_id => $section_name)printf('<li><a href="#section-%s">%s</a></li>', esc_attr($section_id), $section_name); 
    1106             echo '</ul>'; 
    1107              
    1108             foreach($this->sections as $section_id => $section_name){ 
    1109                 echo "\n".'<div id="section-'.esc_attr($section_id).'" class="'.$this->op.'-section"><h3 class="hide-if-js">'.$section_name.'</h3>'; 
    1110                 $this->{"TAB_$section_id"}(); 
    1111                 echo '</div><!--section-'.$section_id.'-->'."\n"; 
    1112             } 
    1113         echo '</div><!--'.$this->op.'-tabs-->'; 
    1114  
    1115          
    1116          
    1117  
    1118  
    1119  
    1120  
    1121  
    1122         //echo '<h2>AskApache Debugging Options</h2>'; 
    1123         //printf( "<p>UMASK: %04o | DIR: %04o | FILE: %04o ", umask(), (0755 & ~ umask()), (0644 & ~ umask()).'</p>'); 
    1124         //echo '<p><br class="clear" /></p><div class="wrap" style="max-width:1600px;">'; 
    1125          
    1126          
    1127         //echo '<form action="' . $this->plugin['action'] . '" method="post" id="post"><div id="poststuff" class="metabox-holder"><div id="normal-sortables" class="meta-box-sortables ui-sortable" style="position: relative;">'; 
    1128         //echo '<div id="adb'.rand(100,2000).'" class="postbox"><div title="Click to toggle" class="handlediv"><br/></div><h3 class="hndle"><span>Debug Options</span></h3><div class="inside"><fieldset>'; 
    1129  
    1130         //foreach ( $this->wb($this->options['debug_mods']) as $id ) $oa[strtoupper($this->debug_mods[$id][0])] = $this->{'get_debug_'.$this->debug_mods[$id][0]}( in_array($id, $this->wb($this->options['debug_mods_verbose']) ) ? 1 : 0 ); 
    1131          
    1132          
    1133          
    1134  
    1135          
    1136          
    1137          
    1138         /*echo '<div style="padding-left:10px">'; 
    1139            foreach ($this->get_error_levels() as $n=>$v) echo '<p><label for="dl'.$n.'"><input disabled="disabled" type="checkbox" value="'.$v.'" id="dl'.$n.'" name="error_reporting[]"'.$this->_checkedd($v).' /> '.$n.' ('.$v.')</label></p>'; 
    1140            echo '</div><hr />'; 
    1141         */ 
    1142          
    1143          
    1144  
    1145         //wp_nonce_field( 'aadebug_settings_form' ); 
    1146          
    1147         echo '<p class="submit"><input type="submit" class="button-primary" name="save_debug_options" id="save_debug_options" value="Save Changes &raquo;" /></p>'; 
    1148         //echo "<p><a title='Save Changes' href='#' class='{$this->op}submit hide-if-no-js'><em class='aasubmit-button'>Save Changes &raquo;</em></a></p>"; 
    1149         echo '<p class="submit hide-if-js"><input type="submit" class="button-primary" name="'.$this->op.'_action_save" id="'.$this->op.'_action_save" value="Save Changes &raquo; (JS)" />  &nbsp;&nbsp;&nbsp;&nbsp;'; 
    1150         echo '<input type="submit" class="button-primary" name="'.$this->op.'_action_reset" id="'.$this->op.'_action_reset" value="Revert to Defaults &raquo;" /></p>'; 
    1151          
    1152          
    1153          
    1154         echo '<div style="padding-left:10px"><h3>PHP Error Handling Configuration Settings (current|original)</h3><ul style="margin-left:1em;">'; 
    1155         foreach ( array('error_reporting','display_errors','display_startup_errors','log_errors','log_errors_max_len','ignore_repeated_errors','ignore_repeated_source','report_memleaks','track_errors','html_errors','xmlrpc_errors','xmlrpc_error_number','docref_root','docref_ext','error_prepend_string','error_append_string','error_log') as $k)  
     1159        if($this->d(55)) $this->pp(array('plugin' => $this->plugin, 'old_inis' => $this->old_inis)); 
     1160 
     1161 
     1162 
     1163        switch($this->options['page']) 
    11561164        { 
    1157             $v1=@ini_get($k); 
    1158             $v2=@get_cfg_var($k); 
    1159             if(empty($v1) && empty($v2))continue; 
    1160             if($v1 != $v2 && ! empty($v2) ) $v2=' | <tt>'.$v2.'</tt>'; 
    1161             else $v2=''; 
    1162             printf('<li><a href="http://www.php.net/manual/en/errorfunc.configuration.phperrorfunc.configuration.php#%1$s">%1$s</a>: <strong><tt>%2$s</tt></strong>%3$s</li>', $k, $v1, $v2 ); 
    1163         } 
    1164         echo '</ul></div><hr />'; 
    1165  
    1166  
    1167  
    1168  
    1169  
    1170         $e=array();$eany=0; 
    1171         foreach($this->get_error_levels(0,'defined') as $k=>$v) $eany |= $e["$k"]=constant($k); 
    1172  
    1173         printf('<p>Previous error_reporting: <strong>%1$s</strong> - %2$s</p>', intval($this->old_inis['error_reporting']), $this->get_error_levels($this->old_inis['error_reporting'],'error2string')); 
    1174         printf('<p>Current  error_reporting: <strong>%1$s</strong> - %2$s</p>', $eany, $this->get_error_levels($eany,'error2string')); 
    1175          
    1176  
    1177         echo '<ul style="margin-left:1em;">'; 
    1178         foreach($this->get_error_levels(error_reporting(),'enabled') as $k=>$v) echo "<li><strong>{$v[1]} ({$v[0]})</strong>: {$v[2]}</li>";     
    1179         echo '</ul>'; 
    1180          
    1181          
    1182          
    1183         echo '<p>To duplicate the current error_reporting setting in a script:<br /><code>'.$this->get_error_levels(error_reporting(),'enabled_php_code').'</code></p>'; 
    1184          
    1185         echo '<br /><pre>  ; Common Values: 
    1186   ;   E_ALL & ~E_NOTICE  (Show all errors, except for notices and coding standards warnings.) 
    1187   ;   E_ALL & ~E_NOTICE | E_STRICT  (Show all errors, except for notices) 
    1188   ;   E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR  (Show only errors) 
    1189   ;   E_ALL | E_STRICT  (Show all errors, warnings and notices including coding standards.) 
    1190   ; Default Value: E_ALL & ~E_NOTICE 
    1191   ; Development Value: E_ALL | E_STRICT 
    1192   ; Production Value: E_ALL & ~E_DEPRECATED 
    1193   ; http://php.net/error-reporting 
    1194 </pre><hr />'; 
    1195  
    1196  
    1197  
    1198  
    1199         $this->_pls($this->options['dirtoexplore'],1); 
    1200  
    1201          
    1202          
    1203         echo '</form><!--'.$this->op.'_form-->'; 
    1204          
    1205      
    1206         // just a temp solution.. will be cleaned for next release 
    1207         echo "<form style='display: none' method='post' action='" . admin_url($this->plugin['action']) . "' id="."{$this->op}_reset".'"><p>'; 
    1208         echo "<input type='hidden' name='{$this->op}_action_reset' id='{$this->op}_action_reset' value='".wp_create_nonce("{$this->op}_action_reset_nonce")."' /></p></form>"; 
    1209          
    1210          
    1211         if($this->d(55)) $this->pp(array('plugin' => $this->plugin, 'old_inis' => $this->old_inis)); 
    1212          
    1213         echo '</div><!--wrap-->'; 
    1214  
    1215          
    1216         $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__); 
    1217          
    1218     } 
    1219  
    1220  
    1221     /** AA_DEBUG::TAB_config() 
    1222      */ 
    1223     function TAB_config() 
    1224     { 
    1225         $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__); 
    1226         $this->form_field( 2, 'PHP Error Reporting Level', 'error_level', 'PHP Error Reporting Level.' ); 
    1227         $this->form_field( 2, 'Plugin Debug Level (0-100)', 'plugin_debug_level', 'Plugin Debug Level.' ); 
    1228         $this->form_field( 2, 'Error Log File: ', 'logfile', 'Error Log File: ' ); 
    1229         $this->form_field( 2, 'Dir to Explore: ', 'dirtoexplore', 'Dir to Explore: ' ); 
    1230         $this->form_field( 1, '<strong>Log Errors to File</strong>', 'log_errors', 'Log Errors to File' );   
    1231         $this->form_field( 1, '<strong>Enable Live Debugging</strong>', 'debug_live', 'Enable Live Debugging' );     
    1232         $this->form_field( 1, '<strong>View in admin_footer</strong>', 'admin_footer', 'View in admin_footer' );     
    1233         $this->form_field( 1, '<strong>View in wp_footer</strong>', 'wp_footer', 'View in wp_footer' );  
    1234         echo '<hr />'; 
    1235  
    1236  
    1237  
    1238         echo '<div style="padding-left:10px">'; 
    1239             echo '<input type="hidden" name="'.$this->op.'_debug_mods_verbose" id="'.$this->op.'_debug_mods_verbose" value="'.$this->debug_mods_verbose.'" />'; 
    1240             echo '<input type="hidden" name="'.$this->op.'_debug_mods" id="'.$this->op.'_debug_mods" value="'.$this->debug_mods.'" />'; 
    1241              
    1242              
    1243          
    1244         foreach ($this->debug_mods as $id => $info) { 
    1245             echo '<p><label style="float:left;display:block;width:325px;" for="'.$this->op.'_debug_mods">'; 
    1246             echo '<input type="checkbox" value="'.$id.'" id="'.$this->op.'_debug_mods" '; 
    1247             echo 'name="'.$this->op.'_debug_mods[]"'.(( ($id & $this->options['debug_mods'] ) == $id ) ? ' checked="checked"' : '').' /> '.$info[1].'</label>'; 
    1248              
    1249             echo '<label style="float:left;display:block;width:125px;color:#666;" for="'.$this->op.'_debug_mods_verbose">'; 
    1250             echo '<input type="checkbox" value="'.$id.'" id="'.$this->op.'_debug_mods_verbose" '; 
    1251             echo 'name="'.$this->op.'_debug_mods_verbose[]"'.(( ($id & $this->options['debug_mods_verbose'] ) == $id ) ? ' checked="checked"' : '').' /> Verbose</label><br class="clear" /></p>'; 
    1252         } 
    1253         echo '<hr />'; 
    1254         echo '</div><hr />'; 
    1255  
    1256  
    1257         $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__); 
    1258     } 
    1259     /** AA_DEBUG::TAB_logging() 
    1260      */ 
    1261     function TAB_logging() 
    1262     { 
    1263         $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__); 
    1264         //echo '<p><label for="logfile">Error Log File: <input type="text" name="logfile" id="logfile" value="'.$this->options['logfile'].'" size="90" /></label></p>'; 
    1265  
    1266          
    1267         $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__); 
    1268     } 
    1269  
    1270     /** AA_DEBUG::TAB_files() 
    1271      */ 
    1272     function TAB_files() 
    1273     { 
    1274         $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__); 
    1275          
    1276         //$this->form_field( 2, 'Dir to Explore: ', 'dirtoexplore', 'Dir to Explore: ' ); 
    1277  
    1278         //$this->_pls($this->options['dirtoexplore'],1); 
    1279  
    1280         $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__); 
    1281     } 
    1282      
    1283      
    1284      
    1285     /** AA_DEBUG::TAB_phpini() 
    1286      */ 
    1287     function TAB_phpini() 
    1288     { 
    1289         $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__); 
    1290          
    1291          
    1292         $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__); 
    1293     } 
    1294     /** AA_DEBUG::TAB_wpconfig() 
    1295      */ 
    1296     function TAB_wpconfig() 
    1297     { 
    1298         $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__); 
    1299          
    1300         echo '<h3>wp-config.php Settings</h3>'; 
     1165            case 'home': 
     1166 
     1167                echo '<form action="' . admin_url($this->plugin['action']) . '" method="post" id="'.$this->op.'_form">'; 
     1168                echo '<p style="display:none;"><input type="hidden" id="_' . $this->plugin['nonce'] . '" name="_' . $this->plugin['nonce'] . '" value="' . wp_create_nonce($this->plugin['nonce']) . '" />'; 
     1169                echo '<input type="hidden" name="_wp_http_referer" value="' . (esc_attr($_SERVER['REQUEST_URI'])) . '" /></p>';  
     1170                     
     1171                     
     1172                echo '<div id="'.$this->op.'-tabs">'; 
     1173                echo '<div style="padding-left:10px"><h3>PHP Error Handling Configuration Settings (current|original)</h3><ul style="margin-left:1em;">'; 
     1174 
     1175 
     1176                $e=array();$eany=0; 
     1177                foreach($this->get_error_levels(0,'defined') as $k=>$v) $eany |= $e["$k"]=constant($k); 
     1178                printf('<p>Previous error_reporting: <strong>%1$s</strong> - %2$s</p>', intval($this->old_inis['error_reporting']), $this->get_error_levels($this->old_inis['error_reporting'],'error2string')); 
     1179                printf('<p>Current  error_reporting: <strong>%1$s</strong> - %2$s</p>', $eany, $this->get_error_levels($eany,'error2string')); 
     1180 
     1181                foreach ( array('display_errors','display_startup_errors','log_errors','log_errors_max_len','ignore_repeated_errors','ignore_repeated_source','report_memleaks','track_errors','html_errors','xmlrpc_errors','xmlrpc_error_number','docref_root','docref_ext','error_prepend_string','error_append_string','error_log') as $k)  
     1182                { 
     1183                    $v1=@ini_get($k); 
     1184                    $v2=@get_cfg_var($k); 
     1185                    if(empty($v1) && empty($v2))continue; 
     1186                    if($v1 != $v2 && ! empty($v2) ) $v2=' | <tt>'.$v2.'</tt>'; 
     1187                    else $v2=''; 
     1188                    printf('<li><a href="http://www.php.net/manual/en/errorfunc.configuration.phperrorfunc.configuration.php#%1$s">%1$s</a>: <strong><tt>%2$s</tt></strong>%3$s</li>', $k, $v1, $v2 ); 
     1189                } 
     1190                echo '</ul></div><hr />'; 
     1191         
     1192         
     1193                 
     1194         
     1195                echo '<ul style="margin-left:1em;">'; 
     1196                foreach($this->get_error_levels(error_reporting(),'enabled') as $k=>$v) echo "<li><strong>{$v[1]} ({$v[0]})</strong>: {$v[2]}</li>";     
     1197                echo '</ul>'; 
     1198                 
     1199                 
     1200                 
     1201                echo '<p>To duplicate the current error_reporting setting in a script:<br /><code>error_reporting('.$this->get_error_levels($eany,'error2string').');</code></p>'; 
     1202                 
     1203                echo '<br /><pre>  ; Common Values: 
     1204            ;   E_ALL & ~E_NOTICE  (Show all errors, except for notices and coding standards warnings.) 
     1205            ;   E_ALL & ~E_NOTICE | E_STRICT  (Show all errors, except for notices) 
     1206            ;   E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR  (Show only errors) 
     1207            ;   E_ALL | E_STRICT  (Show all errors, warnings and notices including coding standards.) 
     1208            ; Default Value: E_ALL & ~E_NOTICE 
     1209            ; Development Value: E_ALL | E_STRICT 
     1210            ; Production Value: E_ALL & ~E_DEPRECATED 
     1211            ; http://php.net/error-reporting 
     1212        </pre><hr />'; 
     1213             
     1214                $this->form_field( 2, 'PHP Error Reporting Level', 'error_level', 'PHP Error Reporting Level.' ); 
     1215                $this->form_field( 2, 'Plugin Debug Level (0-100)', 'plugin_debug_level', 'Plugin Debug Level.' ); 
     1216                $this->form_field( 2, 'Error Log File: ', 'logfile', 'Error Log File: ' ); 
     1217                $this->form_field( 2, 'Dir to Explore: ', 'dirtoexplore', 'Dir to Explore: ' ); 
     1218                $this->form_field( 1, '<strong>Log Errors to File</strong>', 'log_errors', 'Log Errors to File' );   
     1219                $this->form_field( 1, '<strong>Enable Live Debugging</strong>', 'debug_live', 'Enable Live Debugging' );     
     1220                $this->form_field( 1, '<strong>View in admin_footer</strong>', 'admin_footer', 'View in admin_footer' );     
     1221                $this->form_field( 1, '<strong>View in wp_footer</strong>', 'wp_footer', 'View in wp_footer' );  
     1222                echo '<hr />'; 
     1223         
     1224         
     1225         
     1226                echo '<div style="padding-left:10px">'; 
     1227                    echo '<input type="hidden" name="'.$this->op.'_debug_mods_verbose" id="'.$this->op.'_debug_mods_verbose" value="'.$this->options['debug_mods_verbose'].'" />'; 
     1228                    echo '<input type="hidden" name="'.$this->op.'_debug_mods" id="'.$this->op.'_debug_mods" value="'.$this->options['debug_mods'].'" />'; 
     1229                     
     1230                     
     1231                 
     1232                foreach ($this->debug_mods as $id => $info) { 
     1233                    echo '<p><label style="float:left;display:block;width:325px;" for="'.$this->op.'_debug_mods">'; 
     1234                    echo '<input type="checkbox" value="'.$id.'" id="'.$this->op.'_debug_mods" '; 
     1235                    echo 'name="'.$this->op.'_debug_mods[]"'.(( ($id & $this->options['debug_mods'] ) == $id ) ? ' checked="checked"' : '').' /> '.$info[1].'</label>'; 
     1236                     
     1237                    echo '<label style="float:left;display:block;width:125px;color:#666;" for="'.$this->op.'_debug_mods_verbose">'; 
     1238                    echo '<input type="checkbox" value="'.$id.'" id="'.$this->op.'_debug_mods_verbose" '; 
     1239                    echo 'name="'.$this->op.'_debug_mods_verbose[]"'.(( ($id & $this->options['debug_mods_verbose'] ) == $id ) ? ' checked="checked"' : '').' /> Verbose</label><br class="clear" /></p>'; 
     1240                } 
     1241                echo '<hr />'; 
     1242                echo '</div><hr />'; 
     1243                 
     1244                 
     1245                echo '<p class="submit"><input type="submit" class="button-primary" name="'.$this->op.'_save_debug_options" id="'.$this->op.'_save_debug_options" value="Save Changes &raquo;" /></p>'; 
     1246                echo '<p class="submit"><input type="submit" class="button-primary" name="'.$this->op.'_action_reset" id="'.$this->op.'_action_reset" value="Revert to Defaults &raquo;" /></p>'; 
     1247 
     1248             
     1249                /* 
     1250                    echo '<ul class="hide-if-no-js">'; 
     1251                    foreach($this->sections as $section_id => $section_name)printf('<li><a href="#section-%s">%s</a></li>', esc_attr($section_id), $section_name); 
     1252                    echo '</ul>'; 
     1253                     
     1254                    foreach($this->sections as $section_id => $section_name){ 
     1255                        echo "\n".'<div id="section-'.esc_attr($section_id).'" class="'.$this->op.'-section"><h3 class="hide-if-js">'.$section_name.'</h3>'; 
     1256                        $this->{"TAB_$section_id"}(); 
     1257                        echo '</div><!--section-'.$section_id.'-->'."\n"; 
     1258                    } 
     1259                */ 
     1260                echo '</div><!--'.$this->op.'-tabs-->'; 
     1261                echo '</form><!--'.$this->op.'_form-->'; 
     1262 
     1263            break; 
     1264             
     1265            case 'phpinfo': 
     1266             
     1267                echo '<div id="'.$this->op.'_phpinfo">'; 
     1268                echo $this->get_debug_phpinfo(0); 
     1269                echo '</div>'; 
     1270 
     1271            break; 
     1272     
     1273 
     1274            case 'files': 
     1275             
     1276                 
     1277         
     1278                //echo '<h2>AskApache Debugging Options</h2>'; 
     1279                //printf( "<p>UMASK: %04o | DIR: %04o | FILE: %04o ", umask(), (0755 & ~ umask()), (0644 & ~ umask()).'</p>'); 
     1280                //echo '<p><br class="clear" /></p><div class="wrap" style="max-width:1600px;">'; 
     1281                 
     1282                 
     1283                //echo '<form action="' . $this->plugin['action'] . '" method="post" id="post"><div id="poststuff" class="metabox-holder"><div id="normal-sortables" class="meta-box-sortables ui-sortable" style="position: relative;">'; 
     1284                //echo '<div id="adb'.rand(100,2000).'" class="postbox"><div title="Click to toggle" class="handlediv"><br/></div><h3 class="hndle"><span>Debug Options</span></h3><div class="inside"><fieldset>'; 
     1285         
     1286                //foreach ( $this->wb($this->options['debug_mods']) as $id ) $oa[strtoupper($this->debug_mods[$id][0])] = $this->{'get_debug_'.$this->debug_mods[$id][0]}( in_array($id, $this->wb($this->options['debug_mods_verbose']) ) ? 1 : 0 ); 
     1287                 
     1288                 
     1289                 
     1290         
     1291                 
     1292                 
     1293                 
     1294                /*echo '<div style="padding-left:10px">'; 
     1295                     foreach ($this->get_error_levels() as $n=>$v) echo '<p><label for="dl'.$n.'"><input disabled="disabled" type="checkbox" value="'.$v.'" id="dl'.$n.'" name="error_reporting[]"'.$this->_checkedd($v).' /> '.$n.' ('.$v.')</label></p>'; 
     1296                     echo '</div><hr />'; 
     1297                */ 
     1298                 
     1299                 
     1300         
     1301                //wp_nonce_field( 'aadebug_settings_form' ); 
     1302                 
     1303                $this->_pls($this->options['dirtoexplore'],1); 
     1304     
     1305            break; 
     1306 
     1307             
     1308             
     1309            case 'wpconfig': 
    13011310                /* 
    13021311            if ( ! is_writable(ABSPATH) ) : 
     
    13251334*/ 
    13261335         
    1327         $wp_config=(file_exists(ABSPATH.'wp-config.php')) ? ABSPATH.'wp-config.php' : ( file_exists(dirname(ABSPATH).'/wp-config.php') ? dirname(ABSPATH).'/wp-config.php' : ''); 
    1328         //rtrim($line, "\r\n") . PHP_EOL 
    1329          
    1330         echo "<p>Current Contents of <code>{$wp_config}</code></p>"; 
    1331         echo preg_replace('#color="(.*?)"#', 'style="color:\\1"', str_replace(array('<font ', '</font>'), array('<span ', '</span>'), highlight_string(stripslashes(file_get_contents($wp_config)), true))); 
    1332          
    1333         /* 
    1334         echo '<p>This is just a recommendation, this is not editable. Add this to your wp-config.php at the bottom BEFORE the wp-settings is included.  This is unneccessary if you can modify your php.ini - See my <a href="http://www.askapache.com/wordpress/advanced-wp-config-php-tweaks.html">wp-config.php tutorial</a>.</p>';   
    1335         echo '<textarea class="code" rows="6" cols="70" style="width:90%;">'; 
    1336         ob_start(); 
    1337         echo "\n<?php\n\n!defined('WP_DEBUG') && define('WP_DEBUG', false);\n"; 
    1338         echo "!defined('SAVEQUERIES') && define('SAVEQUERIES', false);\n"; 
    1339         echo "!defined('ACTION_DEBUG') && define('ACTION_DEBUG', false);\n"; 
    1340         echo "!defined('SCRIPT_DEBUG') && define('SCRIPT_DEBUG', false);\n"; 
    1341         echo "!defined('WP_DEBUG_DISPLAY') && define('WP_DEBUG_DISPLAY', false);\n\n"; 
    1342          
    1343         echo "ini_set('display_errors', 'Off');\n"; 
    1344         echo "ini_set('display_startup_errors', 'Off');\n"; 
    1345         echo "ini_set('log_errors', 'Off'); //turn on if you use logs (i do)\n"; 
    1346         echo "ini_set('error_log', dirname(ABSPATH).'/php_error.log'); // set to a non-web-accessible location (above docroot)\n\n?>"; 
    1347         $rec=ob_get_clean(); 
    1348         echo $rec; 
    1349         echo '</textarea>'; 
    1350          
    1351         echo preg_replace('#color="(.*?)"#', 'style="color:\\1"', str_replace(array('<font ', '</font>'), array('<span ', '</span>'), highlight_string(stripslashes($rec), true))); 
    1352         */ 
    1353          
    1354         $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__);      
    1355     } 
    1356  
    1357  
     1336                $wp_config=(file_exists(ABSPATH.'wp-config.php')) ? ABSPATH.'wp-config.php' : ( file_exists(dirname(ABSPATH).'/wp-config.php') ? dirname(ABSPATH).'/wp-config.php' : ''); 
     1337                //rtrim($line, "\r\n") . PHP_EOL 
     1338                 
     1339                echo "<p>Current Contents of <code>{$wp_config}</code></p>"; 
     1340                echo "<div style='border:1px solid #000;padding:5px;width:95%;overflow:hidden;'>"; 
     1341                echo preg_replace('#color="(.*?)"#', 'style="color:\\1"', str_replace(array('<font ', '</font>'), array('<span ', '</span>'), highlight_string(stripslashes(file_get_contents($wp_config)), true))); 
     1342                echo "</div>"; 
     1343                 
     1344                /* 
     1345                echo '<p>This is just a recommendation, this is not editable. Add this to your wp-config.php at the bottom BEFORE the wp-settings is included.  This is unneccessary if you can modify your php.ini - See my <a href="http://www.askapache.com/wordpress/advanced-wp-config-php-tweaks.html">wp-config.php tutorial</a>.</p>';   
     1346                echo '<textarea class="code" rows="6" cols="70" style="width:90%;">'; 
     1347                ob_start(); 
     1348                echo "\n<?php\n\n!defined('WP_DEBUG') && define('WP_DEBUG', false);\n"; 
     1349                echo "!defined('SAVEQUERIES') && define('SAVEQUERIES', false);\n"; 
     1350                echo "!defined('ACTION_DEBUG') && define('ACTION_DEBUG', false);\n"; 
     1351                echo "!defined('SCRIPT_DEBUG') && define('SCRIPT_DEBUG', false);\n"; 
     1352                echo "!defined('WP_DEBUG_DISPLAY') && define('WP_DEBUG_DISPLAY', false);\n\n"; 
     1353                 
     1354                echo "ini_set('display_errors', 'Off');\n"; 
     1355                echo "ini_set('display_startup_errors', 'Off');\n"; 
     1356                echo "ini_set('log_errors', 'Off'); //turn on if you use logs (i do)\n"; 
     1357                echo "ini_set('error_log', dirname(ABSPATH).'/php_error.log'); // set to a non-web-accessible location (above docroot)\n\n?>"; 
     1358                $rec=ob_get_clean(); 
     1359                echo $rec; 
     1360                echo '</textarea>'; 
     1361                 
     1362                echo preg_replace('#color="(.*?)"#', 'style="color:\\1"', str_replace(array('<font ', '</font>'), array('<span ', '</span>'), highlight_string(stripslashes($rec), true))); 
     1363                */ 
     1364            break; 
     1365             
     1366         
     1367        } //endswitch page 
     1368         
     1369         
     1370         
     1371         
     1372         
     1373        echo '</div><!--wrap-->'; 
     1374 
     1375         
     1376        $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__); 
     1377         
     1378    } 
    13581379 
    13591380 
     
    15971618            case 'array' : 
    15981619                $output .= $indent . $var_name . ' '.$method.' Array ('.$nl; 
    1599                 foreach(array_keys($theVar) as $name) $this->print_ra($value=&$theVar[$name], $name, $reference.'["'.$name.'"]', '=', true); 
     1620                foreach(array_keys($theVar) as $name) { 
     1621                                    if($name=='post_content'||$var_name=='post_content'||$name=='post_excerpt'||$var_name=='post_excerpt'||$name=='comment_content'||$var_name=='comment_content')continue; 
     1622                                    else $this->print_ra($value=&$theVar[$name], $name, $reference.'["'.$name.'"]', '=', true); 
     1623                                } 
    16001624                $output .= $indent.')'.$nl; 
    16011625                break; 
     
    16031627            case 'object' : 
    16041628                $output .= $indent.$var_name.' = '.get_class($theVar).' {'.$nl; 
    1605                 foreach($theVar as $name=>$value)$this->print_ra($value, $name, $reference.'->'.$name, '->', true); 
     1629                foreach($theVar as $name=>$value){ 
     1630                                    if($name=='post_content'||$value=='post_content'||$var_name=='post_content'||$name=='post_excerpt'||$value=='post_excerpt'||$var_name=='post_excerpt'||$name=='comment_content'||$var_name=='comment_content'||$value=='comment_content')continue; 
     1631                                    else $this->print_ra($value, $name, $reference.'->'.$name, '->', true); 
     1632                                } 
    16061633                                $output .= $indent.'}'.$nl; 
    16071634              break; 
     
    19251952                    while ($bit > 0) { 
    19261953                        for($i = 0, $n = 0; $i <= $bit; $i = 1 * pow(2, $n), $n++)$end = $i; 
    1927                         $res[] =array($end,$re[]=$this->get_error_levels($end,'error2string'),$els[$end][1]); 
     1954                         
     1955                        if(isset($els[$end])) $res[] =array( 
     1956                                                    $end, 
     1957                                                    $re[]=$this->get_error_levels( 
     1958                                                                                                                $end, 
     1959                                                                                                                'error2string') 
     1960                                                    ,$els[$end][1] ); 
    19281961                        $bit -= $end; 
    19291962                    } 
     
    19561989        if(!$pwuid && $this->_cf('posix_getpwuid')) $pwuid=posix_getpwuid($egid); 
    19571990        if(!$grgid && $this->_cf('posix_getgrgid')) $grgid=posix_getgrgid($euid); 
     1991         
    19581992        $info = array(); 
    19591993        switch ( $type ): 
    1960         case 'group':  $info = ($this->_cf('posix_getgrgid') ? posix_getgrgid( ( (! empty($id)) ? $id : $egid ) ):'');  break; 
    1961         case 'user':  $info = ($this->_cf('posix_getpwuid') ? posix_getpwuid( ( (! empty($id)) ? $id : $euid ) ):'');  break; 
     1994        case 'group':  $info = ($this->_cf('posix_getgrgid') ? posix_getgrgid( $id ):'');  break; 
     1995        case 'user':  $info = ($this->_cf('posix_getpwuid') ? posix_getpwuid( $id ):'');  break; 
    19621996        endswitch; 
    19631997 
     
    19932027        } 
    19942028        closedir( $dir ); 
     2029        sort($files); 
    19952030        return $files; 
    19962031    } 
     
    20132048        if(is_array($fls) && sizeof($fls) >0 && is_dir($folder)) 
    20142049        { 
     2050            echo '<pre>'; 
    20152051            foreach ( $fls as $file ) 
    20162052            { 
    20172053                $fs = $this->_stat( $file ); 
    2018                 $list[] = sprintf( "%10s %04s %06s %'   8s %s %' 15s %s", $fs['human'], $fs['octal'], $fs['decimal'], $fs['owner_name'], $fs['group_name'], $fs['size'] . ' bytes   ', str_replace($folder.'/', '', realpath($file))); 
     2054                //print_r($fs); 
     2055                $list[] = sprintf("%05s %10s %8.8s:%-8s %5s:%-5s %14.14s  %14.14s %15s %-6.6s %-40.40s",$fs['octal'],$fs['human'],$fs['owner_name'], $fs['group_name'], 
     2056                                                    $fs['fileuid'], $fs['filegid'],$fs['modified'], $fs['created'], $fs['size'],'['.$fs['type'].']', str_replace($folder.'/', '', realpath($file))); 
    20192057            } 
    2020             echo '<pre>'; 
    2021             echo join( "\n", array_merge(array($folder), $list) ); 
    2022             //echo join( "\n", array_merge(array($folder . " Listing"), $list) ); 
     2058            echo 'PERMS HUMANPERMS     USER:GROUP      UID:GID   MODIFIED        CREATED             SIZE-BYTES  TYPE  FILENAME'."\n". 
     2059            '============================================================================================================================================='."\n"; 
     2060            echo join( "\n", $list); 
    20232061            echo '</pre>'; 
    20242062        } 
     
    21372175                   'dirname' => dirname($fl), 
    21382176                   'type_octal' => sprintf("%07o", $q), 
    2139                    'type' => $type, 
     2177                   'type' => strtoupper($type), 
    21402178                   'device' => $ss['dev'], 
    21412179                   'device_number' => $ss['rdev'], 
     
    21542192                   'block_size' => $ss['blksize'], 
    21552193 
    2156                    'accessed' => date('Y M D H:i:s', $ss['atime']), 
    2157                    'modified' => date('Y M D H:i:s', $ss['mtime']), 
    2158                    'created' => date('Y M D H:i:s', $ss['ctime']), 
     2194                   'accessed' => date('m/d/y-H:i', $ss['atime']), 
     2195                   'modified' => date('m/d/y-H:i', $ss['mtime']), 
     2196                   'created' => date('m/d/y-H:i', $ss['ctime']), 
    21592197                   'mtime' => $ss['mtime'], 
    21602198                   'atime' => $ss['atime'], 
     
    23922430 
    23932431        global $wp_query,$wp,$wpdb,$wp_rewrites,$wp_object_cache; 
    2394         $return= ( $vb===false ? array('wp_query'=>print_r($wp_query,1)) : array( 
     2432        global $user_email, 
     2433        $wp_admin_bar, 
     2434        $post,$post_ID, 
     2435        $wp_the_query, 
     2436        $user, 
     2437        $current_user, 
     2438        $current_site, 
     2439        $current_blog, 
     2440        $wp_roles,$wp_user_roles, 
     2441        $merged_filters, 
     2442        $wp_filter, 
     2443        $wp_actions, 
     2444        $wp_scripts,$wp_styles, 
     2445        $wp_taxonomies; 
     2446        $return= ( $vb===false ? array( 
     2447                                            'wp_query'=>print_r($wp_query,1)) : array( 
     2448                                            'wp_query'=>$this->print_ra($wp_query), 
     2449                                            'wp_the_query'=>$this->print_ra($wp_the_query), 
    23952450                                            'wp'=>$this->print_ra($wp), 
    23962451                                            'wpdb'=>$this->print_ra($wpdb), 
    2397                                             'wp_query'=>$this->print_ra($wp_query), 
    2398                                             'wp_rewrites'=>$this->print_ra($wp_rewrites) 
    2399                                             )); 
     2452                                            'current_user'=>$this->print_ra($current_user), 
     2453                                            'wp_roles'=>$this->print_ra($wp_roles), 
     2454                                            'wp_user_roles'=>$this->print_ra($wp_user_roles), 
     2455                                            'user'=>$this->print_ra($user), 
     2456                                            'user_data'=>$this->print_ra($user_data), 
     2457                                            'wp_actions'=>$this->print_ra($wp_actions), 
     2458                                            'wp_filter'=>$this->print_ra($wp_filter), 
     2459                                            'merged_filters'=>$this->print_ra($merged_filters), 
     2460                                            'wp_taxonomies'=>$this->print_ra($wp_taxonomies), 
     2461                                            'wp_rewrites'=>$this->print_ra($wp_rewrites), 
     2462                                        ) 
     2463                            ); 
    24002464    //$debugs = array(); 
    24012465    //if ( defined('SAVEQUERIES') && SAVEQUERIES )$debugs['wpdb'] = array( __('Queries'), 'wp_admin_bar_debug_queries' ); 
     
    24312495        if ($wpdb->queries) { 
    24322496            $x = 0; 
    2433             $total_time = timer_stop( false, 22 ); 
     2497            $total_time = (timer_stop( false, 22 ) +1); 
    24342498            $total_query_time = 0; 
    24352499            $class = '';  
     
    24562520        $out1=$out; 
    24572521        $out=''; 
    2458          
     2522        /* 
    24592523        $out .= '<ul>' . "\n"; 
    24602524        $out .= '<li><strong>' . __('Total query time:') . ' ' . number_format_i18n( $total_query_time, 5 ) . __('s for') . ' ' . count($wpdb->queries) . ' ' . __('queries.') . '</strong></li>'; 
     
    24672531        $out .= '<li>' . __('Page generated in'). ' ' . number_format_i18n( $total_time, 5 ) . __('s, ') . $phpper . __('% PHP') . ', ' . $mysqlper . __('% MySQL') . '</li>' . "\n"; 
    24682532        $out .= '</ul>' . "\n"; 
     2533        */ 
    24692534         
    24702535        $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__); 
     
    25752640         
    25762641        global $is_apache, $wp_rewrite, $wp_query; 
     2642        flush_rewrite_rules(); 
    25772643        $oa = array(); 
    25782644         
     
    29833049    /** AA_DEBUG::get_debug_phpinfo() 
    29843050     */ 
    2985     function get_debug_phpinfo() 
     3051    function get_debug_phpinfo($type=1) 
    29863052    { 
    29873053        $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__); 
     
    29923058            ob_start(); 
    29933059            phpinfo( -1 ); 
    2994             $oa = preg_replace(array('#^.*<body>(.*)</body>.*$#ms','#<h2>PHP License</h2>.*$#ms','#<h1>Configuration</h1>#',"#\r?\n#","#</(h1|h2|h3|tr)>#",'# +<#',"#[ \t]+#", 
     3060             
     3061             
     3062            if($type!=0) 
     3063            { 
     3064                $oa = preg_replace(array('#^.*<body>(.*)</body>.*$#ms','#<h2>PHP License</h2>.*$#ms','#<h1>Configuration</h1>#',"#\r?\n#","#</(h1|h2|h3|tr)>#",'# +<#',"#[ \t]+#", 
    29953065                                      '#&nbsp;#','#  +#','# class=".*?"#','%&#039;%','#<tr>(?:.*?)" src="(?:.*?)=(.*?)" alt="PHP Logo" /></a>' . '<h1>PHP Version (.*?)</h1>(?:\n+?)</td></tr>#', 
    29963066                                      '#<h1><a href="(?:.*?)?=(.*?)">PHP Credits</a></h1>#','#<tr>(?:.*?)" src="(?:.*?)=(.*?)"(?:.*?)Zend Engine (.*?),(?:.*?)</tr>#',"#    +#",'#<tr>#','#</tr>#' 
     
    30003070        ), 
    30013071            ob_get_clean()); 
    3002  
    3003             $sections = explode( '<h2>', strip_tags($oa, '<h2><th><td>') ); 
    3004             unset( $sections[0] ); 
    3005  
    3006             $oa = array(); 
    3007             foreach ( $sections as $s ) 
    3008             { 
    3009                 preg_match_all( '#%S%(?:<td>(.*?)</td>)?(?:<td>(.*?)</td>)?(?:<td>(.*?)</td>)?%E%#', $s, $askapache, PREG_SET_ORDER ); 
    3010                 foreach ($askapache as $m) $oa[(substr( $s, 0, strpos($s, '</h2>') ))][$m[1]]=( !isset($m[3]) || $m[2]==$m[3] ) ? (isset($m[2]) ? $m[2] : '') : array_slice($m,2); 
     3072                $sections = explode( '<h2>', strip_tags($oa, '<h2><th><td>') ); 
     3073                unset( $sections[0] ); 
     3074 
     3075                $oa = array(); 
     3076                foreach ( $sections as $s ) 
     3077                { 
     3078                    preg_match_all( '#%S%(?:<td>(.*?)</td>)?(?:<td>(.*?)</td>)?(?:<td>(.*?)</td>)?%E%#', $s, $askapache, PREG_SET_ORDER ); 
     3079                    foreach ($askapache as $m) $oa[(substr( $s, 0, strpos($s, '</h2>') ))][$m[1]]=( !isset($m[3]) || $m[2]==$m[3] ) ? (isset($m[2]) ? $m[2] : '') : array_slice($m,2); 
     3080                } 
     3081            } else { 
     3082                $oa=preg_replace(array('#^.*<body>(.*)</body>.*$#ms','#width="600"#'),array('$1','width="95%"'),ob_get_clean()); 
    30113083            } 
     3084             
    30123085        } 
    30133086         
     
    30213094 
    30223095 
     3096 
     3097 
     3098    function footer_helper() 
     3099    { 
     3100        $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__); 
     3101         
     3102        global $wp_query,$user_email,$wp_admin_bar,$wpdb,$post,$post_ID,$user,$current_user; 
     3103        global $_wp_theme_features; 
     3104         
     3105        ob_start(); 
     3106        echo "<pre style='clear:both;max-width:95%;margin:5px auto;font:11px/16px monospace;padding:1px;margin:2px;border:2px outset #F7F7F7;background:#FFF;overflow-x:auto;'>"; 
     3107        //echo htmlspecialchars(print_r($post,1)); 
     3108        $post_type = get_query_var( 'post_type' ); 
     3109 
     3110        echo "\n\n<h4get_all_user_settings</h4>\n";$this->pp(get_all_user_settings()); 
     3111        $g=get_metadata('user',$current_user->ID); 
     3112        $this->print_ra($g); 
     3113        echo "\n\n=====================================================================================================\n"; 
     3114         
     3115         
     3116        echo "\n|  TEMPLATES  |\n=====================================================================================================\n"; 
     3117        echo 'POST_TYPE: '.$post_type."\n"  ; 
     3118        echo 'INDEX_TEMPLATE:' . get_index_template(). "\n"; 
     3119        echo 'AUTHOR_TEMPLATE:' . get_author_template(). "\n"; 
     3120        echo '404_TEMPLATE:' . get_404_template(). "\n"; 
     3121        echo 'ARCHIVE_TEMPLATE: ' . get_archive_template(). "\n"; 
     3122        echo 'CATEGORY_TEMPLATE: ' . get_category_template(). "\n"; 
     3123        echo 'TAG_TEMPLATE: ' . get_tag_template(). "\n"; 
     3124        echo 'TAXONOMY_TEMPLATE: ' . get_taxonomy_template(). "\n"; 
     3125        echo 'DATE_TEMPLATE: ' . get_date_template(). "\n"; 
     3126        echo 'HOME_TEMPLATE: ' . get_home_template(). "\n"; 
     3127        echo 'FRONT_PAGE_TEMPLATE: ' . get_front_page_template(). "\n"; 
     3128        echo 'PAGE_TEMPLATE: ' . get_page_template(). "\n"; 
     3129        echo 'PAGED_TEMPLATE: ' . get_paged_template(). "\n"; 
     3130        echo 'SEARCH_TEMPLATE: ' . get_search_template(). "\n"; 
     3131        echo 'SINGLE_TEMPLATE: ' . get_single_template(). "\n"; 
     3132        echo 'PAGE_TEMPLATE: ' . get_page_template(). "\n"; 
     3133        echo 'ATTACHMENT_TEMPLATE: ' . get_attachment_template(). "\n"; 
     3134         
     3135         
     3136        echo "\n\n=====================================================================================================\n\n"; 
     3137        echo "\n\n<h4>THEME MODS</h4>\n";$this->pp(get_theme_mods()); 
     3138        echo "\n\n<h4>THEME FEATURES</h4>\n";$this->pp($_wp_theme_features); 
     3139        $globalkeys=array_keys($GLOBALS);sort($globalkeys); 
     3140        echo "\n\n<h4>GLOBAL KEYS</h4>\n";$this->pp($globalkeys); 
     3141        echo '</pre>'; 
     3142        return ob_get_clean(); 
     3143        $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__); 
     3144    } 
     3145     
     3146     
    30233147    /** AA_DEBUG::admin_footer() 
    30243148     */ 
     
    30263150    { 
    30273151        if(!current_user_can('askapache_debug_viewer'))return; 
    3028         if($this->options['admin_footer']!='1') return; 
    3029         if($this->options['wp_footer']!='1') return; 
    3030         $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__); 
     3152        if( is_admin() && $this->options['admin_footer']!='1')return; 
     3153        if(!is_admin() && $this->options['wp_footer']!='1') return; 
     3154        $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__); 
     3155 
     3156         
    30313157        ob_start(); 
    3032          
    30333158        echo "<div style=\"clear:both;background:#FFF;\"><h3 style=\"background-color:#464646;color:#999;text-indent:10px;line-height:85px;height:65px;margin:0;\">{$this->plugin['plugin-name']} {$this->plugin['version']} Debugging Information</h3><div>"; 
    30343159 
    3035  
    3036  
     3160         
     3161         
    30373162        $oa = array();  
    30383163        foreach ( array_keys($this->debug_mods) as $k=>$id ) 
     
    30663191        } 
    30673192         
    3068         echo "<p>GLOBAL VARS: ".implode(", ", array_keys($GLOBALS))."</p>"; 
     3193        echo $this->footer_helper(); 
     3194 
     3195         
     3196         
    30693197        echo '</div></div>'; 
    30703198        echo ob_get_clean(); 
     
    30753203 
    30763204 
    3077     /** AA_DEBUG::wp_footer() 
    3078      */ 
    3079     function wp_footer() 
    3080     { 
    3081         if(!current_user_can('askapache_debug_viewer'))return; 
    3082         $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__); 
    3083         if($this->options['wp_footer']!='1') return; 
    3084         ob_start(); 
    3085         echo "<div><h3 style=\"background-color:#464646;color:#999;text-indent:10px;line-height:85px;height:65px;margin:0;\">{$this->plugin['plugin-name']} {$this->plugin['version']} Debugging Information</h3><div>"; 
    3086  
    3087          
    3088         $oa = array();  
    3089         foreach ( array_keys($this->debug_mods) as $k=>$id ) 
    3090         { 
    3091             if( ($this->options['debug_mods'] & $id) == $id ) { 
    3092                 if($this->debug_mods[$id][0] == 'queries') { 
    3093                     echo "\n\n<h3>QUERIES</h3>\n"; 
    3094                     echo $this->{'get_debug_'.$this->debug_mods[$id][0]}( ($this->options['debug_mods_verbose'] & $id)==$id ); 
    3095                     continue; 
    3096                 } 
    3097                 $oa[strtoupper($this->debug_mods[$id][0])] = $this->{'get_debug_'.$this->debug_mods[$id][0]}( ($this->options['debug_mods_verbose'] & $id)==$id ); 
    3098             } 
    3099         } 
    3100  
    3101         if($this->d(10)) 
    3102         { 
    3103             $oa['Debug Mods']=$this->debug_mods; 
    3104             $oa['Plugin Options'] = array( 'askapache_debug_options' => $this->options ); 
    3105             $oa['Plugin Information'] = array( 'askapache_debug_plugin' => $this->plugin ); 
    3106         } 
    3107          
    3108         foreach ( $oa as $ar => $val ) 
    3109         { 
    3110             if ( !!!$val ) continue; 
    3111             echo "\n\n<h3>{$ar}</h3>\n"; 
    3112             foreach ( (array)$val as $key => $va ) { if ( !!!$va ) continue; echo "\n\n<h4>{$key}</h4>\n";$this->pp($va); } 
    3113         } 
    3114          
    3115         echo "<p>GLOBAL VARS: ".implode(", ", array_keys($GLOBALS))."</p>"; 
    3116         echo '</div></div>'; 
    3117         echo ob_get_clean(); 
    3118          
    3119         $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__); 
    3120     } 
    31213205    /** AA_DEBUG::live_debug() 
    31223206     */ 
     
    32283312 
    32293313    add_filter("plugin_action_links_{$_aapb}", create_function('$l', 'return array_merge(array("<a href=\"options-general.php?page='.$_aabf.'\">Settings</a>"), $l);')); 
     3314     
     3315    /* Add contextual help to the "Help" tab for the plugin's pages in the admin. */ 
     3316    add_filter( 'contextual_help', array(&$AA_DEBUG,'AddHelp'), 10, 2 ); 
     3317     
     3318 
    32303319    add_action('admin_menu', create_function('','$AA_DEBUG=&_aa_debug_object(); $p=$AA_DEBUG->plugin; add_options_page( $p["plugin-name"], $p["short-name"], $p["access"], $p["page"], array(&$AA_DEBUG,"AdminPage") );')); 
    32313320 
     
    32363325endif; 
    32373326 
    3238  
     3327add_action( 'admin_bar_menu', array(&$AA_DEBUG, 'AdminBar') ); 
    32393328add_action( 'init', array(&$AA_DEBUG, 'live_debug') ); 
    32403329add_action( 'shutdown', array(&$AA_DEBUG, 'live_debug') ); 
    32413330add_action( "admin_footer", array(&$AA_DEBUG,'admin_footer')); 
     3331add_action( "wp_footer", array(&$AA_DEBUG,'admin_footer')); 
    32423332#add_action('wp_footer', create_function('','echo "<pre>".print_r(array_keys($GLOBALS),1)."</pre>";')); 
    3243  
    3244 add_action( "wp_footer", array(&$AA_DEBUG,'admin_footer')); 
     3333//add_filter('post_rewrite_rules', create_function('$p','error_log(print_r($p,1));return $p;')); 
    32453334 
    32463335unset($_aapb,$_aahk,$_aabf); 
  • askapache-debug-viewer/trunk/f/admin.css

    r445417 r448525  
    2424#adv7 p.c4r #adv7_robots_tag, 
    2525#adv7 p.c4r #adv7_api_key, 
    26 #adv7 p.c4r #adv7_logfile { width:97%; } 
     26#adv7 p.c4r #adv7_logfile, 
     27#adv7 p.c4r #adv7_dirtoexplore{ width:97%; } 
    2728#adv7 .updated p { line-height:1.3em} 
    2829#adv7 .fad { background-color:#CCEAFF;border:1px solid #55ABE6;padding:0 0.6em;margin:5px 15px 2px;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px} 
  • askapache-debug-viewer/trunk/readme.txt

    r445850 r448525  
    55Requires at least: 2.7 
    66Tested up to: 3.3-aortic-dissection 
    7 Stable tag: 2.2.2 
     7Stable tag: 2.2.3 
    88 
    99This advanced debugging plugin is custom-made for WordPress Developers, Plugin Developers, or anyone wanting to see under the hood of their website and diagnose problems such as with the AskApache PassPro Plugin. 
Note: See TracChangeset for help on using the changeset viewer.