WordPress.org

Plugin Directory

Changeset 642810


Ignore:
Timestamp:
12/21/12 08:50:44 (16 months ago)
Author:
askapache
Message:

New resizable draggable jquery tabs for switching debug info.
New server-env.cgi which shows massive server data using a shell script
New server-status and server-info pages and handlers used by apache to show mod_status output
Big updates all throughout, includes, extensions, classes, etc..
New screenshots showing usage and settings

Location:
askapache-debug-viewer
Files:
31 added
4 edited

Legend:

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

    r577450 r642810  
    1 <?php defined('WP_PLUGIN_DEBUG') && error_log("!! PLUGIN: ".str_replace(dirname($_SERVER['DOCUMENT_ROOT']),'',__FILE__).' included'); ?> 
     1<?php defined('WP_PLUGIN_DEBUG') && ( WP_PLUGIN_DEBUG ) && error_log("!! ".str_replace(dirname($_SERVER['DOCUMENT_ROOT']),'',__FILE__).' included'); ?> 
    22<?php 
    33/** 
     
    66 * Description: Displays Advanced Debugging Output 
    77 * Author: askapache,cduke250 
    8  * Version: 2.3.2 
    9  * Updated: 7/25/2012 - 11:03 AM 
    10  * Requires at least: 2.9 
    11  * Tested up to: 3.4.1 
    12  * Tags: debug, debugging, error, errors, problems, support, admin, programmer, developer, plugin, development, information, stats, logs, queries, htaccess, password, error, support, askapache 
     8 * Version: 2.4 
     9 * Updated: 12/20/2012 - 9:08 PM 
     10 * Requires at least: 3.1.0 
     11 * Tested up to: 3.5 
     12 * Tags: debug, debugging, error, errors, warning, problem, bug, problems, support, admin, programmer, developer, plugin, development, information, stats, logs, queries, htaccess, password, error, support, askapache, apache, rewrites 
    1313 * Contributors: askapache,cduke250 
    1414 * WordPress URI: http://wordpress.org/extend/plugins/askapache-debug-viewer/ 
     
    3737 * along with this program. If not, see <http://www.gnu.org/licenses/>. 
    3838 */ 
    39 /* IS? FUNCTINONS 
    40 * isset() - Determine if a variable is set and is not NULL (isset() will return FALSE if testing a variable that has been set to NULL) 
    41 * is_bool() - Finds out whether a variable is a boolean 
    42 * is_numeric() - Finds whether a variable is a number or a numeric string 
    43 * is_float() - Finds whether the type of a variable is float 
    44 * is_int() - Find whether the type of a variable is integer 
    45 * is_string() - Find whether the type of a variable is string 
    46 * is_object() - Finds whether a variable is an object 
    47 * is_array() - Finds whether a variable is an array 
    48 */ 
    49  
    50 /* SORTING 
    51 * array_multisort()     value   associative yes, numeric no     first array or sort options     array_walk() 
    52 * asort()   value   yes     low to high     arsort() 
    53 * arsort()  value   yes     high to low     asort() 
    54 * krsort()  key     yes     high to low     ksort() 
    55 * ksort()   key     yes     low to high     asort() 
    56 * natcasesort()     value   yes     natural, case insensitive   natsort() 
    57 * natsort()     value   yes     natural     natcasesort() 
    58 * rsort()   value   no  high to low     sort() 
    59 * shuffle()     value   no  random  array_rand() 
    60 * sort()    value   no  low to high     rsort() 
    61 * uasort()  value   yes     user defined    uksort() 
    62 * uksort()  key     yes     user defined    uasort() 
    63 * usort()   value   no  user defined    uasort() 
    64 */ 
    65  
    66  
    67 /* REGEXP 
    68 * 
    69 * $msg = preg_replace("@((\015\012)|(\015)|(\012)){3,}@", "\n\n", $msg); 
    70 * 
    71 * The following should be escaped if you are trying to match that character:  * ^ . $ | ( ) [ ] * + ? { } , 
    72 * Special Character Definitions 
    73 * Quote the next metacharacter 
    74 * ^ Match the beginning of the line 
    75 * . Match any character (except newline) 
    76 * $ Match the end of the line (or before newline at the end) 
    77 * | Alternation 
    78 * () Grouping 
    79 * [] Character class 
    80 * * Match 0 or more times 
    81 * + Match 1 or more times 
    82 * ? Match 1 or 0 times 
    83 * {n} Match exactly n times 
    84 * {n,} Match at least n times 
    85 * {n,m} Match at least n but not more than m times 
    86 * More Special Character Stuff 
    87 * t tab (HT, TAB) 
    88 * n newline (LF, NL) 
    89 * r return (CR) 
    90 * f form feed (FF) 
    91 * a alarm (bell) (BEL) 
    92 * e escape (think troff) (ESC) 
    93 * 033 octal char (think of a PDP-11) 
    94 * x1B hex char 
    95 * c[ control char 
    96 * l lowercase next char (think vi) 
    97 * u uppercase next char (think vi) 
    98 * L lowercase till \E (think vi) 
    99 * U uppercase till \E (think vi) 
    100 * E end case modification (think vi) 
    101 * Q quote (disable) pattern metacharacters till \E 
    102 * Even More Special Characters 
    103 * w Match a "word" character (alphanumeric plus "_") 
    104 * W Match a non-word character 
    105 * s Match a whitespace character 
    106 * S Match a non-whitespace character 
    107 * d Match a digit character 
    108 * D Match a non-digit character 
    109 * b Match a word boundary 
    110 * B Match a non-(word boundary) 
    111 * A Match only at beginning of string 
    112 * Z Match only at end of string, or before newline at the end 
    113 * z Match only at end of string 
    114 * G Match only where previous m//g left off (works only with /g) 
    115 */ 
    116 /* 
    117  
    118 ///////////////////////////-----------------------------------------------------------------------------------------------------  Meta-characters 
    119 \    general escape character with several uses 
    120 ^    assert start of subject (or line, in multiline mode) 
    121 $    assert end of subject (or line, in multiline mode) 
    122 .    match any character except newline (by default) 
    123 [    start character class definition 
    124 ]    end character class definition 
    125 |    start of alternative branch 
    126 (    start subpattern 
    127 )    end subpattern 
    128 ?    extends the meaning of (, also 0 or 1 quantifier, also makes greedy quantifiers lazy (see repetition)  
    129 *    0 or more quantifier 
    130 +    1 or more quantifier 
    131 {    start min/max quantifier 
    132 }    end min/max quantifier 
    133  
    134 Part of a pattern that is in square brackets is called a "character class". In a character class the only meta-characters are: 
    135 \    general escape character 
    136 ^    negate the class, but only if the first character 
    137 -    indicates character range 
    138 ]    terminates the character class  
    139                  
    140          
    141          
    142 ///////////////////////////-----------------------------------------------------------------------------------------------------  Escape sequences 
    143 \a    alarm, that is, the BEL character (hex 07)  
    144 \cx   "control-x", where x is any character  
    145 \e    escape (hex 1B)  
    146 \f    formfeed (hex 0C)  
    147 \n    newline (hex 0A)  
    148 \p{xx}    a character with the xx property, see unicode properties for more info  
    149 \P{xx}    a character without the xx property, see unicode properties for more info  
    150 \r    carriage return (hex 0D)  
    151 \t    tab (hex 09)  
    152 \xhh    character with hex code hh  
    153 \ddd    character with octal code ddd, or backreference  
    154 \040    is another way of writing a space 
    155 \40    is the same, provided there are fewer than 40 previous capturing subpatterns  
    156 \7    is always a back reference 
    157 \11    might be a back reference, or another way of writing a tab  
    158 \011    is always a tab 
    159 \0113    is a tab followed by the character "3" 
    160 \113    is the character with octal code 113 (since there can be no more than 99 back references)  
    161 \377    is a byte consisting entirely of 1 bits 
    162 \81    is either a back reference, or a binary zero followed by the two characters "8" and "1"  
    163 \d    any decimal digit 
    164 \D    any character that is not a decimal digit 
    165 \h    any horizontal whitespace character (since PHP 5.2.4) 
    166 \H    any character that is not a horizontal whitespace character (since PHP 5.2.4) 
    167 \s    any whitespace character 
    168 \S    any character that is not a whitespace character 
    169 \v    any vertical whitespace character (since PHP 5.2.4) 
    170 \V    any character that is not a vertical whitespace character (since PHP 5.2.4) 
    171 \w    any "word" character 
    172 \W    any "non-word" character 
    173 \b    word boundary 
    174 \B    not a word boundary 
    175 \A    start of subject (independent of multiline mode) 
    176 \Z    end of subject or newline at end (independent of multiline mode)  
    177 \z    end of subject (independent of multiline mode) 
    178 \G    first matching position in subject         
    179          
    180  
    181  
    182 ///////////////////////////-----------------------------------------------------------------------------------------------------  Character classes  
    183 alnum   letters and digits 
    184 alpha   letters 
    185 ascii   character codes 0 - 127 
    186 blank   space or tab only 
    187 cntrl   control characters 
    188 digit   decimal digits (same as \d) 
    189 graph   printing characters, excluding space 
    190 lower   lower case letters 
    191 print   printing characters, including space 
    192 punct   printing characters, excluding letters and digits 
    193 space   white space (not quite the same as \s) 
    194 upper   upper case letters 
    195 word    "word" characters (same as \w) 
    196 xdigit  hexadecimal digits 
    197  
    198 ///////////////////////////-----------------------------------------------------------------------------------------------------  Internal option letters 
    199 i   for PCRE_CASELESS 
    200 m   for PCRE_MULTILINE 
    201 s   for PCRE_DOTALL 
    202 x   for PCRE_EXTENDED 
    203 U   for PCRE_UNGREEDY 
    204 X   for PCRE_EXTRA 
    205 J   for PCRE_INFO_JCHANGED 
    206  
    207  
    208 ///////////////////////////-----------------------------------------------------------------------------------------------------  Single-character quantifiers  
    209 *   equivalent to {0,} 
    210 +   equivalent to {1,} 
    211 ?   equivalent to {0,1} 
    212  
    213  
    214 ///////////////////////////-----------------------------------------------------------------------------------------------------  Pattern Modifiers 
    215 i (PCRE_CASELESS)        If this modifier is set, letters in the pattern match both upper and lower case letters.  
    216 m (PCRE_MULTILINE)        By default, PCRE treats the subject string as consisting of a single "line" of characters (even if it actually contains several newlines).  
    217 s (PCRE_DOTALL)        If this modifier is set, a dot metacharacter in the pattern matches all characters, including newlines. Without it, newlines are excluded. This modifier is equivalent to Perl's /s modifier.  
    218 x (PCRE_EXTENDED)        If this modifier is set, whitespace data characters in the pattern are totally ignored except when escaped or inside a character class, and characters between an unescaped # outside a character class  
    219 e (PREG_REPLACE_EVAL)        If this modifier is set, preg_replace() does normal substitution of backreferences in the replacement string, evaluates it as PHP code, and uses the result for replacing the search string. 
    220 A (PCRE_ANCHORED)        If this modifier is set, the pattern is forced to be "anchored", that is, it is constrained to match only at the start of the string which is being searched (the "subject string").  
    221 D (PCRE_DOLLAR_ENDONLY)        If this modifier is set, a dollar metacharacter in the pattern matches only at the end of the subject string. Without this modifier, a dollar also matches immediately before the final character 
    222 S        When a pattern is going to be used several times, it is worth spending more time analyzing it in order to speed up the time taken for matching. If this modifier is set, then this extra analysis is performed. 
    223 U (PCRE_UNGREEDY)        This modifier inverts the "greediness" of the quantifiers so that they are not greedy by default, but become greedy if followed by ?. It is not compatible with Perl. It can also be set by a (?U) modifier  
    224 X (PCRE_EXTRA)        This modifier turns on additional functionality of PCRE that is incompatible with Perl. Any backslash in a pattern that is followed by a letter that has no special meaning causes an error, 
    225 J (PCRE_INFO_JCHANGED)        The (?J) internal option setting changes the local PCRE_DUPNAMES option. Allow duplicate names for subpatterns.  
    226 u (PCRE8)        This modifier turns on additional functionality of PCRE that is incompatible with Perl. Pattern strings are treated as UTF-8. This modifier is available from PHP 4.1.0 or greater on Unix and from PHP 4.2.3 on win32.  
    227  
    228  
    229  
    230  
    231 ///////////////////////////-----------------------------------------------------------------------------------------------------   
    232  
    233  
    234 ///////////////////////////-----------------------------------------------------------------------------------------------------   
    235  
    236  
    237 ///////////////////////////-----------------------------------------------------------------------------------------------------   
    238  
    239  
    240 ///////////////////////////-----------------------------------------------------------------------------------------------------   
    241  
    242  
    243 ///////////////////////////-----------------------------------------------------------------------------------------------------   
    244  
    245 */ 
    246  
    247  
    248 /* Logical Operators (http://www.php.net/manual/en/language.operators.logical.php), 
    249 * 
    250 * $a = ( false && foo() )       -   $a = bool(false) 
    251 * $b = ( true  || foo() )       -   $b = bool(true) 
    252 * $c = ( false and foo() )      -   $c = bool(false) 
    253 * $d = ( true  or  foo() )      -   $d = bool(true) 
    254 * 
    255 * $a and $b   -   true if BOTH $a and $b are true. 
    256 * $a or  $b   -   true if EITHER $a OR $b is true. 
    257 * $a xor $b   -   true if EITHER $a or $b is true, but not both. 
    258 * ! $a        -   true if $a is NOT true. 
    259 * $a && $b    -   true if BOTH $a and $b are true. 
    260 * $a || $b    -   true if EITHER $a or $b is true. 
    261 * 
    262 * $g = true && false       -     $g will be ASSIGNED to (true && false) which is FALSE 
    263 * $g = true and false      -     $g will be ASSIGNED to TRUE 
    264 * $g = false || true       -     $g will be ASSIGNED to (false || true) which is TRUE 
    265 * $g = false or true       -     $g will be ASSIGNED to FALSE 
    266 * 
    267 * (http://www.php.net/manual/en/language.operators.arithmetic.php) 
    268 * $a += $b     $a = $a + $b         //Addition 
    269 * $a -= $b     $a = $a - $b         //Subtraction 
    270 * $a *= $b     $a = $a * $b         //Multiplication 
    271 * $a /= $b     $a = $a / $b         //Division 
    272 * $a %= $b     $a = $a % $b         //Modulus 
    273 */ 
    274  
    275  
    276 /* and, or, execution 
    277 * 
    278 * if($something) do_this() and do_that();     =     do_that() executed only if do_this() returns true 
    279 * if($something) do_this() or do_that();      =     do_that() executed only if do_this() returns false 
    280 * 
    281 * // foo() will NEVER get called as those operators are short-circuit 
    282 * function foo(){var_dump(array());} 
    283 * function_exists('fread') and d(); 
    284 * function_exists('fread') &&  d(); 
    285 * !function_exists('fread') or  d(); 
    286 * !function_exists('fread') ||  d(); 
    287 * !function_exists('freap') and d(); 
    288 * !function_exists('freap') &&  d(); 
    289 * function_exists('fredp') or  d(); 
    290 * function_exists('fredp') ||  d(); 
    291 */ 
    292  
    293 /* 
    294    When converting to boolean, the following values are considered FALSE: 
    295    * the boolean FALSE itself 
    296    * the integer 0 (zero) 
    297    * the float 0.0 (zero) 
    298    * the empty string, and the string "0" 
    299    * an array with zero elements 
    300    * an object with zero member variables (PHP 4 only) 
    301    * the special type NULL (including unset variables) 
    302    * SimpleXML objects created from empty tags 
    303  
    304    Every other value is considered TRUE (including any resource). 
    305    -1 is considered TRUE, like any other non-zero (whether negative or positive) number! 
    306    var_dump((bool) "");        // bool(false) 
    307    var_dump((bool) 1);         // bool(true) 
    308    var_dump((bool) -2);        // bool(true) 
    309    var_dump((bool) "foo");     // bool(true) 
    310    var_dump((bool) 2.3e5);     // bool(true) 
    311    var_dump((bool) array(12)); // bool(true) 
    312    var_dump((bool) array());   // bool(false) 
    313    var_dump((bool) "false");   // bool(true) 
    314 */ 
    315  
    316     /* BUILTIN FUNCTIONS  
    317 * static const zend_function_entry builtin_functions[] = { 
    318 *   zend_version 
    319 *   func_num_args 
    320 *   func_get_arg 
    321 *   func_get_args 
    322 *   strlen 
    323 *   strcmp 
    324 *   strncmp 
    325 *   strcasecmp 
    326 *   strncasecmp 
    327 *   each 
    328 *   error_reporting 
    329 *   define 
    330 *   defined 
    331 *   get_class 
    332 *   get_called_class 
    333 *   get_parent_class 
    334 *   method_exists 
    335 *   property_exists 
    336 *   class_exists 
    337 *   interface_exists 
    338 *   function_exists 
    339 *   class_alias 
    340 *   get_included_files 
    341 * ZEND_FALIAS(get_required_files,     get_included_files 
    342 *   is_subclass_of 
    343 *   is_a 
    344 *   get_class_vars 
    345 *   get_object_vars 
    346 *   get_class_methods 
    347 *   trigger_error 
    348 * ZEND_FALIAS(user_error,       trigger_error 
    349 *   set_error_handler 
    350 *   restore_error_handler 
    351 *   set_exception_handler 
    352 *   restore_exception_handler 
    353 *   get_declared_classes 
    354 *   get_declared_interfaces 
    355 *   get_defined_functions 
    356 *   get_defined_vars 
    357 *   create_function 
    358 *   get_resource_type 
    359 *   get_loaded_extensions 
    360 *   extension_loaded 
    361 *   get_extension_funcs 
    362 *   get_defined_constants 
    363 *   debug_backtrace 
    364 *   debug_print_backtrace 
    365 *   gc_collect_cycles 
    366 *   gc_enabled 
    367 *   gc_enable 
    368 *   gc_disable 
    369 */                                                                                                 
     39  
     40  
     41  
     42 
     43// function to replace wp_die if it doesn't exist 
     44if (!function_exists('wp_die')) : function wp_die ($message = 'wp_die') { die($message); } endif; 
     45 
     46// don't load directly - exit if add_action or plugins_url functions do not exist 
     47if (!defined('ABSPATH') || !function_exists('add_action') || !function_exists('plugins_url')) die('death by askapache firing squad'); 
     48 
    37049 
    37150//if(ob_start() && (print(str_repeat("\n",5).str_repeat("=",235)."\n+-- ".__LINE__." ------------------------------[ ".__FILE__." ]  [START]\n")) && !!error_log(ob_get_clean()))true; 
    37251 
    37352 
    374 // exit if add_action or plugins_url functions do not exist 
    375 !defined('ABSPATH') || !function_exists('add_action') || !function_exists('plugins_url') || !function_exists('add_management_page') || !function_exists('wp_die') && exit; 
     53 
    37654if(!class_exists('AA_DEBUG')): 
    37755 
    378  
    379 /****************************************************************************************************************************************************************** 
    380  WORDPRESS COMPAT FUNCTIONS 
    381  ******************************************************************************************************************************************************************/ 
    382 if (!function_exists('wp_die')) : function wp_die ($message = 'wp_die') { die($message); } endif; 
    383 if (!function_exists('absint')): function absint( $maybeint ) { return abs( intval( $maybeint ) ); } endif; 
    38456 
    38557/****************************************************************************************************************************************************************** 
     
    39567__NAMESPACE__ The name of the current namespace (case-sensitive). This constant is defined in compile-time 
    39668*/ 
    397 // Version constants only available as of 5.2.8 
     69!defined('__DIR__') && define('__DIR__', realpath(dirname(__FILE__))); 
     70!defined('FILE_BINARY') && define('FILE_BINARY', 0); 
    39871if (!defined("PHP_VERSION_ID"))  
    39972{ 
     
    40376        !defined("PHP_MAJOR_VERSION") && define("PHP_MAJOR_VERSION", $major); 
    40477} 
    405 !defined('__DIR__') && define('__DIR__', realpath(dirname(__FILE__))); 
    406 !defined('FILE_BINARY') && define('FILE_BINARY', 0); 
    40778if (!defined('PHP_EOL')) { 
    40879    switch (strtoupper(substr(PHP_OS, 0, 3))) { 
     
    41384} 
    41485 
    415      
    41686/****************************************************************************************************************************************************************** 
    41787 WORDPRESS DEFINES 
    41888 ******************************************************************************************************************************************************************/ 
    419 !defined('ABSPATH') || !function_exists('add_management_page') || !function_exists('wp_die') && die('death by askapache firing squad'); 
    42089!defined('WP_CONTENT_DIR') && define('WP_CONTENT_DIR', ABSPATH . 'wp-content'); // no trailing slash, full paths only - WP_CONTENT_URL is defined further down 
    42190!defined('WP_PLUGIN_DIR') && define('WP_PLUGIN_DIR', WP_CONTENT_DIR . '/plugins'); // full path, no trailing slash 
    42291!defined('WP_CONTENT_URL') && define('WP_CONTENT_URL', get_option('siteurl') . '/wp-content'); //   full url - WP_CONTENT_DIR is defined further up 
    42392!defined('WP_PLUGIN_URL') && define('WP_PLUGIN_URL', WP_CONTENT_URL . '/plugins'); // full url, no trailing slash 
    424  
    425 //function isc_lock($ip=null){ return (bool)( ((null === $ip) ? $_SERVER['REMOTE_ADDR'] : $ip) === ISC_IP); } 
    426 function sqpt_error_log($msg=''){ error_log($msg); return; } 
    427  
    428  
    42993!defined('CRLF') && define('CRLF', chr(13).chr(10)); 
    43094 
    431 /** aadv_DEFINE_function() - This is a cool workaround to defining functions already defined but throwing errors 
     95 
     96/****************************************************************************************************************************************************************** 
     97 FUNCTION DEFINES 
     98 ******************************************************************************************************************************************************************/ 
     99/** aadv_error_log($msg='') 
     100 *  since 2.3.2 
     101 */ 
     102function aadv_error_log($msg='') 
     103{ 
     104    return error_log("1".$msg);  
     105} 
     106 
     107 
     108/** aadv_DEFINE_function() 
     109 *  since 2.3.3 
    432110 */ 
    433111function aadv_DEFINE_function($f='') 
    434112{ 
     113    $funcs=array('absint','array_walk_recursive','curl_setopt_array','get_include_path','inet_ntop','inet_pton','ini_get_all','is_a','is_callable','is_scalar','md5_file','mhash','microtime','mkdir','ob_clean','ob_flush','ob_get_clean','ob_get_flush','pathinfo','php_ini_loaded_file','restore_include_path','scandir','set_include_path','sys_get_temp_dir','time_sleep_until','var_export','wp_die'); 
     114     
     115    if(empty($f)) return $funcs; 
     116     
     117    aadv_error_log("Defining function {$f}"); 
     118     
    435119   switch($f) 
    436120   { 
    437    case 'get_include_path': function get_include_path(){ return ini_get('include_path'); }; break; 
    438    case 'set_include_path': function set_include_path($new_include_path){ return ini_set('include_path', $new_include_path); }; break; 
    439    case 'restore_include_path': function restore_include_path(){ return ini_restore('include_path'); }; break; 
    440    case 'inet_ntop':    function inet_ntop($in_addr) 
    441    { 
    442       switch (strlen($in_addr)) { 
    443       case 4: 
    444      list(,$r) = unpack('N', $in_addr); 
    445      return long2ip($r); 
    446  
    447       case 16: 
    448      $r = substr(chunk_split(bin2hex($in_addr), 4, ':'), 0, -1); 
    449      $r = preg_replace( 
    450         array('/(?::?\b0+\b:?){2,}/', '/\b0+([^0])/e'), 
    451         array('::', '(int)"$1"?"$1":"0$1"'), 
    452         $r); 
    453      return $r; 
    454       } 
    455  
    456       return false; 
    457    } 
    458    break; 
    459    case 'inet_pton': function inet_pton($address) 
    460    { 
    461       $r = ip2long($address); 
    462       if ($r !== false && $r != -1)  return pack('N', $r); 
    463  
    464       $delim_count = substr_count($address, ':'); 
    465       if ($delim_count < 1 || $delim_count > 7)  return false; 
    466  
    467       $r = explode(':', $address); 
    468       $rcount = count($r); 
    469       if (($doub = array_search('', $r, 1)) !== false) { 
    470      $length = (!$doub || $doub == $rcount - 1 ? 2 : 1); 
    471      array_splice($r, $doub, $length, array_fill(0, 8 + $length - $rcount, 0)); 
    472       } 
    473  
    474       $r = array_map('hexdec', $r); 
    475       array_unshift($r, 'n*'); 
    476       $r = call_user_func_array('pack', $r); 
    477  
    478       return $r; 
    479    } 
    480    break; 
    481    case 'php_ini_loaded_file': function php_ini_loaded_file() 
    482    { 
    483       // Get the location of php.ini 
    484       ob_start(); 
    485       phpinfo(INFO_GENERAL); 
    486       $info = ob_get_contents(); 
    487       ob_clean(); 
    488       $info = explode("\n", $info); 
    489       $line = array_values(preg_grep('#php\.ini#', $info)); 
    490  
    491       // Plain vs HTML output 
    492       if (substr($line[0], 0, 4) === '<tr>') { 
    493      list (, $value) = explode('<td class="v">', $line[0], 2); 
    494      $inifile = trim(strip_tags($value)); 
    495       } else { 
    496      list (, $value) = explode(' => ', $line[0], 2); 
    497      $inifile = trim($value); 
    498       } 
    499  
    500       // Check the file actually exists 
    501       if (!file_exists($inifile)) { 
    502      return false; 
    503       } 
    504    } 
    505    break; 
    506    case 'ini_get_all': function ini_get_all($extension=null)  
    507    {   
    508       // Sanity check 
    509       if ($extension !== null && !is_scalar($extension)) { 
    510      user_error('ini_get_all() expects parameter 1 to be string, ' . gettype($extension) . ' given', E_USER_WARNING); 
    511      return false; 
    512       } 
    513  
    514       // Get the location of php.ini 
    515       ob_start(); 
    516       phpinfo(INFO_GENERAL); 
    517       $info = ob_get_contents(); 
    518       ob_clean(); 
    519       $info = explode("\n", $info); 
    520       $line = array_values(preg_grep('#php\.ini#', $info)); 
    521  
    522       // Plain vs HTML output 
    523       if (substr($line[0], 0, 4) === '<tr>') { 
    524      list (, $value) = explode('<td class="v">', $line[0], 2); 
    525      $inifile = trim(strip_tags($value)); 
    526       } else { 
    527      list (, $value) = explode(' => ', $line[0], 2); 
    528      $inifile = trim($value); 
    529       } 
    530  
    531       // Check the file actually exists 
    532       if (!file_exists($inifile)) { 
    533      user_error('ini_get_all() Unable to find php.ini', E_USER_WARNING); 
    534      return false; 
    535       } 
    536  
    537       // Check the file is readable 
    538       if (!is_readable($inifile)) { 
    539      user_error('ini_get_all() Unable to open php.ini', E_USER_WARNING); 
    540      return false; 
    541       } 
    542  
    543       // Parse the ini 
    544       if ($extension !== null)  
    545       { 
    546      $ini_all = parse_ini_file($inifile, true); 
    547  
    548      // Lowercase extension keys 
    549      foreach ($ini_all as $key => $value) $ini_arr[strtolower($key)] = $value; 
    550  
    551      // Check the extension exists 
    552      if (isset($ini_arr[$extension])) $ini = $ini_arr[$extension]; 
    553      else { 
    554         user_error("ini_get_all() Unable to find extension '$extension'",E_USER_WARNING); 
    555         return false; 
    556      } 
    557       } else { 
    558      $ini = parse_ini_file($inifile); 
    559       } 
    560  
    561       // Order 
    562       $ini_lc = array_map('strtolower', array_keys($ini)); 
    563       array_multisort($ini_lc, SORT_ASC, SORT_STRING, $ini); 
    564  
    565       // Format 
    566       $info = array(); 
    567       foreach ($ini as $key => $value) $info[$key] = array( 'global_value'  => $value, 'local_value'   => ini_get($key), 'access'        => -1); 
    568       return $info; 
    569    } 
    570    break; 
    571    case 'is_a': function is_a($object, $class)  
    572    { 
    573       if (!is_object($object)) return false;             
    574       if (strtolower(get_class($object)) == strtolower($class))  return true; 
    575       else return is_subclass_of($object, $class); 
    576    } 
    577    break; 
    578    case 'is_callable': function is_callable($var, $syntax_only = false) 
    579    { 
    580       if (!is_string($var) && !(is_array($var) && count($var) == 2 && isset($var[0], $var[1]) && is_string($var[1]) && (is_string($var[0]) || is_object($var[0])))) return false; 
    581       if ($syntax_only) return true; 
    582       if (is_string($var)) return function_exists($var); 
    583       else if (is_array($var))  
    584       { 
    585      if (is_string($var[0])) { 
    586         $methods = get_class_methods($var[0]); 
    587         $method = strtolower($var[1]); 
    588         if ($methods) { 
    589            foreach ($methods as $classMethod) { 
    590           if (strtolower($classMethod) == $method) return true; 
    591            } 
    592         } 
    593      } else return method_exists($var[0], $var[1]); 
    594       } 
    595       return false; 
    596    } 
    597    break; 
    598    case 'mhash':     
    599       !defined('MHASH_CRC32') && define('MHASH_CRC32', 0); 
    600       !defined('MHASH_MD5') && define('MHASH_MD5', 1); 
    601       !defined('MHASH_SHA1') && define('MHASH_SHA1', 2); 
    602       !defined('MHASH_HAVAL256') && define('MHASH_HAVAL256', 3); 
    603       !defined('MHASH_RIPEMD160') && define('MHASH_RIPEMD160', 5); 
    604       !defined('MHASH_TIGER') && define('MHASH_TIGER', 7); 
    605       !defined('MHASH_GOST') && define('MHASH_GOST', 8); 
    606       !defined('MHASH_CRC32B') && define('MHASH_CRC32B', 9); 
    607       !defined('MHASH_HAVAL192') && define('MHASH_HAVAL192', 11); 
    608       !defined('MHASH_HAVAL160') && define('MHASH_HAVAL160', 12); 
    609       !defined('MHASH_HAVAL128') && define('MHASH_HAVAL128', 13); 
    610       !defined('MHASH_TIGER128') && define('MHASH_TIGER128', 14); 
    611       !defined('MHASH_TIGER160') && define('MHASH_TIGER160', 15); 
    612       !defined('MHASH_MD4') && define('MHASH_MD4', 16); 
    613       !defined('MHASH_SHA256') && define('MHASH_SHA256', 17); 
    614       !defined('MHASH_ADLER32') && define('MHASH_ADLER32', 18); 
    615       function mhash($hashtype, $data, $key = '') 
    616       { 
    617      switch ($hashtype) { 
    618      case MHASH_MD5: 
    619         $key = str_pad((strlen($key) > 64 ? pack("H*", md5($key)) : $key), 64, chr(0x00)); 
    620         $k_opad = $key ^ (str_pad('', 64, chr(0x5c))); 
    621         $k_ipad = $key ^ (str_pad('', 64, chr(0x36))); 
    622         return pack("H*", md5($k_opad . pack("H*", md5($k_ipad .  $data)))); 
    623  
    624      default: 
    625         return false; 
    626  
    627         break; 
    628      } 
    629       } 
    630       break; 
    631    case 'get_current_screen': function get_current_screen() { global $current_screen; return (( !isset($current_screen) ) ? null : $current_screen); }; break; 
    632    case 'sys_get_temp_dir': function sys_get_temp_dir() 
    633    { 
    634       if (!empty($_ENV['TMP'])) return realpath($_ENV['TMP']); 
    635       if (!empty($_ENV['TMPDIR']))  return realpath( $_ENV['TMPDIR']); 
    636       if (!empty($_ENV['TEMP'])) return realpath( $_ENV['TEMP']); 
    637  
    638       $tempfile = tempnam(uniqid(rand(),TRUE),''); 
    639       if (file_exists($tempfile)) { 
    640      unlink($tempfile); 
    641      return realpath(dirname($tempfile)); 
    642       } 
    643    } 
    644    break; 
    645    case 'time_sleep_until': function time_sleep_until($timestamp) 
    646   { 
    647       list($usec, $sec) = explode(' ', microtime()); 
    648       $now = $sec + $usec; 
    649       if ($timestamp <= $now) { 
    650      user_error('Specified timestamp is in the past', E_USER_WARNING); 
    651      return false; 
    652       } 
    653  
    654       $diff = $timestamp - $now; 
    655       usleep($diff * 1000000); 
    656       return true; 
    657    } 
    658    break; 
    659    case 'is_scalar': function is_scalar($val){ return (is_bool($val) || is_int($val) || is_float($val) || is_string($val)); }; break; 
    660    case 'md5_file': function md5_file($filename, $raw_output = false) 
    661    { 
    662       // Sanity check 
    663       if (!is_scalar($filename)) { 
    664      user_error('md5_file() expects parameter 1 to be string, ' . gettype($filename) . ' given', E_USER_WARNING); 
    665      return; 
    666       } 
    667  
    668       if (!is_scalar($raw_output)) { 
    669      user_error('md5_file() expects parameter 2 to be bool, ' . gettype($raw_output) . ' given', E_USER_WARNING); 
    670      return; 
    671       } 
    672  
    673       if (!file_exists($filename)) { 
    674      user_error('md5_file() Unable to open file', E_USER_WARNING); 
    675      return false; 
    676       } 
    677  
    678       // Read the file 
    679       if (false === $fh = fopen($filename, 'rb')) { 
    680      user_error('md5_file() failed to open stream: No such file or directory', E_USER_WARNING); 
    681      return false; 
    682       } 
    683  
    684       clearstatcache(); 
    685       if ($fsize = @filesize($filename)) { 
    686      $data = fread($fh, $fsize); 
    687       } else { 
    688      $data = ''; 
    689      while (!feof($fh)) { 
    690         $data .= fread($fh, 8192); 
    691      } 
    692       } 
    693  
    694       fclose($fh); 
    695  
    696       // Return 
    697       $data = md5($data); 
    698       if ($raw_output === true) { 
    699      $data = pack('H*', $data); 
    700       } 
    701  
    702       return $data; 
    703    } 
    704    break; 
    705    case 'microtime': function microtime($get_as_float = false) 
    706    { 
    707       if (!function_exists('gettimeofday')) { 
    708      $time = time(); 
    709      return $get_as_float ? ($time * 1000000.0) : '0.00000000 ' . $time; 
    710       }  
    711       $gtod = gettimeofday(); 
    712       $usec = $gtod['usec'] / 1000000.0; 
    713       return $get_as_float 
    714      ? (float) ($gtod['sec'] + $usec) 
    715      : (sprintf('%.8f ', $usec) . $gtod['sec']); 
    716    } 
    717    break; 
    718    case 'mkdir': function mkdir($pathname, $mode = 0777, $recursive = true, $context = null)  
    719    { 
    720       if (version_compare(PHP_VERSION, '5.0.0', 'gte')) { 
    721      // revert to native function 
    722      return (func_num_args() > 3) 
    723         ? mkdir($pathname, $mode, $recursive, $context) 
    724         : mkdir($pathname, $mode, $recursive); 
    725       } 
    726       if (!strlen($pathname)) { 
    727      user_error('No such file or directory', E_USER_WARNING); 
    728      return false; 
    729       } 
    730       if (is_dir($pathname)) { 
    731      if (func_num_args() == 5) { 
    732         // recursive call 
    733         return true; 
    734      } 
    735      user_error('File exists', E_USER_WARNING); 
    736      return false; 
    737       } 
    738       $parent_is_dir = php_compat_mkdir(dirname($pathname), $mode, $recursive, null, 0); 
    739       if ($parent_is_dir) { 
    740      return mkdir($pathname, $mode); 
    741       } 
    742       user_error('No such file or directory', E_USER_WARNING); 
    743       return false; 
    744    } 
    745    break; 
    746    case 'ob_clean': function ob_clean() 
    747    { 
    748       if (@ob_end_clean()) { 
    749      return ob_start(); 
    750       } 
    751  
    752       user_error("ob_clean() failed to delete buffer. No buffer to delete.", E_USER_NOTICE); 
    753  
    754       return false; 
    755  
    756    } 
    757    break; 
    758    case 'ob_flush': function ob_flush() 
    759    { 
    760       if (@ob_end_flush()) { 
    761      return ob_start(); 
    762       } 
    763  
    764       user_error("ob_flush() Failed to flush buffer. No buffer to flush.", E_USER_NOTICE); 
    765  
    766       return false; 
    767    } 
    768    break; 
    769    case 'ob_get_clean': function ob_get_clean() 
    770    { 
    771       $contents = ob_get_contents(); 
    772  
    773       if ($contents !== false) { 
    774      ob_end_clean(); 
    775       } 
    776  
    777       return $contents; 
    778    } 
    779    break; 
    780    case 'ob_get_flush': function ob_get_flush() 
    781    { 
    782       $contents = ob_get_contents(); 
    783  
    784       if ($contents !== false) { 
    785      ob_end_flush(); 
    786       } 
    787  
    788       return $contents; 
    789    } 
    790    break; 
    791    case 'pathinfo':  
    792       !defined('PATHINFO_FILENAME') && define('PATHINFO_FILENAME', 8); 
    793       function pathinfo($path = false, $options = false) 
    794       { 
    795      // Sanity check 
    796      if (!is_scalar($path)) { 
    797         user_error('pathinfo() expects parameter 1 to be string, ' . gettype($path) . ' given', E_USER_WARNING); 
    798         return; 
    799      } 
    800      if (version_compare(PHP_VERSION, '5.2.0', 'ge')) { 
    801         return pathinfo($path, $options); 
    802      } 
    803      if ($options & PATHINFO_FILENAME) { 
    804         //bug #15688 
    805         if (strpos($path, '.') !== false) { 
    806            $filename = substr($path, 0, strrpos($path, '.')); 
    807         } 
    808         if ($options === PATHINFO_FILENAME) { 
    809            return $filename; 
    810         } 
    811         $pathinfo             = pathinfo($path, $options); 
    812         $pathinfo['filename'] = $filename; 
    813         return $pathinfo; 
    814      } 
    815      return pathinfo($path, $options); 
    816       } 
    817       break; 
    818    case 'scandir': function scandir($directory, $sorting_order = 0) 
    819    { 
    820       if (!is_string($directory)) { 
    821      user_error('scandir() expects parameter 1 to be string, ' . gettype($directory) . ' given', E_USER_WARNING); 
    822      return; 
    823       } 
    824  
    825       if (!is_int($sorting_order) && !is_bool($sorting_order)) { 
    826      user_error('scandir() expects parameter 2 to be long, ' . gettype($sorting_order) . ' given', E_USER_WARNING); 
    827      return; 
    828       } 
    829  
    830       if (!is_dir($directory) || (false === $fh = @opendir($directory))) { 
    831      user_error('scandir() failed to open dir: Invalid argument', E_USER_WARNING); 
    832      return false; 
    833       } 
    834  
    835       $files = array (); 
    836       while (false !== ($filename = readdir($fh))) { 
    837      $files[] = $filename; 
    838       } 
    839  
    840       closedir($fh); 
    841  
    842       if ($sorting_order == 1) { 
    843      rsort($files); 
    844       } else { 
    845      sort($files); 
    846       } 
    847  
    848       return $files; 
    849  
    850    } 
    851    break; 
    852    case 'var_export': function var_export($var, $return = false, $level = 0, $inObject = false) 
    853    { 
    854       // Init 
    855       $indent      = '  '; 
    856       $doublearrow = ' => '; 
    857       $lineend     = ",\n"; 
    858       $stringdelim = '\''; 
    859       $newline     = "\n"; 
    860       $find        = array(null, '\\', '\''); 
    861       $replace     = array('NULL', '\\\\', '\\\''); 
    862       $out         = ''; 
    863  
    864       // Indent 
    865       $level++; 
    866       for ($i = 1, $previndent = ''; $i < $level; $i++) { 
    867      $previndent .= $indent; 
    868       } 
    869  
    870       $varType = gettype($var); 
    871  
    872       // Handle object indentation oddity 
    873       if ($inObject && $varType != 'object') { 
    874      $previndent = substr($previndent, 0, -1); 
    875       } 
    876  
    877  
    878       // Handle each type 
    879       switch ($varType) { 
    880      // Array 
    881       case 'array': 
    882      if ($inObject) { 
    883         $out .= $newline . $previndent; 
    884      } 
    885      $out .= 'array (' . $newline; 
    886  
    887      foreach ($var as $key => $value) { 
    888         if (is_string($key)) { 
    889            // Make key safe 
    890            $key = str_replace($find, $replace, $key); 
    891            $key = $stringdelim . $key . $stringdelim; 
    892         } 
    893  
    894         // Value 
    895         if (is_array($value)) { 
    896            $export = php_compat_var_export($value, true, $level); 
    897            $value = $newline . $previndent . $indent . $export; 
    898         } else { 
    899            $value = php_compat_var_export($value, true, $level); 
    900         } 
    901  
    902         // Piece line together 
    903         $out .= $previndent . $indent . $key . $doublearrow . $value . $lineend; 
    904      } 
    905  
    906      // End string 
    907      $out .= $previndent . ')'; 
    908      break; 
    909  
    910      // String 
    911       case 'string': 
    912      // Make the string safe 
    913      for ($i = 0, $c = count($find); $i < $c; $i++) { 
    914         $var = str_replace($find[$i], $replace[$i], $var); 
    915      } 
    916      $out = $stringdelim . $var . $stringdelim; 
    917      break; 
    918  
    919      // Number 
    920       case 'integer': 
    921       case 'double': 
    922      $out = (string) $var; 
    923      break; 
    924  
    925      // Boolean 
    926       case 'boolean': 
    927      $out = $var ? 'true' : 'false'; 
    928      break; 
    929  
    930      // NULLs 
    931       case 'NULL':  
    932       case 'resource': 
    933      $out = 'NULL'; 
    934      break; 
    935  
    936      // Objects 
    937       case 'object': 
    938      // Start the object export 
    939      $out = $newline . $previndent; 
    940      $out .= get_class($var) . '::__set_state(array(' . $newline; 
    941      // Export the object vars 
    942      foreach(get_object_vars($var) as $key => $value) { 
    943         $out .= $previndent . $indent . ' ' . $stringdelim . $key . $stringdelim . $doublearrow; 
    944         $out .= php_compat_var_export($value, true, $level, true) . $lineend; 
    945      } 
    946      $out .= $previndent . '))'; 
    947      break; 
    948       } 
    949  
    950       // Method of output 
    951       if ($return === true) { 
    952      return $out; 
    953       } else { 
    954      echo $out; 
    955       } 
    956    } 
    957    break; 
    958    case 'array_walk_recursive': function array_walk_recursive(&$input, $funcname) 
    959    { 
    960       if (!is_callable($funcname)) { 
    961      if (is_array($funcname)) { 
    962         $funcname = $funcname[0] . '::' . $funcname[1]; 
    963      } 
    964      user_error('array_walk_recursive() Not a valid callback ' . $funcname, E_USER_WARNING); 
    965      return; 
    966       } 
    967  
    968       if (!is_array($input)) { 
    969      user_error('array_walk_recursive() The argument should be an array', E_USER_WARNING); 
    970      return; 
    971       } 
    972  
    973       $args = func_get_args(); 
    974  
    975       foreach ($input as $key => $item) { 
    976      $callArgs = $args; 
    977      if (is_array($item)) { 
    978         $thisCall = 'array_walk_recursive'; 
    979         $callArgs[1] = $funcname; 
    980      } else { 
    981         $thisCall = $funcname; 
    982         $callArgs[1] = $key; 
    983      } 
    984      $callArgs[0] = &$input[$key]; 
    985      call_user_func_array($thisCall, $callArgs); 
    986       }     
    987    } 
    988    break; 
    989    case 'set_current_screen': function set_current_screen( $id =  '' )  
    990    { 
    991       global $current_screen, $hook_suffix, $typenow, $taxnow; 
    992       $action = ''; 
    993       if ( empty($id) ) { 
    994      $current_screen = str_replace('.php', '', $hook_suffix); 
    995      if ( preg_match('/-add|-new$/', $current_screen) ) $action = 'add'; 
    996      $current_screen = str_replace('-add', '', str_replace('-new', '', $current_screen)); 
    997      $current_screen = array('id' => $current_screen, 'base' => $current_screen); 
    998       } else { 
    999      $id = sanitize_key($id); 
    1000      if ( false !== strpos($id, '-') ) { 
    1001         list( $id, $typenow ) = explode('-', $id, 2); 
    1002         if ( taxonomy_exists( $typenow ) ) {$id = 'edit-tags';$taxnow = $typenow;$typenow = '';} 
    1003      } 
    1004      $current_screen = array('id' => $id, 'base' => $id); 
    1005       } 
    1006       $current_screen = (object) $current_screen; 
    1007       $current_screen->action = $action; 
    1008       if ( 'index' == $current_screen->base )   $current_screen->base = 'dashboard'; 
    1009       if ( 'index' == $current_screen->id ) $current_screen->id = 'dashboard'; 
    1010       if ( 'edit' == $current_screen->id ) { 
    1011      if ( empty($typenow) )$typenow = 'post'; 
    1012      $current_screen->id .= '-' . $typenow; 
    1013      $current_screen->post_type = $typenow; 
    1014       } elseif ( 'post' == $current_screen->id ) { 
    1015      if ( empty($typenow) ) $typenow = 'post'; 
    1016      $current_screen->id = $typenow; 
    1017      $current_screen->post_type = $typenow; 
    1018       } elseif ( 'edit-tags' == $current_screen->id ) { 
    1019      if ( empty($taxnow) )  $taxnow = 'post_tag'; 
    1020      $current_screen->id = 'edit-' . $taxnow; 
    1021      $current_screen->taxonomy = $taxnow; 
    1022       } 
    1023       $current_screen->is_network = is_network_admin(); 
    1024       $current_screen->is_user = is_user_admin(); 
    1025       if ( $current_screen->is_network ) {$current_screen->base .= '-network';$current_screen->id .= '-network';}  
    1026       elseif ( $current_screen->is_user ) {$current_screen->base .= '-user';$current_screen->id .= '-user';} 
    1027      $current_screen = apply_filters('current_screen', $current_screen); 
    1028    } 
    1029    break; 
    1030    } 
     121        case 'absint': 
     122            function absint( $maybeint ) 
     123            { 
     124                return abs( intval( $maybeint ) ); 
     125            } 
     126        break; 
     127         
     128        case 'array_walk_recursive': 
     129            function array_walk_recursive(&$input, $funcname) 
     130            { 
     131                if (!is_callable($funcname)) 
     132                { 
     133                    if (is_array($funcname)) $funcname = $funcname[0] . '::' . $funcname[1]; 
     134                    user_error('array_walk_recursive() Not a valid callback ' . $funcname, E_USER_WARNING); 
     135                    return; 
     136                } 
     137                 
     138                if (!is_array($input)) 
     139                { 
     140                    user_error('array_walk_recursive() The argument should be an array', E_USER_WARNING); 
     141                    return; 
     142                } 
     143                 
     144                $args = func_get_args(); 
     145                 
     146                foreach ($input as $key => $item) 
     147                { 
     148                    $callArgs = $args; 
     149                    if (is_array($item)) { 
     150                        $thisCall = 'array_walk_recursive'; 
     151                        $callArgs[1] = $funcname; 
     152                    } else { 
     153                        $thisCall = $funcname; 
     154                        $callArgs[1] = $key; 
     155                    } 
     156                    $callArgs[0] = &$input[$key]; 
     157                    call_user_func_array($thisCall, $callArgs); 
     158                } 
     159            }; 
     160        break; 
     161                 
     162        case 'curl_setopt_array': 
     163            function curl_setopt_array(&$ch, $curl_options) 
     164            { 
     165                $curl_info=array( 
     166                                      'url'=>'Last effective URL', 
     167                                      'content_type'=>'Content-type of downloaded object', 
     168                                      'http_code'=>'Last received HTTP code', 
     169                                      'header_size'=>'Total size of all headers received', 
     170                                      'request_size'=>'Total size of issued requests, currently only for HTTP requests', 
     171                                      'filetime'=>'Remote time of the retrieved document', 
     172                                      'ssl_verify_result'=>'Result of SSL certification verification requested', 
     173                                      'redirect_count'=>'Total number of redirects', 
     174                                      'total_time'=>'Total transaction time in seconds for last transfer', 
     175                                      'namelookup_time'=>'Time in seconds until name resolving was complete', 
     176                                      'connect_time'=>'Time in seconds it took to establish the connection', 
     177                                      'pretransfer_time'=>'Time in seconds from start until just before file transfer begins', 
     178                                      'size_upload'=>'Total number of bytes uploaded', 
     179                                      'size_download'=>'Total number of bytes downloaded', 
     180                                      'speed_download'=>'Average download speed', 
     181                                      'speed_upload'=>'Average upload speed', 
     182                                      'download_content_length'=>'content-length of download, read from Content-Length: field', 
     183                                      'upload_content_length'=>'Specified size of upload', 
     184                                      'starttransfer_time'=>'Time in seconds until the first byte is about to be transferred', 
     185                                      'redirect_time'=>'Time in seconds of all redirection steps before final transaction was started'); 
     186                 
     187                foreach ($curl_options as $option => $value) { 
     188                    if (!curl_setopt($ch, $option, $value)) return false; 
     189                } 
     190                 
     191                return true; 
     192            } 
     193        break; 
     194         
     195        case 'get_include_path': 
     196            function get_include_path() 
     197            { 
     198                return ini_get('include_path'); 
     199            }; 
     200        break; 
     201         
     202        case 'inet_ntop': 
     203            function inet_ntop($in_addr) 
     204            { 
     205                switch (strlen($in_addr)) { 
     206                case 4: 
     207                    list(,$r) = unpack('N', $in_addr); 
     208                    return long2ip($r); 
     209                case 16: 
     210                    $r = substr(chunk_split(bin2hex($in_addr), 4, ':'), 0, -1); 
     211                    $r = preg_replace( 
     212                 array('/(?::?\b0+\b:?){2,}/', '/\b0+([^0])/e'), 
     213                 array('::', '(int)"$1"?"$1":"0$1"'), 
     214                 $r); 
     215                    return $r; 
     216                } 
     217         
     218                return false; 
     219            }; 
     220        break; 
     221         
     222        case 'inet_pton': 
     223            function inet_pton($address) 
     224            { 
     225                $r = ip2long($address); 
     226                if ($r !== false && $r != -1)  return pack('N', $r); 
     227         
     228                $delim_count = substr_count($address, ':'); 
     229                if ($delim_count < 1 || $delim_count > 7)  return false; 
     230         
     231                $r = explode(':', $address); 
     232                $rcount = count($r); 
     233                if (($doub = array_search('', $r, 1)) !== false) { 
     234                 $length = (!$doub || $doub == $rcount - 1 ? 2 : 1); 
     235                 array_splice($r, $doub, $length, array_fill(0, 8 + $length - $rcount, 0)); 
     236                } 
     237         
     238                $r = array_map('hexdec', $r); 
     239                array_unshift($r, 'n*'); 
     240                $r = call_user_func_array('pack', $r); 
     241         
     242                return $r; 
     243            }; 
     244        break; 
     245         
     246        case 'ini_get_all': 
     247            function ini_get_all($extension=null)  
     248            {   
     249                // Sanity check 
     250                if ($extension !== null && !is_scalar($extension)) { 
     251                    user_error('ini_get_all() expects parameter 1 to be string, ' . gettype($extension) . ' given', E_USER_WARNING); 
     252                    return false; 
     253                } 
     254         
     255                // Get the location of php.ini 
     256                ob_start(); 
     257                phpinfo(INFO_GENERAL); 
     258                $info = ob_get_contents(); 
     259                ob_clean(); 
     260                $info = explode("\n", $info); 
     261                $line = array_values(preg_grep('#php\.ini#', $info)); 
     262         
     263                // Plain vs HTML output 
     264                if (substr($line[0], 0, 4) === '<tr>') { 
     265                    list (, $value) = explode('<td class="v">', $line[0], 2); 
     266                    $inifile = trim(strip_tags($value)); 
     267                } else { 
     268                    list (, $value) = explode(' => ', $line[0], 2); 
     269                    $inifile = trim($value); 
     270                } 
     271         
     272                // Check the file actually exists 
     273                if (!file_exists($inifile)) { 
     274                    user_error('ini_get_all() Unable to find php.ini', E_USER_WARNING); 
     275                    return false; 
     276                } 
     277         
     278                // Check the file is readable 
     279                if (!is_readable($inifile)) { 
     280                    user_error('ini_get_all() Unable to open php.ini', E_USER_WARNING); 
     281                    return false; 
     282                } 
     283         
     284                // Parse the ini 
     285                if ($extension !== null)  
     286                { 
     287                    $ini_all = parse_ini_file($inifile, true); 
     288         
     289                    // Lowercase extension keys 
     290                    foreach ($ini_all as $key => $value) $ini_arr[strtolower($key)] = $value; 
     291         
     292                    // Check the extension exists 
     293                    if (isset($ini_arr[$extension])) $ini = $ini_arr[$extension]; 
     294                    else { 
     295                 user_error("ini_get_all() Unable to find extension '$extension'",E_USER_WARNING); 
     296                 return false; 
     297                    } 
     298                } else { 
     299                    $ini = parse_ini_file($inifile); 
     300                } 
     301         
     302                // Order 
     303                $ini_lc = array_map('strtolower', array_keys($ini)); 
     304                array_multisort($ini_lc, SORT_ASC, SORT_STRING, $ini); 
     305         
     306                // Format 
     307                $info = array(); 
     308                foreach ($ini as $key => $value) $info[$key] = array( 'global_value'  => $value, 'local_value'   => ini_get($key), 'access'        => -1); 
     309                return $info; 
     310            }; 
     311        break; 
     312         
     313        case 'is_a': 
     314            function is_a($object, $class)  
     315            { 
     316                if (!is_object($object)) return false;           
     317                if (strtolower(get_class($object)) == strtolower($class))  return true; 
     318                else return is_subclass_of($object, $class); 
     319            }; 
     320        break; 
     321         
     322        case 'is_callable': 
     323            function is_callable($var, $syntax_only = false) 
     324            { 
     325                if (!is_string($var) && !(is_array($var) && count($var) == 2 && isset($var[0], $var[1]) && is_string($var[1]) && (is_string($var[0]) || is_object($var[0])))) return false; 
     326                if ($syntax_only) return true; 
     327                if (is_string($var)) return function_exists($var); 
     328                else if (is_array($var))  
     329                { 
     330                    if (is_string($var[0])) { 
     331                 $methods = get_class_methods($var[0]); 
     332                 $method = strtolower($var[1]); 
     333                 if ($methods) { 
     334                     foreach ($methods as $classMethod) { 
     335                  if (strtolower($classMethod) == $method) return true; 
     336                    } 
     337                 } 
     338                    } else return method_exists($var[0], $var[1]); 
     339                } 
     340                return false; 
     341            }; 
     342        break; 
     343         
     344        case 'is_scalar': 
     345            function is_scalar($val) 
     346            { 
     347                return (is_bool($val) || is_int($val) || is_float($val) || is_string($val)); 
     348            }; 
     349        break; 
     350         
     351        case 'md5_file': 
     352            function md5_file($filename, $raw_output = false) 
     353            { 
     354                // Sanity check 
     355                if (!is_scalar($filename)) { 
     356                    user_error('md5_file() expects parameter 1 to be string, ' . gettype($filename) . ' given', E_USER_WARNING); 
     357                    return; 
     358                } 
     359         
     360                if (!is_scalar($raw_output)) { 
     361                    user_error('md5_file() expects parameter 2 to be bool, ' . gettype($raw_output) . ' given', E_USER_WARNING); 
     362                    return; 
     363                } 
     364         
     365                if (!file_exists($filename)) { 
     366                    user_error('md5_file() Unable to open file', E_USER_WARNING); 
     367                    return false; 
     368                } 
     369         
     370                // Read the file 
     371                if (false === $fh = fopen($filename, 'rb')) { 
     372                    user_error('md5_file() failed to open stream: No such file or directory', E_USER_WARNING); 
     373                    return false; 
     374                } 
     375         
     376                clearstatcache(); 
     377                if ($fsize = @filesize($filename)) { 
     378                    $data = fread($fh, $fsize); 
     379                } else { 
     380                    $data = ''; 
     381                    while (!feof($fh)) $data .= fread($fh, 8192); 
     382                } 
     383         
     384                fclose($fh); 
     385         
     386                // Return 
     387                $data = md5($data); 
     388                if ($raw_output === true) $data = pack('H*', $data); 
     389         
     390                return $data; 
     391            }; 
     392        break; 
     393         
     394        case 'mhash':    
     395                !defined('MHASH_CRC32') && define('MHASH_CRC32', 0); 
     396                !defined('MHASH_MD5') && define('MHASH_MD5', 1); 
     397                !defined('MHASH_SHA1') && define('MHASH_SHA1', 2); 
     398                !defined('MHASH_HAVAL256') && define('MHASH_HAVAL256', 3); 
     399                !defined('MHASH_RIPEMD160') && define('MHASH_RIPEMD160', 5); 
     400                !defined('MHASH_TIGER') && define('MHASH_TIGER', 7); 
     401                !defined('MHASH_GOST') && define('MHASH_GOST', 8); 
     402                !defined('MHASH_CRC32B') && define('MHASH_CRC32B', 9); 
     403                !defined('MHASH_HAVAL192') && define('MHASH_HAVAL192', 11); 
     404                !defined('MHASH_HAVAL160') && define('MHASH_HAVAL160', 12); 
     405                !defined('MHASH_HAVAL128') && define('MHASH_HAVAL128', 13); 
     406                !defined('MHASH_TIGER128') && define('MHASH_TIGER128', 14); 
     407                !defined('MHASH_TIGER160') && define('MHASH_TIGER160', 15); 
     408                !defined('MHASH_MD4') && define('MHASH_MD4', 16); 
     409                !defined('MHASH_SHA256') && define('MHASH_SHA256', 17); 
     410                !defined('MHASH_ADLER32') && define('MHASH_ADLER32', 18); 
     411                function mhash($hashtype, $data, $key = '') 
     412                { 
     413                    switch ($hashtype)  
     414                    { 
     415                        case MHASH_MD5: 
     416                            $key = str_pad((strlen($key) > 64 ? pack("H*", md5($key)) : $key), 64, chr(0x00)); 
     417                            $k_opad = $key ^ (str_pad('', 64, chr(0x5c))); 
     418                            $k_ipad = $key ^ (str_pad('', 64, chr(0x36))); 
     419                            return pack("H*", md5($k_opad . pack("H*", md5($k_ipad .  $data)))); 
     420                        default: 
     421                            return false; 
     422                        break; 
     423                    } 
     424                }; 
     425        break; 
     426         
     427        case 'microtime': 
     428            function microtime($get_as_float = false) 
     429            { 
     430                if (!function_exists('gettimeofday')) 
     431                { 
     432                    $time = time(); 
     433                    return $get_as_float ? ($time * 1000000.0) : '0.00000000 ' . $time; 
     434                }  
     435                 
     436                $gtod = gettimeofday(); 
     437                $usec = $gtod['usec'] / 1000000.0; 
     438                return $get_as_float ? (float) ($gtod['sec'] + $usec) : (sprintf('%.8f ', $usec) . $gtod['sec']); 
     439            }; 
     440        break; 
     441         
     442        case 'mkdir': 
     443            function mkdir($pathname, $mode = 0777, $recursive = true, $context = null)  
     444            { 
     445                if (version_compare(PHP_VERSION, '5.0.0', 'gte'))  return (func_num_args() > 3) ? mkdir($pathname, $mode, $recursive, $context) : mkdir($pathname, $mode, $recursive); 
     446                 
     447                if (!strlen($pathname)) { 
     448                    user_error('No such file or directory', E_USER_WARNING); 
     449                    return false; 
     450                } 
     451                 
     452                if (is_dir($pathname)) 
     453                { 
     454                    if (func_num_args() == 5) return true; 
     455                    user_error('File exists', E_USER_WARNING); 
     456                    return false; 
     457                } 
     458                 
     459                $parent_is_dir = mkdir(dirname($pathname), $mode, $recursive, null, 0); 
     460                if ($parent_is_dir) return mkdir($pathname, $mode); 
     461                user_error('No such file or directory', E_USER_WARNING); 
     462                return false; 
     463            }; 
     464        break; 
     465         
     466        case 'ob_clean': 
     467            function ob_clean() 
     468            { 
     469                if (@ob_end_clean()) return ob_start();      
     470                user_error("ob_clean() failed to delete buffer. No buffer to delete.", E_USER_NOTICE); 
     471                return false; 
     472            }; 
     473        break; 
     474         
     475        case 'ob_flush': 
     476            function ob_flush() 
     477            { 
     478                if (@ob_end_flush()) return ob_start(); 
     479                user_error("ob_flush() Failed to flush buffer. No buffer to flush.", E_USER_NOTICE); 
     480                return false; 
     481            }; 
     482        break; 
     483         
     484        case 'ob_get_clean': 
     485            function ob_get_clean() 
     486            { 
     487                $contents = ob_get_contents(); 
     488                if ($contents !== false) ob_end_clean(); 
     489                return $contents; 
     490            }; 
     491        break; 
     492         
     493        case 'ob_get_flush': 
     494            function ob_get_flush() 
     495            { 
     496                $contents = ob_get_contents(); 
     497                if ($contents !== false) ob_end_flush(); 
     498                return $contents; 
     499            }; 
     500        break; 
     501         
     502        case 'pathinfo':  
     503            !defined('PATHINFO_FILENAME') && define('PATHINFO_FILENAME', 8); 
     504            function pathinfo($path = false, $options = false) 
     505            { 
     506                // Sanity check 
     507                if (!is_scalar($path)) { 
     508                    user_error('pathinfo() expects parameter 1 to be string, ' . gettype($path) . ' given', E_USER_WARNING); 
     509                    return; 
     510                } 
     511                if (version_compare(PHP_VERSION, '5.2.0', 'ge')) return pathinfo($path, $options); 
     512                if ($options & PATHINFO_FILENAME) { 
     513                    if (strpos($path, '.') !== false) $filename = substr($path, 0, strrpos($path, '.')); 
     514                    if ($options === PATHINFO_FILENAME) return $filename; 
     515                    $pathinfo=pathinfo($path, $options); 
     516                    $pathinfo['filename']=$filename; 
     517                    return $pathinfo; 
     518                } 
     519                return pathinfo($path, $options); 
     520            }; 
     521        break; 
     522         
     523        case 'php_ini_loaded_file': 
     524            function php_ini_loaded_file() 
     525            { 
     526                // Get the location of php.ini 
     527                ob_start(); 
     528                phpinfo(INFO_GENERAL); 
     529                $info = ob_get_contents(); 
     530                ob_clean(); 
     531                $info = explode("\n", $info); 
     532                $line = array_values(preg_grep('#php\.ini#', $info)); 
     533         
     534                // Plain vs HTML output 
     535                if (substr($line[0], 0, 4) === '<tr>') { 
     536                    list (, $value) = explode('<td class="v">', $line[0], 2); 
     537                    $inifile = trim(strip_tags($value)); 
     538                } else { 
     539                    list (, $value) = explode(' => ', $line[0], 2); 
     540                    $inifile = trim($value); 
     541                } 
     542         
     543                // Check the file actually exists 
     544                if (!file_exists($inifile))  return false; 
     545            }; 
     546        break; 
     547         
     548        case 'restore_include_path': 
     549            function restore_include_path() 
     550            { 
     551                return ini_restore('include_path'); 
     552            }; 
     553        break; 
     554         
     555        case 'scandir': 
     556            function scandir($directory, $sorting_order = 0) 
     557            { 
     558                if (!is_string($directory)) { 
     559                    user_error('scandir() expects parameter 1 to be string, ' . gettype($directory) . ' given', E_USER_WARNING); 
     560                    return; 
     561                } 
     562         
     563                if (!is_int($sorting_order) && !is_bool($sorting_order)) { 
     564                    user_error('scandir() expects parameter 2 to be long, ' . gettype($sorting_order) . ' given', E_USER_WARNING); 
     565                    return; 
     566                } 
     567         
     568                if (!is_dir($directory) || (false === $fh = @opendir($directory))) { 
     569                    user_error('scandir() failed to open dir: Invalid argument', E_USER_WARNING); 
     570                    return false; 
     571                } 
     572         
     573                $files = array (); 
     574                while (false !== ($filename = readdir($fh))) $files[] = $filename; 
     575                closedir($fh); 
     576         
     577                if ($sorting_order == 1) rsort($files); 
     578                else sort($files); 
     579         
     580                return $files; 
     581            }; 
     582        break; 
     583         
     584        case 'set_include_path': 
     585            function set_include_path($new_include_path) 
     586            { 
     587                return ini_set('include_path', $new_include_path); 
     588            }; 
     589        break; 
     590         
     591        case 'sys_get_temp_dir': 
     592            function sys_get_temp_dir() 
     593            { 
     594                if (!empty($_ENV['TMP'])) return realpath($_ENV['TMP']); 
     595                if (!empty($_ENV['TMPDIR']))  return realpath( $_ENV['TMPDIR']); 
     596                if (!empty($_ENV['TEMP'])) return realpath( $_ENV['TEMP']); 
     597         
     598                $tempfile = tempnam(uniqid(rand(),TRUE),''); 
     599                if (file_exists($tempfile)) { 
     600                    unlink($tempfile); 
     601                    return realpath(dirname($tempfile)); 
     602                } 
     603            }; 
     604        break; 
     605         
     606        case 'time_sleep_until': 
     607            function time_sleep_until($timestamp) 
     608            { 
     609                list($usec, $sec) = explode(' ', microtime()); 
     610                $now = $sec + $usec; 
     611                if ($timestamp <= $now) { 
     612                    user_error('Specified timestamp is in the past', E_USER_WARNING); 
     613                    return false; 
     614                } 
     615         
     616                $diff = $timestamp - $now; 
     617                usleep($diff * 1000000); 
     618                return true; 
     619            }; 
     620        break; 
     621         
     622        case 'var_export': 
     623            function var_export($var, $return = false, $level = 0, $inObject = false) 
     624            { 
     625                $indent      = '  '; 
     626                $doublearrow = ' => '; 
     627                $lineend     = ",\n"; 
     628                $stringdelim = '\''; 
     629                $newline     = "\n"; 
     630                $find        = array(null, '\\', '\''); 
     631                $replace     = array('NULL', '\\\\', '\\\''); 
     632                $out         = ''; 
     633                 
     634                // Indent 
     635                $level++; 
     636                for ($i = 1, $previndent = ''; $i < $level; $i++) $previndent .= $indent; 
     637                $varType = gettype($var); 
     638                 
     639                // Handle object indentation oddity 
     640                if ($inObject && $varType != 'object') $previndent = substr($previndent, 0, -1);         
     641                 
     642                // Handle each type 
     643                switch ($varType) 
     644                { 
     645                    case 'array': 
     646                        if ($inObject) $out .= $newline . $previndent; 
     647                        $out .= 'array (' . $newline; 
     648                         
     649                        foreach ($var as $key => $value) { 
     650                            if (is_string($key)) { 
     651                                // Make key safe 
     652                                $key = str_replace($find, $replace, $key); 
     653                                $key = $stringdelim . $key . $stringdelim; 
     654                            } 
     655                             
     656                            // Value 
     657                            if (is_array($value)) { 
     658                                $export = var_export($value, true, $level); 
     659                                $value = $newline . $previndent . $indent . $export; 
     660                            } else  $value = var_export($value, true, $level); 
     661                             
     662                            // Piece line together 
     663                            $out .= $previndent . $indent . $key . $doublearrow . $value . $lineend; 
     664                        } 
     665                         
     666                        // End string 
     667                        $out .= $previndent . ')'; 
     668                    break; 
     669                     
     670                    case 'string': 
     671                        // Make the string safe 
     672                        for ($i = 0, $c = count($find); $i < $c; $i++) $var = str_replace($find[$i], $replace[$i], $var); 
     673                        $out = $stringdelim . $var . $stringdelim; 
     674                    break; 
     675                     
     676                    case 'integer': 
     677                    case 'double': 
     678                        $out = (string) $var; 
     679                    break; 
     680                     
     681                    case 'boolean': 
     682                        $out = $var ? 'true' : 'false'; 
     683                    break; 
     684                     
     685                    case 'NULL': 
     686                    case 'resource': 
     687                        $out = 'NULL'; 
     688                    break; 
     689                     
     690                    case 'object': 
     691                        // Start the object export 
     692                        $out = $newline . $previndent; 
     693                        $out .= get_class($var) . '::__set_state(array(' . $newline; 
     694                        // Export the object vars 
     695                        foreach(get_object_vars($var) as $key => $value) $out .= $previndent . $indent . ' ' . $stringdelim . $key . $stringdelim . $doublearrow . var_export($value, true, $level, true) . $lineend; 
     696                        $out .= $previndent . '))'; 
     697                    break; 
     698                } 
     699                 
     700                // Method of output 
     701                if ($return === true) return $out; 
     702                else echo $out; 
     703                 
     704            }; 
     705        break; 
     706         
     707        case 'wp_die': 
     708            function wp_die ($message = 'wp_die')  
     709            {  
     710                die($message); 
     711            } 
     712        break; 
     713         
     714    } 
    1031715} 
     716 
     717// This is a cool workaround to defining functions already defined but throwing errors 
     718foreach(aadv_DEFINE_function() as $f) if(!function_exists($f)) aadv_DEFINE_function($f); 
    1032719 
    1033720     
     
    1085772     *      [qn] => askapache_debug 
    1086773     *      [http] => //w 
    1087      *      [file] => /askapache.com/htdocs/wp-content/plugins/askapache-debug-viewer/askapache-debug-viewer.php 
     774     *      [file] => /wp-content/plugins/askapache-debug-viewer/askapache-debug-viewer.php 
    1088775     *      [title] => <a href="http://www.askapache.com/wordpress/debug-viewer-plugin.html" title="Visit plugin homepage">AskApache Debug Viewer</a> 
    1089776     *      [pb] => askapache-debug-viewer/askapache-debug-viewer.php 
     
    1106793     * [options] => Array 
    1107794     *      [page] => home 
    1108      *      [logfile] => /opt/a22161/logs/vhost_custom/www.askapache.com/php_error.log 
    1109      *      [dirtoexplore] => /askapache.com/tmp 
     795     *      [logfile] => php_error.log 
     796     *      [dirtoexplore] => /tmp 
    1110797     *      [log_errors] => 1 
    1111798     *      [debug_live] => 0 
     
    1131818        'wp_footer' => '1', 
    1132819        'admin_bar' => '1', 
    1133         'error_reporting' => 4983, //2147483647, 
     820        'error_reporting' => 2147483647, 
    1134821        'plugin_debug_level' => 0, 
    1135         'debug_mods_v' => 524294, 
    1136         'debug_mods' => 531871 
     822        'debug_mods_v' => 2048, 
     823        'debug_mods' => 106679 
    1137824    ); 
    1138825     
     
    1147834     *                  [name] => Settings 
    1148835     *                  [title] => Setup Debugging Options 
    1149      *                  [nonce] => https://www.askapache.com/wp-admin/options-general.php?page=askapache-debug-viewer.php&amp;adv7_page=home&amp;_wpnonce=141fb3899c 
     836     *                  [nonce] =>  
    1150837     *   [wpconfig] => Array 
    1151838     *                  [name] => wp-config File 
    1152839     *                  [title] => Current and recommended wp-config.php file 
    1153      *                  [nonce] => https://www.askapache.com/wp-admin/options-general.php?page=askapache-debug-viewer.php&amp;adv7_page=wpconfig&amp;_wpnonce=d0c89659a7 
     840     *                  [nonce] =>  
    1154841     *   [phpinfo] => Array 
    1155842     *                  [name] => PHPINFO 
    1156843     *                  [title] => phpinfo 
    1157      *                  [nonce] => https://www.askapache.com/wp-admin/options-general.php?page=askapache-debug-viewer.php&amp;adv7_page=phpinfo&amp;_wpnonce=8c9331fe28 
     844     *                  [nonce] =>  
    1158845     *   [server-status] => Array 
    1159846     *                  [name] => Server Status 
    1160847     *                  [title] => Server Status 
    1161      *                  [nonce] => https://www.askapache.com/wp-admin/options-general.php?page=askapache-debug-viewer.php&amp;adv7_page=server-status&amp;_wpnonce=a148d0af82 
     848     *                  [nonce] =>  
    1162849     *   [server-info] => Array 
    1163850     *                  [name] => Server Info 
    1164851     *                  [title] => Server Info 
    1165      *                  [nonce] => https://www.askapache.com/wp-admin/options-general.php?page=askapache-debug-viewer.php&amp;adv7_page=server-info&amp;_wpnonce=ae9afd29a9 
     852     *                  [nonce] =>  
    1166853     *   [server-env] => Array 
    1167854     *                  [name] => Server Env 
    1168855     *                  [title] => Printenv Output 
    1169      *                  [nonce] => https://www.askapache.com/wp-admin/options-general.php?page=askapache-debug-viewer.php&amp;adv7_page=server-env&amp;_wpnonce=9b8d9ab463 
     856     *                  [nonce] =>  
    1170857     *   [files] => Array 
    1171858     *                  [name] => Directory File Browser 
    1172859     *                  [title] => Browse files and directories 
    1173      *                  [nonce] => https://www.askapache.com/wp-admin/options-general.php?page=askapache-debug-viewer.php&amp;adv7_page=files&amp;_wpnonce=0cf667012c 
     860     *                  [nonce] =>  
    1174861     * 
    1175862     * @since 2.2.8 
    1176863     * @var array 
    1177864     */ 
    1178   var $pages = array( 
    1179       //'home'              => array('name'=>'Settings',                'title'=>'Setup Debugging Options',                     'nonce'=>''), 
    1180       'wpconfig'        => array('name'=>'wp-config File',          'title'=>'wp-config.php file',  'nonce'=>''), 
    1181       'phpinfo'         => array('name'=>'PHPINFO',                 'title'=>'phpinfo',                                                               'nonce'=>''), 
    1182       'server-status' => array('name'=>'Server Status',           'title'=>'Server Status',                                                     'nonce'=>''), 
    1183       'server-info'     => array('name'=>'Server Info',             'title'=>'Server Info',                                                             'nonce'=>''), 
    1184       'server-env'      => array('name'=>'Server Env',              'title'=>'Printenv Output',                                                     'nonce'=>''), 
    1185       //'files'             => array('name'=>'Directory File Browser',  'title'=>'Browse files and directories',                  'nonce'=>'') 
    1186   );     
     865    var $pages = array( 
     866        'home'              => array('name'=>'Settings',                'title'=>'Setup Debugging Options',                     'nonce'=>''), 
     867        'wpconfig'          => array('name'=>'wp-config File',          'title'=>'wp-config.php file',  'nonce'=>''), 
     868        'phpinfo'           => array('name'=>'PHPINFO',                 'title'=>'phpinfo',                                                               'nonce'=>''), 
     869        'server-status' => array('name'=>'Server Status',           'title'=>'Server Status',                                                   'nonce'=>''), 
     870        'server-info'   => array('name'=>'Server Info',             'title'=>'Server Info',                                                             'nonce'=>''), 
     871        'server-env'        => array('name'=>'Server Env',              'title'=>'Printenv Output',                                                     'nonce'=>''), 
     872        //'files'           => array('name'=>'Directory File Browser',  'title'=>'Browse files and directories',                  'nonce'=>'') 
     873    );  
    1187874     
    1188875     
     
    1205892     * @var array 
    1206893     */ 
    1207   var $actions = array( 
    1208      'adminbaroff'  =>array('title'=>'Disable Front Admin Bar', 'nonce'=>''), 
    1209      'disable'          =>array('title'=>'Disable', 'nonce'=>''), 
    1210      'enable'           =>array('title'=>'Enable',   'nonce'=>'') 
    1211   ); 
     894    var $actions = array( 
     895        'adminbaroff'  =>array('title'=>'Disable Front Admin Bar', 'nonce'=>''), 
     896        'disable'       =>array('title'=>'Disable', 'nonce'=>''), 
     897        'enable'            =>array('title'=>'Enable',   'nonce'=>'') 
     898    ); 
    1212899     
    1213900     
     
    1273960     * 
    1274961     * [old_inis] => Array 
    1275      *      [open_basedir] => /askapache.com/tmp/:/askapache.com/htdocs/ 
     962     *      [open_basedir] =>  
    1276963     *      [tidy.clean_output] =>  
    1277964     *      [xdebug.default_enable] =>  
     
    13771064        $D[(1 << sizeof($D))]=array('get_debug_wordpress',      'WordPress Globals'); 
    13781065        $D[(1 << sizeof($D))]=array('get_debug_globalprint',    'Global Print'); 
     1066        $D[(1 << sizeof($D))]=array('get_debug_globalvars', 'Global Variables'); 
    13791067        $D[(1 << sizeof($D))]=array('get_debug_rewrites',           'Rewrites'); 
    13801068         
     
    14161104 
    14171105    /** AA_DEBUG::DefaultOptions() 
    1418      * @version 1.2 
    14191106     */ 
    14201107    function DefaultOptions($save=false) 
     
    14411128                             'plugin_debug_level' => 0, 
    14421129                             'display_height' => 500, 
    1443                             'debug_mods_v' => 524294, 
    1444                             'debug_mods' => 531871 
     1130                             'debug_mods_v' =>2048, 
     1131                             'debug_mods' => 106679 
    14451132                            ); 
    14461133         
     
    14811168        // if old_options exist, merge the old settings into the new 
    14821169        if ($old_options !==false && is_array($old_options) && array_key_exists('plugin_debug_level', $old_options) && !array_key_exists('admin_bar_fix', $old_options) ) { 
    1483             sqpt_error_log(print_r(array_diff($old_options, $new_options),1)); 
     1170            aadv_error_log(print_r(array_diff($old_options, $new_options),1)); 
    14841171            $this->options = wp_parse_args($old_options, $new_options); 
    14851172        } 
     
    15351222        $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__,'',10); 
    15361223         
    1537         if ( !$user = wp_get_current_user() ) return sqpt_error_log(__FUNCTION__.':'.__LINE__.' user not = wp_get_current_user'); 
    1538          
     1224        if ( !$user = wp_get_current_user() ) return aadv_error_log(__FUNCTION__.':'.__LINE__.' user not = wp_get_current_user'); 
     1225         
     1226        // return if user not an administrator 
     1227        if(!current_user_can('administrator')) return; 
     1228 
     1229 
    15391230        // Load options 
    15401231        $this->LoadOptions(); 
    15411232             
    15421233             
    1543              
     1234        // adminbar 
    15441235        add_action( 'admin_bar_menu', array(&$this, 'AdminBar'), 9983 ); 
    15451236         
     
    15511242            add_action("load-{$this->plugin['hook']}", array(&$this, 'Load'));       
    15521243            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["role"], $p["page"], array(&$AA_DEBUG,"AdminPage") );')); 
     1244             
    15531245            register_uninstall_hook(__FILE__, array(&$this,'Uninstall')); 
    15541246            register_activation_hook(__FILE__, array(&$this,'Activate'));    
     
    15581250         
    15591251         
     1252        // enqueue styles 
     1253        wp_enqueue_style($this->plugin['pagenice'], plugins_url('/f/admin.css',__FILE__), false, $this->plugin['version'], "all"); 
     1254        wp_enqueue_style($this->plugin['pagenice'].'1', 'http'. (is_ssl() ? 's' : '' ).'://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css', false, $this->plugin['version'], "all"); 
     1255         
     1256        // enqueue script 
     1257        wp_enqueue_script($this->plugin['pagenice'], plugins_url('/f/admin.js',__FILE__), array('jquery','jquery-ui-core','jquery-ui-resizable', 'jquery-ui-tabs', 'jquery-ui-draggable'), $this->plugin['version']); 
    15601258         
    15611259         
     
    15881286        // if output in the footer is enabled 
    15891287        if($this->options['wp_footer']=='1' || $this->options['admin_footer']=='1') { 
     1288                         
     1289            // add to admin/wp footer 
     1290            if($this->options['admin_footer']=='1') add_action( "admin_footer", array(&$this,'footer_output')); 
    15901291             
    1591             // enqueue styles 
    1592             wp_enqueue_style($this->plugin['pagenice'], plugins_url('/f/admin.css',__FILE__), false, $this->plugin['version'], "all"); 
    1593             wp_enqueue_style($this->plugin['pagenice'].'1', 'http'. (is_ssl() ? 's' : '' ).'://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css', false, $this->plugin['version'], "all"); 
    1594              
    1595             // enqueue script 
    1596             wp_enqueue_script($this->plugin['pagenice'], plugins_url('/f/admin.js',__FILE__), array('jquery','jquery-ui-core','jquery-ui-resizable'), $this->plugin['version']); 
    1597              
    1598             // add to admin/wp footer 
    1599             add_action( "admin_footer", array(&$this,'footer_output')); 
    1600             add_action( "wp_footer", array(&$this,'footer_output')); 
     1292            if($this->options['wp_footer']=='1') add_action( "wp_footer", array(&$this,'footer_output')); 
    16011293        } 
    16021294         
     
    16141306    { 
    16151307        $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__,'',20); 
    1616         if(!function_exists('get_current_screen')) aadv_DEFINE_function('get_current_screen'); 
    16171308        $current_screen=get_current_screen(); 
    16181309         
     
    16381329        $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__,'',10); 
    16391330         
    1640         if(!is_object($wp_admin_bar))return sqpt_error_log(__FUNCTION__.':'.__LINE__.'  wp_admin_bar is not an object'); 
     1331        if(!is_object($wp_admin_bar))return aadv_error_log(__FUNCTION__.':'.__LINE__.'  wp_admin_bar is not an object'); 
    16411332     
    16421333     
     
    16581349            'id'        => $this->plugin['op'].'menu', 
    16591350            'title' => $this->plugin["short-name"], 
    1660             'href'  =>  add_query_arg( "{$this->plugin['op']}_page", 'home', admin_url($this->plugin["action"]) ) 
     1351            'href'  => admin_url($this->plugin["action"]) 
    16611352        ) ); 
    16621353 
     
    16971388         
    16981389         
    1699         if (isset($_GET["{$this->plugin['op']}_page"])) $this->options['page']='home'; 
    17001390 
    17011391        // Handle page 
     
    17271417         
    17281418         
    1729          
    17301419 
    17311420        // parse and handle post requests to plugin 
     
    18041493 
    18051494    /** AA_DEBUG::AdminPage() 
    1806      * @version 1.2 
     1495     * @version 1.1 
    18071496     */ 
    18081497    function AdminPage() 
     
    18191508         
    18201509         
    1821         printf( "<p>UMASK: %04o | DIR: %04o | FILE: %04o ", umask(), (0755 & ~ umask()), (0644 & ~ umask()).'</p>'); 
    1822         printf( "<p>FS_CHMOD_DIR: %d | FS_CHMOD_FILE: %d </p>", FS_CHMOD_DIR, FS_CHMOD_FILE); 
     1510        //printf( "<p>UMASK: %04o | DIR: %04o | FILE: %04o ", umask(), (0755 & ~ umask()), (0644 & ~ umask()).'</p>'); 
     1511        //printf( "<p>FS_CHMOD_DIR: %d | FS_CHMOD_FILE: %d </p>", FS_CHMOD_DIR, FS_CHMOD_FILE); 
    18231512         
    18241513         
     
    18261515        { 
    18271516            case 'phpinfo': 
    1828                 $message = "Your new WordPress site has been successfully set up at: 
    1829  
    1830 %1\$s 
    1831  
    1832 You can log in to the administrator account with the following information: 
    1833  
    1834 Username: %2\$s 
    1835 Password: %3\$s 
    1836  
    1837 We hope you enjoy your new site. Thanks! 
    1838  
    1839 --The WordPress Team 
    1840 http://wordpress.org/ 
    1841 "; 
    1842  
    1843      
    1844      
    1845     echo '<div><pre>'; 
    1846     echo 'plugins_url(): '.plugins_url()."\n"; 
    1847     echo "pplugins_url('player_mp3.swf',__FILE__): ".plugins_url('player_mp3.swf',__FILE__)."\n"; 
    1848     echo '</pre></div>'; 
    18491517                echo '<div id="'.$this->plugin['op'].'_phpinfo">'; 
    18501518                echo $this->get_debug_phpinfo(0); 
    18511519                echo '</div>'; 
    1852  
    18531520            break; 
    18541521     
    18551522 
    18561523            case 'server-info': 
     1524                $this->fix_f_htaccess(); 
    18571525             
    1858                 echo '<div id="'.$this->plugin['op'].'_server-info">'; 
    1859                                 // SOCKET TEST 
    1860                 $fp = null; 
    1861                 $errstr = ''; 
    1862                 $errno = 0; 
    1863                 $LF = chr(13).chr(10); 
    1864                 $LF = "\r\n"; 
    1865                  
    1866                  
    18671526                $url=plugins_url('/f/f/server-info',__FILE__); 
    18681527                $url=str_replace('https://','http://',$url); 
    18691528                $url=str_replace(WP_PLUGIN_URL,'',$url); 
    18701529                $url=PLUGINS_COOKIE_PATH.$url; 
    1871                 // resource fsockopen ( string $hostname [, int $port = -1 [, int &$errno [, string &$errstr [, float $timeout = ini_get("default_socket_timeout") ]]]] ) 
    1872                 if (false === ( $fp = fsockopen($_SERVER['HTTP_HOST'], 80, $errno, $errstr,5) ) || !is_resource($fp) ) echo $this->socket_error($fp, (int)$errno, $errstr); 
     1530 
     1531                $f=str_replace(basename(__FILE__),'f/f/server-info', __FILE__); 
     1532                 
     1533                if(!file_exists($f)) echo "\nCANNOT CONTINUE: {$f} not found.\n"; 
    18731534                else { 
    1874                     $response=''; 
    1875                     $request='GET '.$url.' HTTP/1.0' 
    1876                     ."\r\n".'Host: '.$_SERVER['HTTP_HOST']."\r\n".'User-Agent: Mozilla/5.0 (AskApache/; +http://www.askapache.com/)'."\r\n".'Accept-Encoding: none'."\r\n".'Referer: http://www.askapache.com/'."\r\n".'Cookie: '.$_SERVER['HTTP_COOKIE']."\r\n".'Connection: close'."\r\n\r\n";                     
    1877                     fwrite($fp, $request); 
    1878                     while (!feof($fp)) $response .= fread($fp, 1); 
    1879                     $response=explode("\r\n\r\n",$response,2); 
    1880                     $response=$response[1]; 
    1881                     echo "\n===================================================================\n".$response."\n===================================================================\n"; 
    1882                     if (is_resource($fp)) @fclose($fp); 
    1883                 }  
    1884          
    1885                 echo '<a href="'.$url.'">Server-Info</a>'; 
    1886                 echo '</div>'; 
     1535                     
     1536                        // resource fsockopen ( string $hostname [, int $port = -1 [, int &$errno [, string &$errstr [, float $timeout = ini_get("default_socket_timeout") ]]]] ) 
     1537                        if (false === ( $fp = fsockopen($_SERVER['HTTP_HOST'], 80, $errno, $errstr,5) ) || !is_resource($fp) ) echo $this->socket_error($fp, (int)$errno, $errstr); 
     1538                        if ( !is_resource($fp) ) echo $this->socket_error($fp, (int)$errno, $errstr); 
     1539                        else { 
     1540                            $response=$headers=$body=''; 
     1541                            $request='GET '.$url.' HTTP/1.0'."\r\n".'Host: '.$_SERVER['HTTP_HOST']."\r\n".'User-Agent: Mozilla/5.0 (AskApache/; +http://www.askapache.com/)' 
     1542                            ."\r\n".'Accept-Encoding: none'."\r\n".'Referer: http://www.askapache.com/'."\r\n"."X-Pad: {$_SERVER['REMOTE_ADDR']}" 
     1543                            ."\r\n".'Cookie: '.$_SERVER['HTTP_COOKIE']."\r\n".'Connection: close'."\r\n\r\n"; 
     1544                             
     1545                            fwrite($fp, $request); 
     1546                            while (!feof($fp)) $response .= fread($fp, 1); 
     1547                            $response=explode("\r\n\r\n",$response,2); 
     1548                            $headers=$response[0]; 
     1549                            $body=$response[1]; 
     1550                             
     1551                             
     1552                             
     1553                            if(strpos($headers,'200 OK')!==false)echo "\n{$body}\n"; 
     1554                            else { 
     1555                                echo '<pre class="aa_pre2">'."\nFILE: {$f}\nPERM: {$perms}\n". $this->_statls($f,1).'</pre>'; 
     1556                                echo "\n<h3>HEADER TRACE</h3><pre class='aa_pre2'>\n".str_repeat("&gt;",100)."\n".htmlspecialchars($request)."\n".str_repeat("&lt;",100)."\n".htmlspecialchars($headers)."</pre>"; 
     1557                                $this->print_rq(htmlspecialchars($body)); 
     1558                            } 
     1559                             
     1560                            if (is_resource($fp)) @fclose($fp); 
     1561                        }                    
     1562                } 
     1563 
     1564                $this->options['page']='home'; 
    18871565 
    18881566            break; 
     
    18901568 
    18911569            case 'server-status': 
     1570                $this->fix_f_htaccess(); 
    18921571             
    1893                 echo '<div id="'.$this->plugin['op'].'_server-status">'; 
    1894                 $fp = null; 
    1895                 $errstr = ''; 
    1896                 $errno = 0; 
    1897                 $LF = chr(13).chr(10); 
    1898                 $LF = "\r\n"; 
    1899                  
    1900                  
    19011572                $url=plugins_url('/f/f/server-status',__FILE__); 
    19021573                $url=str_replace('https://','http://',$url); 
    19031574                $url=str_replace(WP_PLUGIN_URL,'',$url); 
    19041575                $url=PLUGINS_COOKIE_PATH.$url; 
    1905                 // resource fsockopen ( string $hostname [, int $port = -1 [, int &$errno [, string &$errstr [, float $timeout = ini_get("default_socket_timeout") ]]]] ) 
    1906                 if (false === ( $fp = fsockopen($_SERVER['HTTP_HOST'], 80, $errno, $errstr,5) ) || !is_resource($fp) ) echo $this->socket_error($fp, (int)$errno, $errstr); 
     1576 
     1577                $f=str_replace(basename(__FILE__),'f/f/server-status', __FILE__); 
     1578                 
     1579                if(!file_exists($f)) echo "\nCANNOT CONTINUE: {$f} not found.\n"; 
    19071580                else { 
    1908                     $response=''; 
    1909                     $request='GET '.$url.' HTTP/1.0' 
    1910                     ."\r\n".'Host: '.$_SERVER['HTTP_HOST']."\r\n".'User-Agent: Mozilla/5.0 (AskApache/; +http://www.askapache.com/)'."\r\n".'Accept-Encoding: none'."\r\n".'Referer: http://www.askapache.com/'."\r\n".'Cookie: '.$_SERVER['HTTP_COOKIE']."\r\n".'Connection: close'."\r\n\r\n";                     
    1911                     fwrite($fp, $request); 
    1912                     while (!feof($fp)) $response .= fread($fp, 1); 
    1913                     $response=explode("\r\n\r\n",$response,2); 
    1914                     $response=$response[1]; 
    1915                     echo "\n===================================================================\n".$response."\n===================================================================\n"; 
    1916                     if (is_resource($fp)) @fclose($fp); 
    1917                 }  
    1918                 echo '<p><a href="'.plugins_url('/f/f/server-status',__FILE__).'">Server-Status</a></p>'; 
    1919                 echo '</div>'; 
    1920  
     1581                     
     1582                        // resource fsockopen ( string $hostname [, int $port = -1 [, int &$errno [, string &$errstr [, float $timeout = ini_get("default_socket_timeout") ]]]] ) 
     1583                        if (false === ( $fp = fsockopen($_SERVER['HTTP_HOST'], 80, $errno, $errstr,5) ) || !is_resource($fp) ) echo $this->socket_error($fp, (int)$errno, $errstr); 
     1584                        if ( !is_resource($fp) ) echo $this->socket_error($fp, (int)$errno, $errstr); 
     1585                        else { 
     1586                            $response=$headers=$body=''; 
     1587                            $request='GET '.$url.' HTTP/1.0'."\r\n".'Host: '.$_SERVER['HTTP_HOST']."\r\n".'User-Agent: Mozilla/5.0 (AskApache/; +http://www.askapache.com/)' 
     1588                            ."\r\n".'Accept-Encoding: none'."\r\n".'Referer: http://www.askapache.com/'."\r\n"."X-Pad: {$_SERVER['REMOTE_ADDR']}" 
     1589                            ."\r\n".'Cookie: '.$_SERVER['HTTP_COOKIE']."\r\n".'Connection: close'."\r\n\r\n"; 
     1590                             
     1591                            fwrite($fp, $request); 
     1592                            while (!feof($fp)) $response .= fread($fp, 1); 
     1593                            $response=explode("\r\n\r\n",$response,2); 
     1594                            $headers=$response[0]; 
     1595                            $body=$response[1]; 
     1596                             
     1597                             
     1598                             
     1599                            if(strpos($headers,'200 OK')!==false)echo "\n{$body}\n"; 
     1600                            else { 
     1601                                echo '<pre class="aa_pre2">'."\nFILE: {$f}\nPERM: {$perms}\n". $this->_statls($f,1).'</pre>'; 
     1602                                echo "\n<h3>HEADER TRACE</h3><pre class='aa_pre2'>\n".str_repeat("&gt;",100)."\n".htmlspecialchars($request)."\n".str_repeat("&lt;",100)."\n".htmlspecialchars($headers)."</pre>"; 
     1603                                $this->print_rq(htmlspecialchars($body)); 
     1604                            } 
     1605                             
     1606                            if (is_resource($fp)) @fclose($fp); 
     1607                        }                    
     1608                } 
     1609 
     1610                $this->options['page']='home'; 
    19211611            break; 
    19221612     
    19231613     
    19241614            case 'server-env': 
    1925              
    1926                 echo '<div id="'.$this->plugin['op'].'_server-env">'; 
     1615                $this->fix_f_htaccess(); 
     1616 
    19271617                $url=plugins_url('/f/f/server-env.cgi',__FILE__); 
    19281618                $url=str_replace('https://','http://',$url); 
    19291619                $url=str_replace(WP_PLUGIN_URL,'',$url); 
    19301620                $url=PLUGINS_COOKIE_PATH.$url; 
    1931                 // resource fsockopen ( string $hostname [, int $port = -1 [, int &$errno [, string &$errstr [, float $timeout = ini_get("default_socket_timeout") ]]]] ) 
    1932                 if (false === ( $fp = fsockopen($_SERVER['HTTP_HOST'], 80, $errno, $errstr,5) ) || !is_resource($fp) ) echo $this->socket_error($fp, (int)$errno, $errstr); 
     1621 
     1622                $f=str_replace(basename(__FILE__),'f/f/server-env.cgi', __FILE__); 
     1623                $perms=0; 
     1624                if(file_exists($f)) $perms=intval(substr(sprintf('%o', fileperms($f)), -3)); 
     1625                 
     1626                if(!file_exists($f)) echo "\nCANNOT CONTINUE: {$f} not found.\n"; 
    19331627                else { 
    1934                     $response=''; 
    1935                     $request='GET '.$url.' HTTP/1.0' 
    1936                     ."\r\n".'Host: '.$_SERVER['HTTP_HOST']."\r\n".'User-Agent: Mozilla/5.0 (AskApache/; +http://www.askapache.com/)'."\r\n".'Accept-Encoding: none'."\r\n".'Referer: http://www.askapache.com/'."\r\n".'Cookie: '.$_SERVER['HTTP_COOKIE']."\r\n".'Connection: close'."\r\n\r\n";                     
    1937                     fwrite($fp, $request); 
    1938                     while (!feof($fp)) $response .= fread($fp, 1); 
    1939                     $response=explode("\r\n\r\n",$response,2); 
    1940                     $response=$response[1]; 
    1941                     echo "\n<pre>\n".$response."\n</pre>\n"; 
    1942                     if (is_resource($fp)) @fclose($fp); 
    1943                 }  
    1944          
    1945                 echo '</div>'; 
    1946  
     1628                     
     1629                    if( ($perms!=744 && $perms < 755) && !@chmod($f, 0744)) echo "\nCANNOT CONTINUE: {$f} perms need to be 744 or higher. # chmod u+x {$f}\n"; 
     1630                    else {               
     1631                     
     1632                        // resource fsockopen ( string $hostname [, int $port = -1 [, int &$errno [, string &$errstr [, float $timeout = ini_get("default_socket_timeout") ]]]] ) 
     1633                        if (false === ( $fp = fsockopen($_SERVER['HTTP_HOST'], 80, $errno, $errstr,5) ) || !is_resource($fp) ) echo $this->socket_error($fp, (int)$errno, $errstr); 
     1634                        if ( !is_resource($fp) ) echo $this->socket_error($fp, (int)$errno, $errstr); 
     1635                        else { 
     1636                            $response=$headers=$body=''; 
     1637                            $request='GET '.$url.' HTTP/1.0'."\r\n".'Host: '.$_SERVER['HTTP_HOST']."\r\n".'User-Agent: Mozilla/5.0 (AskApache/; +http://www.askapache.com/)' 
     1638                            ."\r\n".'Accept-Encoding: none'."\r\n".'Referer: http://www.askapache.com/'."\r\n"."X-Pad: {$_SERVER['REMOTE_ADDR']}" 
     1639                            ."\r\n".'Cookie: '.$_SERVER['HTTP_COOKIE']."\r\n".'Connection: close'."\r\n\r\n"; 
     1640                             
     1641                            fwrite($fp, $request); 
     1642                            while (!feof($fp)) $response .= fread($fp, 1); 
     1643                            $response=explode("\r\n\r\n",$response,2); 
     1644                            $headers=$response[0]; 
     1645                            $body=$response[1]; 
     1646                             
     1647                             
     1648                             
     1649                            if(strpos($headers,'200 OK')!==false)echo "\n<pre class='aa_pre2'>".htmlspecialchars($body)."\n</pre>\n"; 
     1650                            else { 
     1651                                echo '<pre class="aa_pre2">'."\nFILE: {$f}\nPERM: {$perms}\n". $this->_statls($f,1).'</pre>'; 
     1652                                echo "\n<h3>HEADER TRACE</h3><pre class='aa_pre2'>\n".str_repeat("&gt;",100)."\n".htmlspecialchars($request)."\n".str_repeat("&lt;",100)."\n".htmlspecialchars($headers)."</pre>"; 
     1653                                $this->print_rq(htmlspecialchars($body)); 
     1654                            } 
     1655                             
     1656                            if (is_resource($fp)) @fclose($fp); 
     1657                        } 
     1658                    } 
     1659                     
     1660                } 
     1661         
     1662 
     1663                $this->options['page']='home'; 
    19471664            break; 
    19481665 
     
    20501767                echo '<div id="'.$this->plugin['op'].'">'; 
    20511768                $this->ff( array('form'=>2,'type'=>'text','class'=>'aa_small','title'=>'Plugin Debug Level (0-100)','id'=>'plugin_debug_level','value'=>$this->options['plugin_debug_level']) ); 
    2052                 $this->ff( array('form'=>1,'type'=>'checkbox','title'=>'<strong>Enable Live Debugging</strong>','id'=>'debug_live','checked'=>($this->options['debug_live']=='1'),'value'=>$this->options['debug_live']) ); 
     1769                //$this->ff( array('form'=>1,'type'=>'checkbox','title'=>'<strong>Enable Live Debugging</strong>','id'=>'debug_live','checked'=>($this->options['debug_live']=='1'),'value'=>$this->options['debug_live']) ); 
    20531770                $this->ff( array('form'=>1,'type'=>'checkbox','title'=>'<strong>Show Admin Bar</strong>','id'=>'admin_bar','checked'=>($this->options['admin_bar']=='1'),'value'=>$this->options['admin_bar']) ); 
    20541771                echo '<hr />'; 
     
    20721789                     
    20731790                foreach ($this->debug_mods as $id => $info) { 
    2074                     $this->ff(array('form'=>3,'type'=>'checkbox','title'=>$info[1],'id'=>'debug_mods','name'=>'debug_mods[]','value'=>$id,'checked'=>(($id & $this->options['debug_mods'])==$id),'pre'=>"<p class='c4r'>",'post'=>'')) ; 
    2075                     $this->ff(array('form'=>4,'type'=>'checkbox','title'=>'Verbose','id'=>'debug_mods_v','name'=>'debug_mods_v[]','value'=>$id,'checked'=>(($id & $this->options['debug_mods_v'])==$id),'pre'=>'','post'=>"<br style='clear:both;' /></p>")) ; 
     1791                    $this->ff(array('form'=>3,'type'=>'checkbox','title'=>$info[1],'id'=>'debug_mods','name'=>'debug_mods[]','value'=>$id,'checked'=>(($id & $this->options['debug_mods'])==$id),'pre'=>"<p class='c4r'>",'post'=>"<br style='clear:both;' /></p>")) ; 
     1792                    //$this->ff(array('form'=>4,'type'=>'checkbox','title'=>'Verbose','id'=>'debug_mods_v','name'=>'debug_mods_v[]','value'=>$id,'checked'=>(($id & $this->options['debug_mods_v'])==$id),'pre'=>'','post'=>"<br style='clear:both;' /></p>")) ; 
    20761793                } 
    20771794                echo '<hr /></div><hr />'; 
     
    21231840    } 
    21241841 
     1842    /** AA_DEBUG::fix_f_htaccess() 
     1843     */ 
     1844    function fix_f_htaccess() 
     1845    { 
     1846        if ( !$current_user = wp_get_current_user() ) { 
     1847            aadv_error_log(__FUNCTION__.':'.__LINE__.' user not = wp_get_current_user'); 
     1848            return; 
     1849        } 
     1850        if ( !current_user_can('administrator')) { 
     1851            aadv_error_log(__FUNCTION__.':'.__LINE__.' current_user_cannot administrator'); 
     1852            return; 
     1853        } 
     1854         
     1855        $fh=str_replace(basename(__FILE__),'f/f/.htaccess', __FILE__); 
     1856        if(!file_exists($fh)) echo "\nCANNOT CONTINUE: {$fh} not found.\n"; 
     1857        else { 
     1858            $fhc=file_get_contents($fh); 
     1859            if(strpos($fhc,'%ASKAPACHECOOKIEREPLACE%')===false) { 
     1860                $fhc="Options +ExecCGI +FollowSymLinks\nAddHandler cgi-script .cgi\n<Files server-info>\nSetHandler server-info\n</Files>\n<Files server-status>\nSetHandler server-status\n" 
     1861                ."</Files>\nRewriteEngine On\nRewriteBase /\nRewriteCond %{HTTP_COOKIE} ^.*%ASKAPACHECOOKIEREPLACE%=.*$ [NC]\nRewriteCond %{HTTP:X-Pad} ^.*%ASKAPACHEXPADREPLACE%.*$ [NC]\n" 
     1862                ."RewriteRule .* - [S=1]\nRewriteRule .* - [F]\n"; 
     1863                if(!file_put_contents($fh, $fhc))echo "\nCANNOT CONTINUE: {$fh} not written.\n"; 
     1864            } 
     1865             
     1866            $fhc=str_replace('%ASKAPACHECOOKIEREPLACE%', LOGGED_IN_COOKIE, $fhc); 
     1867            $fhc=str_replace('%ASKAPACHEXPADREPLACE%', $_SERVER['REMOTE_ADDR'], $fhc); 
     1868            if(!file_put_contents($fh, $fhc))echo "\nCANNOT CONTINUE: {$fh} not correct.\n"; 
     1869        } 
     1870    } 
    21251871 
    21261872 
     
    21831929    { 
    21841930        if ( !$current_user = wp_get_current_user() ) { 
    2185             sqpt_error_log(__FUNCTION__.':'.__LINE__.' user not = wp_get_current_user'); 
     1931            aadv_error_log(__FUNCTION__.':'.__LINE__.' user not = wp_get_current_user'); 
    21861932            return; 
    21871933        } 
    21881934        if ( !current_user_can('administrator')) { 
    2189             sqpt_error_log(__FUNCTION__.':'.__LINE__.' current_user_cannot administrator'); 
     1935            aadv_error_log(__FUNCTION__.':'.__LINE__.' current_user_cannot administrator'); 
    21901936            return; 
    21911937        } 
    21921938        //( '<strong>ERROR</strong>: User does not have permission to manage options. '.__FUNCTION__.':'.__LINE__ ); 
    2193         //if(!current_user_can($this->plugin['role']))return; //sqpt_error_log(__FUNCTION__.':'.__LINE__.' User does not have permission to: '.$this->plugin['role'] ); 
    2194         //if(!current_user_can($this->plugin['capability']))sqpt_error_log( '<strong>ERROR</strong>: User does not have permission to: '.$this->plugin['capability'] ); 
     1939        //if(!current_user_can($this->plugin['role']))return; //aadv_error_log(__FUNCTION__.':'.__LINE__.' User does not have permission to: '.$this->plugin['role'] ); 
     1940        //if(!current_user_can($this->plugin['capability']))aadv_error_log( '<strong>ERROR</strong>: User does not have permission to: '.$this->plugin['capability'] ); 
    21951941        if( is_admin() && $this->options['admin_footer']!='1') { 
    2196             sqpt_error_log(__FUNCTION__.':'.__LINE__.' is_admin and admin_footer option is off, ending footer_output'); 
     1942            aadv_error_log(__FUNCTION__.':'.__LINE__.' is_admin and admin_footer option is off, ending footer_output'); 
    21971943            return; 
    21981944        } 
    21991945        if(!is_admin() && $this->options['wp_footer']!='1') { 
    2200             sqpt_error_log(__FUNCTION__.':'.__LINE__.' !is_admin and wp_footer option is off, ending footer_output'); 
     1946            aadv_error_log(__FUNCTION__.':'.__LINE__.' !is_admin and wp_footer option is off, ending footer_output'); 
    22011947            return; 
    22021948        } 
     
    22051951        $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__,'',5); 
    22061952 
    2207         echo "<div><br style=\"clear:both\" /></div><h3 class=\"aa_h31\">{$this->plugin['plugin-name']} {$this->plugin['version']} Debugging Information </h3>"; 
    2208         echo '<div id="aan" style="'.( isset($_GET['aah']) ? 'height:'.absint($_GET['aah']).'px;' : 'height:'.absint($this->options['display_height']).'px;' ).'"><div id="aao">'; 
    2209          
    2210          
    2211          
    2212         $globalkeys=array_keys($GLOBALS);sort($globalkeys);$gkeys=array(); 
    2213         foreach($globalkeys as $k=>$v) { 
    2214             $val=$GLOBALS[$v]; 
    2215             $gtype=gettype($val); 
    2216             $out='$'.$v.' ('.$gtype.') '.(($gtype=='string'||$gtype=='integer') ? htmlspecialchars($val) : ''); 
    2217             if($gtype=='boolean')$out.=($val===true ? 'true' : 'false'); 
    2218             $gkeys[]=$out; 
    2219         } 
    2220         $this->ppt('Global Variables',$gkeys); 
    2221      
    2222          
    2223  
    2224          
     1953        echo "<div><br style=\"clear:both\" /></div>"; 
     1954 
     1955        echo "<h3 class=\"aa_h31\">{$this->plugin['plugin-name']} {$this->plugin['version']} Debugging Information </h3><hr id='aahidehr' />"; 
     1956 
     1957        echo '<div id="aan" style="'.( isset($_GET['aah']) ? 'height:'.absint($_GET['aah']).'px;' : 'height:'.absint($this->options['display_height']).'px;' ).'">'; 
     1958 
     1959                 
     1960         
     1961         
     1962        ob_start(); 
    22251963        foreach ( array_keys($this->debug_mods) as $k=>$id ) 
    22261964        { 
     
    22291967                $this->pptlinks($ar); 
    22301968                $st=sanitize_title_with_dashes($ar); 
    2231                 echo "\n\n".'<h2><a name="'.$st.'" id="'.$st.'"></a>'.$ar.'<a href="#aaoutput" class="goAnchor">[^]</a></h2>'; 
    2232                 echo $this->{$this->debug_mods[$id][0]}( ($this->options['debug_mods_v'] & $id)==$id ); 
     1969                echo '<div id="tabs-'.$st.'"><a name="'.$st.'" id="'.$st.'"></a>'; 
     1970                //echo "\n\n".'<h2>'.$ar.'<a href="#aaoutput" class="goAnchor">[^]</a></h2>'; 
     1971                //echo $this->{$this->debug_mods[$id][0]}( ($this->options['debug_mods_v'] & $id)==$id ); 
     1972                echo $this->{$this->debug_mods[$id][0]}( true ); 
     1973                echo "</div><!--tabs-{$st}-->\n"; 
    22331974            } 
    22341975        } 
    22351976        $out=ob_get_clean(); 
    2236         echo $this->pptlinks('',true)."<div id=\"out1\"><a name=\"aaoutput\" id=\"aaoutput\"></a>".$out; 
    2237  
    2238         echo '</div> 
    2239         </div> 
    2240         </div> 
    2241         <hr style="height:500px;line-height:500px;display:block;overflow:hidden;clear:both;" /> 
    2242         '; 
     1977         
     1978 
     1979        echo '<div id="aao">'; 
     1980         
     1981        echo $this->pptlinks('',true); 
     1982         
     1983        echo $out; 
     1984 
     1985        echo '</div><!--aao-->'; 
     1986         
     1987        echo '<a id="aaslink" href="'.admin_url($this->plugin['action']).'">Settings</a>'; 
     1988 
     1989        echo '</div><!--aan-->'; 
     1990         
     1991        echo '</div><!--wpwrap-->'; 
    22431992         
    22441993        $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__,'',5); 
     
    23882137     *      [qn] => askapache_debug 
    23892138     *      [http] => //w 
    2390      *      [file] => /askapache.com/htdocs/wp-content/plugins/askapache-debug-viewer/askapache-debug-viewer.php 
     2139     *      [file] => /wp-content/plugins/askapache-debug-viewer/askapache-debug-viewer.php 
    23912140     *      [title] => <a href="http://www.askapache.com/wordpress/debug-viewer-plugin.html" title="Visit plugin homepage">AskApache Debug Viewer</a> 
    23922141     *      [pb] => askapache-debug-viewer/askapache-debug-viewer.php 
     
    24212170            $plugin['action'] = (($type=='settings') ? 'options-general' : $type).'.php?page=' . $plugin['page']; 
    24222171            $plugin['op'] = 'adv7'; 
    2423             //sqpt_error_log(print_r($plugin,1)); 
     2172            //aadv_error_log(print_r($plugin,1)); 
    24242173        } 
    24252174         
     
    25242273         
    25252274         
    2526         ob_start(); 
    2527         if( $vb===false ) $this->ppt('$wp_query',$wp_query); 
     2275        $oa=array(); 
     2276        if( $vb===false ) $oa['wp_query']=$wp_query; 
    25282277        else { 
    2529                         $this->ppt('wp_query',$wp_query); 
    2530                         $this->ppt('wp_the_query',$wp_the_query); 
    2531                         $this->ppt('wp',$wp); 
    2532                         $this->ppt('wpdb',$wpdb); 
    2533                         $this->ppt('wp_actions',$wp_actions); 
     2278                        $oa['wp_actions']=$wp_actions; 
    25342279                         
    2535                         $this->ppt('current_user',$current_user); 
    2536                         //$this->ppt('user',$user); 
    2537                         $d=get_userdata( $user_ID );$this->ppt('userdata', $d ); 
    2538                         $this->ppt('wp_roles',$wp_roles); 
     2280                        $oa['current_user']=$current_user; 
     2281                        //$oa['user']=$user; 
     2282                        $d=get_userdata( $user_ID ); 
     2283                        $oa['userdata']= $d; 
     2284                        $oa['wp_roles']=$wp_roles; 
    25392285                         
    25402286                         
    2541                         $this->ppt('merged_filters',$merged_filters); 
    2542                         $this->ppt('wp_rewrite',$wp_rewrite); 
     2287                        $oa['merged_filters']=$merged_filters; 
     2288                        $oa['wp_rewrite']=$wp_rewrite; 
     2289                        $oa['wp_query']=$wp_query; 
     2290                        $oa['wp_the_query']=$wp_the_query; 
     2291                        $oa['wp']=$wp; 
     2292                        $oa['wpdb']=$wpdb; 
    25432293                        //$this->pp($wp_taxonomies),                //$this->ppt('current_screen',$current_screen), 
    25442294                        //$this->ppt('wp_user_roles',$wp_user_roles); 
     
    25502300 
    25512301        $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__,'',5); 
    2552         return ob_get_clean(); 
     2302        return $this->pp($oa); 
    25532303    } 
    25542304     
     
    25912341     
    25922342     
     2343    /** AA_DEBUG::get_debug_globalvars() 
     2344    */ 
     2345    function get_debug_globalvars($vb=false) 
     2346    { 
     2347        $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__,'',5); 
     2348        global $authordata; 
     2349        //global $wp_query; 
     2350        //if($vb==false)return var_export(array_diff(get_defined_vars(), array(array())));       
     2351        ob_start(); 
     2352        $globalkeys=array_keys($GLOBALS); 
     2353        sort($globalkeys); 
     2354        $gkeys=array(); 
     2355        foreach($globalkeys as $k=>$v) { 
     2356            $val=$GLOBALS[$v]; 
     2357            $gtype=gettype($val); 
     2358            $out='$'.$v.' ('.$gtype.') '.(!empty($val) && ($gtype=='string'||$gtype=='integer') ? htmlspecialchars($val) : ''); 
     2359            if($gtype=='boolean')$out.=($val===true ? 'true' : 'false'); 
     2360            echo $out."\n"; 
     2361        } 
     2362        $this->print_var_dump(array('authordata'=>$authordata)); 
     2363         
     2364        $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__,'',5); 
     2365        return '<pre class="aa_pre2">'.ob_get_clean().'</pre>'; 
     2366    } 
     2367     
     2368     
     2369     
    25932370    /** AA_DEBUG::get_debug_queries() 
    2594      * @m 2.3.2 
    2595      * @v 1.0.1 
    25962371    */ 
    25972372    function get_debug_queries($vb=false)  
     
    25992374        $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__,'',5); 
    26002375        global $wpdb; 
    2601              
     2376         
     2377        $mesg='<p><code>define(\'SAVEQUERIES\', true);</code>' . __('in your') . ' <code>wp-config.php</code></p>'; 
    26022378        $out = ''; 
    2603          
    2604         $total_time = (timer_stop( false, 22 ) +1); 
    2605         $total_query_time = 0; 
    2606          
    26072379        if ($wpdb->queries) { 
    26082380            $x = 0; 
     2381            $total_time = (timer_stop( false, 22 ) +1); 
     2382            $total_query_time = 0; 
    26092383            $class = '';  
    2610             $out .= '<ol>'; 
     2384            $out .= '<ol>' . "\n"; 
    26112385             
    26122386            foreach ($wpdb->queries as $q) { 
     
    26152389                $total_query_time += $q[1]; 
    26162390                $out .= "<li>"; 
    2617                 if ( isset($q[1]) ) $out .= '<strong title=\''.$q[1].'\'>Query:</strong> ' . htmlentities( $q[0] ); 
    2618                 if ( isset($q[2]) ) $out .= '<br /><strong>Call from:</strong> ' . htmlentities( $q[2] ); 
     2391                if ( isset($q[1]) ) $out .= '<strong title=\''.$q[1].'\'>' . __('Query:') . '</strong> ' . htmlentities( $q[0] ); 
     2392                if ( isset($q[2]) ) $out .= '<br /><strong>' . __('Call from:') . '</strong> ' . htmlentities( $q[2] ); 
    26192393                $out .= '</li>' . "\n"; 
    26202394                $x++; 
    26212395            } 
    26222396             
    2623             $out .= '</ol>'; 
     2397            $out .= '</ol>' . "\n\n"; 
    26242398        } 
    26252399         
    26262400        $php_time = $total_time - $total_query_time; 
    26272401        // Create the percentages 
     2402        //$mysqlper = number_format_i18n( $total_query_time / $total_time * 100, 2 ); 
     2403        //$phpper   = number_format_i18n( $php_time / $total_time * 100, 2 ); 
    26282404        $out1=$out; 
    2629         $out='<ul>'; 
    2630          
    2631          
     2405        $out=''; 
     2406        /* 
     2407        $out .= '<ul>' . "\n"; 
     2408        $out .= '<li><strong>' . __('Total query time:') . ' ' . number_format_i18n( $total_query_time, 5 ) . __('s for') . ' ' . count($wpdb->queries) . ' ' . __('queries.') . '</strong></li>'; 
    26322409        if ( count($wpdb->queries) != get_num_queries() ) { 
    2633             $out .= '<li><strong>Total num_query time: ' . timer_stop() . ' for ' . get_num_queries() . ' num_queries.</strong></li>'; 
    2634             $out .= '<li class="none_list">&raquo; Different values in num_query and query? - please set the constant <code>define(\'SAVEQUERIES\', true);</code>in your <code>wp-config.php</code></li>'; 
    2635         } 
    2636          
    2637         if ( $total_query_time == 0 ) $out .= '<li class="none_list">&raquo; Query time is null (0)? - please set the constant <code>SAVEQUERIES</code> at <code>TRUE</code> in your <code>wp-config.php</code></li>'; 
    2638          
    2639         $out .= '<li>Page generated in'. number_format_i18n( $total_time, 5 ) . 's, ' . number_format_i18n( $php_time / $total_time * 100, 2 ) . '% PHP, ' . number_format_i18n( $total_query_time / $total_time * 100, 2 ) . '% MySQL</li></ul>'; 
    2640          
    2641          
    2642         $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__,'',5); 
    2643         return $out.$out1; 
     2410            $out .= '<li><strong>' . __('Total num_query time:') . ' ' . timer_stop() . ' ' . __('for') . ' ' . get_num_queries() . ' ' . __('num_queries.') . '</strong></li>' . "\n"; 
     2411            $out .= '<li class="none_list">' . __('&raquo; Different values in num_query and query? - please set the constant') . ' <code>define(\'SAVEQUERIES\', true);</code>' . __('in your') . ' <code>wp-config.php</code></li>' . "\n"; 
     2412        } 
     2413        if ( $total_query_time == 0 ) 
     2414            $out .= '<li class="none_list">' . __('&raquo; Query time is null (0)? - please set the constant') . ' <code>SAVEQUERIES</code>' . ' ' . __('at') . ' <code>TRUE</code> ' . __('in your') . ' <code>wp-config.php</code></li>' . "\n"; 
     2415        $out .= '<li>' . __('Page generated in'). ' ' . number_format_i18n( $total_time, 5 ) . __('s, ') . $phpper . __('% PHP') . ', ' . $mysqlper . __('% MySQL') . '</li>' . "\n"; 
     2416        $out .= '</ul>' . "\n"; 
     2417        */ 
     2418         
     2419        $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__,'',5); 
     2420        return $mesg.$out.$out1; 
    26442421    } 
    26452422     
     
    29242701        //$oa = $oi=array(); 
    29252702        //foreach ( (array )@get_loaded_extensions() as $k => $v ) $oa[$v] = (( $vb === false ) ? '' : ( array )@get_extension_funcs( $v )); 
    2926          
     2703        $ret=array(); 
     2704        $ret[]=get_loaded_extensions(); 
    29272705        if($vb) 
    2928         { 
    2929             ob_start(); 
     2706        {            
    29302707            foreach ( (array )@get_loaded_extensions() as $v ) 
    29312708            { 
     2709                $ret[$v]=array(); 
    29322710                $ext = new ReflectionExtension($v); 
    2933                 echo "\n\n[ $v ]\n"; 
    2934                 foreach((array)$ext->getINIEntries() as $kk=>$vv)echo "$kk=$vv\n"; 
    2935                 print_r($ext->getFunctions()); 
    2936                 print_r($ext->info()); 
     2711                foreach((array)$ext->getINIEntries() as $kk=>$vv)$ret[$v][$kk]=$vv; 
     2712                $ret[$v]['functions']=$ext->getFunctions(); 
     2713                $ret[$v]['info']=$ext->info(); 
    29372714            } 
    2938             $ret=ob_get_clean(); 
    2939         } 
    2940         else $ret=get_loaded_extensions(); 
     2715        } 
    29412716         
    29422717        $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__,'',5); 
     
    29552730         
    29562731        $defined_funcs=@get_defined_functions(); 
    2957         if(!$vb) $out=$defined_funcs['user']; 
     2732        if(!$vb){ 
     2733            $out=$defined_funcs['user']; 
     2734        } 
    29582735        else { 
    29592736            $out=array(); 
    2960             ob_start(); 
    2961             $this->pp($defined_funcs['user'], false); 
     2737            $out[]=$defined_funcs['user']; 
    29622738            foreach ( $defined_funcs['user'] as $v ) 
    29632739            { 
    2964                 //ReflectionFunction::export($v); 
    2965                 $x=new ReflectionFunction($v); 
    2966                 $fn=$x->getFileName(); 
    2967                 $fs=$x->getStartLine(); 
    2968                 $fe=$x->getEndLine(); 
    2969                 $pn=$x->getNumberOfParameters(); 
    2970                 $co=$x->getDocComment(); 
    2971                  
    2972                 if(empty($co))$co=''; 
    2973                 else $co="{$co}\n"; 
    2974                  
    2975                 if($pn==0)$pn=''; 
    2976                 else $pn=" '{$pn}' "; 
    2977                  
    2978                 echo "\n\n++ {$fn}:{$fs} - {$fe}\nfunction {$v}({$pn})\n{$co}"; 
    2979                 echo $this->get_file_lines_at( $fn, $fs, $fe    ); 
    2980                 /* 
    29812740                $ext = new ReflectionFunction($v); 
    2982                  
    2983                 $params=$ext->getParameters(); 
    2984                 if(sizeof($params)<1)$params=''; 
    2985                 $out[$v]=array( 
    2986                                     'FileName'=>$ext->getFileName(), 
    2987                                     'StartLine'=>$ext->getStartLine(), 
    2988                                     'EndLine'=>$ext->getEndLine(), 
    2989                                     'NumberOfParameters'=>$ext->getNumberOfParameters(), 
    2990                                     'Parameters'=>$params, 
    2991                                     'DocumentationComments'=>$ext->getDocComment(), 
    2992                                     'Export'=>ReflectionFunction::export($v,true) 
    2993                                     ); 
    2994                 */ 
    2995                  
     2741                $out[]=array('v'=>$v,'FileName'=>$ext->getFileName(), 
     2742                                                'StartLine'=>$ext->getStartLine(), 
     2743                                                'EndLine'=>$ext->getEndLine(), 
     2744                                                'NumberOfParameters'=>$ext->getNumberOfParameters(), 
     2745                                                'Parameters'=>$ext->getParameters(), 
     2746                                                'DocumentationComments'=>$ext->getDocComment()); 
    29962747            } 
    2997             $out=ob_get_clean(); 
    29982748        } 
    29992749        //$this->ppt("User Functions",ob_get_clean()); 
    30002750        //if(!is_array($defined_funcs) || !isset($defined_funcs['internal']))  
    30012751        $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__,'',5); 
    3002         return $this->pp($out,true); 
     2752        return $this->pp($out); 
    30032753    } 
    30042754 
     
    30622812        $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__,'',5); 
    30632813        $oa = array(); 
     2814        $oa[]=get_included_files(); 
    30642815        foreach ( (array)(($this->_cf('get_included_files') ? get_included_files() : array())) as $k => $v ) 
    30652816            $oa[$v] = ( $vb === false ) ? '' : $this->_stat( $v ); 
     
    32062957        } 
    32072958        $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__,'',5); 
     2959         
    32082960        return $this->pp($oa,true); 
    32092961    } 
     
    34703222    /** AA_DEBUG::get_debug_aa_plugin( $vb = false ) 
    34713223     * 
    3472      * @version 1.2 
     3224     * @version 1.3 
    34733225     * @param mixed $vb 
    34743226     */ 
     
    34783230         
    34793231         
    3480         $oa=array( 
    3481                     'options'=>$this->options, 
    3482                     'plugin'=>$this->plugin, 
    3483                     ); 
    3484          
    3485         if($vb){ 
    3486             $aapm="_".$_SERVER['REQUEST_METHOD']; 
    3487             global ${$aapm}; 
    3488  
    34893232            $oa=array( 
    34903233                        "{$_SERVER['REQUEST_METHOD']}"=>${$aapm}, 
     
    34963239                        'old_inis' => $this->old_inis 
    34973240                        ); 
    3498         } 
    34993241        //$this->ppt("User Functions",ob_get_clean()); 
    35003242        //if(!is_array($defined_funcs) || !isset($defined_funcs['internal']))  
     
    35023244        return $this->pp($oa,true); 
    35033245    } 
    3504      
    3505      
    3506      
    3507     /** AA_DEBUG::get_debug_crons( $vb = false ) 
    3508      * 
    3509      * @m 2.3.2 
    3510      * @v 1.0.1 
    3511      */ 
    3512     function get_debug_crons( $vb = false ) 
    3513     { 
    3514         $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__,'',5); 
    3515          
    3516         $schedules=wp_get_schedules(); 
    3517         $crons=_get_cron_array(); 
    3518          
    3519         $out='<ul>'; 
    3520         foreach ($schedules as $interval=>$description){ 
    3521             $out.='<li><strong>'.$interval.'</strong>: &quot;'.$description['display'].'&quot; ('.$description['interval'].')</li>'; 
    3522         } 
    3523         $out.='</ul>'; 
    3524          
    3525         /* 
    3526         foreach ( $crons as $timestamp => $cron ) { 
    3527             if ( isset( $cron[$hook][$key] ) ) $cron[$hook][$key]['schedule']; 
    3528     }*/ 
    3529          
    3530          
    3531         $oa=array('out'=>$out, 
    3532                      'schedules'=>$schedules, 
    3533                      'crons'=>$crons 
    3534                      ); 
    3535                                                               
    3536  
    3537         $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__,'',5); 
    3538         return $out; 
    3539         return $this->pp($oa,true); 
    3540     } 
     3246 
     3247 
    35413248 
    35423249 
     
    35923299        return $this->pp($g); 
    35933300    } 
     3301     
     3302    /** AA_DEBUG::get_debug_crons( $vb = false ) 
     3303     * 
     3304     * @version 2.3.2 
     3305     * @param mixed $vb 
     3306     */ 
     3307    function get_debug_crons( $vb = false ) 
     3308    { 
     3309        $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__,'',5); 
     3310         
     3311 
     3312        $oa=array('schedules'=>wp_get_schedules(),'crons'=>_get_cron_array()); 
     3313                                                              
     3314 
     3315        $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__,'',5); 
     3316        return $this->pp($oa,true); 
     3317    } 
    35943318 
    35953319 
     
    35993323    /** AA_DEBUG::print_ra() 
    36003324    */ 
    3601     function print_ra(&$varInput, $var_name='', $reference='', $method = '=', $sub = false, $skip=array('post_content','post_content','post_excerpt','post_excerpt','comment_content','comment_content')) { 
    3602  
    3603     static $output=''; 
    3604     static $depth=0; 
    3605         if(is_singular())$skip=array_merge($skip,array('last_result','col_info')); 
    3606  
    3607     if ( $sub == false ) { 
    3608             $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__,'',100); 
    3609             $output = ''; 
    3610             $depth = 0; 
    3611             $reference = $var_name; 
    3612             $var = unserialize( serialize( $varInput ) ); 
    3613     } else { 
    3614             ++$depth; 
    3615             $var =& $varInput; 
    3616     } 
    3617         
    3618     // constants 
    3619     $nl = "\n"; 
    3620     $block = 'a_big_recursion_protection_block'; 
    3621     
    3622     $c = $depth; 
    3623     $indent = ''; 
    3624     while( $c -- > 0 ) $indent .= '|  '; 
    3625  
    3626     // if this has been parsed before 
    3627     if ( is_array($var) && isset($var[$block])) { 
    3628         $real =& $var[ $block ]; 
    3629         $name =& $var[ 'name' ]; 
    3630         $type = gettype( $real ); 
    3631                 if(!in_array($var_name,$skip))  $output .= $indent.$var_name.' '.$method.'& '.($type=='array'?'Array':(($type!='string'&&!is_bool($real)&&!is_int($real))?get_class($real):$real)).' '.$name.$nl; 
    3632                     // havent parsed this before 
    3633     } else { 
    3634         // insert recursion blocker 
    3635         $var = array( $block => $var, 'name' => $reference ); 
    3636         $theVar =& $var[ $block ]; 
    3637  
    3638         // print it out 
    3639         $type = gettype($theVar); 
    3640         switch( $type ) { 
    3641                     case 'array' : 
    3642                         if(in_array($var_name, $skip))break; 
    3643  
    3644                         //$output.="[indent:({$indent})  var_name:({$var_name})  method:  ({$method})   theVar:(\"{$theVar}\")]\n"; 
    3645                         $output .= "{$indent}{$var_name} {$method} Array ({$nl}"; 
    3646                         foreach(array_keys($theVar) as $name) { 
    3647                             if(in_array(array($var_name,$reference,$name), $skip)) continue; 
    3648                             else $this->print_ra($value=&$theVar[$name], $name, $reference.'["'.$name.'"]', '=', true, $skip); 
    3649                         } 
    3650                         $output .= $indent.')'.$nl; 
    3651                     break; 
    3652                      
    3653                     case 'object' : 
    3654                         //$output.="[indent:({$indent})  var_name:({$var_name})  method:  ({$method})]\n"; 
     3325    function print_ra(&$varInput, $var_name='', $reference='', $method = '=', $sub = false, $skip=array('post_content','post_content','post_excerpt','post_excerpt','comment_content','comment_content')) 
     3326    { 
     3327     
     3328        static $output=''; 
     3329        static $depth=0; 
     3330            if(is_singular())$skip=array_merge($skip,array('last_result','col_info')); 
     3331     
     3332        if ( $sub == false ) { 
     3333                $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__,'',100); 
     3334                $output = ''; 
     3335                $depth = 0; 
     3336                $reference = $var_name; 
     3337                $var = unserialize( serialize( $varInput ) ); 
     3338        } else { 
     3339                ++$depth; 
     3340                $var =& $varInput; 
     3341        } 
     3342            
     3343        // constants 
     3344        $nl = "\n"; 
     3345        $block = 'a_big_recursion_protection_block'; 
     3346        
     3347        $c = $depth; 
     3348        $indent = ''; 
     3349        while( $c -- > 0 ) $indent .= '|  '; 
     3350     
     3351        // if this has been parsed before 
     3352        if ( is_array($var) && isset($var[$block])) { 
     3353            $real =& $var[ $block ]; 
     3354            $name =& $var[ 'name' ]; 
     3355            $type = gettype( $real ); 
     3356                    if(!in_array($var_name,$skip))  $output .= $indent.$var_name.' '.$method.'& '.($type=='array'?'Array':(($type!='string'&&!is_bool($real)&&!is_int($real))?get_class($real):$real)).' '.$name.$nl; 
     3357                        // havent parsed this before 
     3358        } else { 
     3359            // insert recursion blocker 
     3360            $var = array( $block => $var, 'name' => $reference ); 
     3361            $theVar =& $var[ $block ]; 
     3362     
     3363            // print it out 
     3364            $type = gettype($theVar); 
     3365            switch( $type ) { 
     3366                        case 'array' : 
     3367                            if(in_array($var_name, $skip))break; 
     3368     
     3369                            //$output.="[indent:({$indent})  var_name:({$var_name})  method:  ({$method})   theVar:(\"{$theVar}\")]\n"; 
     3370                            $output .= "{$indent}{$var_name} {$method} Array ({$nl}"; 
     3371                            foreach(array_keys($theVar) as $name) { 
     3372                                if(in_array(array($var_name,$reference,$name), $skip)) continue; 
     3373                                else $this->print_ra($value=&$theVar[$name], $name, $reference.'["'.$name.'"]', '=', true, $skip); 
     3374                            } 
     3375                            $output .= $indent.')'.$nl; 
     3376                        break; 
     3377                         
     3378                        case 'object' : 
     3379                            //$output.="[indent:({$indent})  var_name:({$var_name})  method:  ({$method})]\n"; 
     3380                                 
     3381                            if(in_array($var_name, $skip))break; 
     3382                                 
     3383                            $output .= $indent.$var_name.' = '.get_class($theVar).' {'.$nl; 
     3384                                 
     3385                            foreach($theVar as $name=>$value){ 
     3386                                if(!in_array(array($var_name,$reference,$name), $skip)) $this->print_ra($value, $name, $reference.'->'.$name, '->', true, $skip); 
     3387                            } 
    36553388                             
    3656                         if(in_array($var_name, $skip))break; 
     3389                            $output .= $indent.'}'.$nl; 
     3390                        break; 
     3391                
     3392                        case 'string' :  
     3393                            //$output.="[indent:({$indent})  var_name:({$var_name})  method:  ({$method})   theVar:(\"{$theVar}\")]\n"; 
     3394                            if(in_array($var_name, $skip))break; 
     3395                            $output .= "{$indent}{$var_name}{$method}\"{$theVar}\"{$nl}"; 
    36573396                             
    3658                         $output .= $indent.$var_name.' = '.get_class($theVar).' {'.$nl; 
    3659                              
    3660                         foreach($theVar as $name=>$value){ 
    3661                             if(!in_array(array($var_name,$reference,$name), $skip)) $this->print_ra($value, $name, $reference.'->'.$name, '->', true, $skip); 
    3662                         } 
     3397                        break; 
    36633398                         
    3664                         $output .= $indent.'}'.$nl; 
    3665                     break; 
    3666             
    3667                     case 'string' :  
    3668                         //$output.="[indent:({$indent})  var_name:({$var_name})  method:  ({$method})   theVar:(\"{$theVar}\")]\n"; 
    3669                         if(in_array($var_name, $skip))break; 
    3670                         $output .= "{$indent}{$var_name}{$method}\"{$theVar}\"{$nl}"; 
    3671                          
    3672                     break; 
    3673                      
    3674                     default: 
    3675                         //$output.="[indent:({$indent})  var_name:({$var_name})  method:  ({$method})   theVar:(\"{$theVar}\")]\n"; 
    3676                         if(in_array($var_name, $skip))break; 
    3677                         $output .= "{$indent}{$var_name} {$method} ({$type}) {$theVar}{$nl}"; 
    3678                     break; 
    3679                 
    3680         } 
    3681         
    3682         // $var=$var[$block]; 
    3683         
    3684     } 
    3685     -- $depth; 
    3686     
     3399                        default: 
     3400                            //$output.="[indent:({$indent})  var_name:({$var_name})  method:  ({$method})   theVar:(\"{$theVar}\")]\n"; 
     3401                            if(in_array($var_name, $skip))break; 
     3402                            $output .= "{$indent}{$var_name} {$method} ({$type}) {$theVar}{$nl}"; 
     3403                        break; 
     3404                    
     3405            } 
     3406            
     3407            // $var=$var[$block]; 
     3408            
     3409        } 
     3410        -- $depth; 
     3411        
    36873412         
    3688     if( $sub == false ) { 
     3413        if( $sub == false ) { 
    36893414            $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__,'',100); 
    36903415            return $output; 
     
    36923417        
    36933418    } 
     3419     
     3420     
     3421    /** AA_DEBUG::print_rq() 
     3422     * 
     3423     * @param mixed $a 
     3424     * @param integer $format 
     3425     */ 
     3426    function print_rq($a=array(), $ret=false) 
     3427    { 
     3428        // convert to array - try 
     3429        if(!is_array($a))$a=(array)$a; 
     3430         
     3431        // search chars 
     3432        $search=array("\r", "\n"); 
     3433         
     3434        // replacement placeholders 
     3435        $replace=array('@%--10--%@', '@%--13--%@'); 
     3436         
     3437        // replace \r and \n chars throughout array with placeholders 
     3438        $a=str_replace($search, $replace, $a); 
     3439         
     3440        // save output from print_r to $a 
     3441        $a=print_r($a,1); 
     3442         
     3443        // explode $a string into $l array minus last ')' 
     3444        $l = explode("\n", $a, -2); 
     3445         
     3446        // skip first 2 lines 'Array' and '(' 
     3447        array_shift($l); 
     3448        array_shift($l); 
     3449         
     3450        // trim first 4 space chars from lines 
     3451        $l=array_map(create_function('$s','return (!empty($s) ? substr($s,4) : "");'),$l); 
     3452 
     3453        // flatten array into string 
     3454        $a=implode("\n",$l); 
     3455         
     3456        // replace placeholders with original chars 
     3457        $a=str_replace($replace, $search, $a); 
     3458         
     3459        // ret or print based on $ret 
     3460        if($ret===false) echo $a; 
     3461        else return $a; 
     3462    } 
     3463     
     3464     
    36943465    /** AA_DEBUG::pa(&$array, $count=0)  
    36953466     * 
     
    37463517    { 
    37473518        $ret='<pre class="aa_pre2">'; 
     3519        if (is_array($obj) || is_object($obj)) $ret.=htmlspecialchars($this->print_rq($obj,1)); 
     3520        else { 
     3521            if(is_string($obj))$ret.=htmlspecialchars($obj)."\n"; 
     3522            else { ob_start(); var_dump($obj); $ret.=htmlspecialchars(ob_get_clean()); } 
     3523        } 
     3524        $ret.='</pre>'; 
     3525        if($return)return $ret; 
     3526        else echo $ret; 
     3527    } 
     3528 
     3529 
     3530    /** AA_DEBUG::ppp() 
     3531     * 
     3532     * @param mixed $text 
     3533     * @param integer $format 
     3534     */ 
     3535    function ppp( $obj, $return = false ) 
     3536    { 
    37483537        if (is_array($obj) || is_object($obj)) $ret.=htmlspecialchars(print_r($obj,1)); 
    37493538        else { 
     
    37513540            else { ob_start(); var_dump($obj); $ret.=htmlspecialchars(ob_get_clean()); } 
    37523541        } 
    3753         $ret.='</pre>'; 
    3754         if($return)return $ret; 
    3755         else echo $ret; 
    3756     } 
    3757  
    3758  
    3759     /** AA_DEBUG::ppp() 
    3760      * 
    3761      * @param mixed $text 
    3762      * @param integer $format 
    3763      */ 
    3764     function ppp( $obj, $return = false ) 
    3765     { 
    3766         if (is_array($obj) || is_object($obj)) $ret.=htmlspecialchars(print_r($obj,1)); 
    3767         else { 
    3768             if(is_string($obj))$ret.=htmlspecialchars($obj)."\n"; 
    3769             else { ob_start(); var_dump($obj); $ret.=htmlspecialchars(ob_get_clean()); } 
    3770         } 
    37713542        if($return)return $ret; 
    37723543        else echo $ret; 
     
    37873558        $st=sanitize_title_with_dashes($title); 
    37883559        //error_log(__FUNCTION__.' '.$st.':'.$title); 
    3789         $ret="\n\n".'<h2><a name="'.$st.'" id="'.$st.'"></a>'.$title.'<a href="#aaoutput" class="goAnchor">[^]</a></h2><pre class="aa_pre2">'; 
     3560        $ret='<div id="tabs-'.$st.'">'; 
     3561        $ret.="\n\n".'<h2><a name="'.$st.'" id="'.$st.'"></a>'.$title.'<a href="#aaoutput" class="goAnchor">[^]</a></h2><pre class="aa_pre2">'; 
    37903562        if (is_array($obj)&& !is_object($obj)) $ret.=$this->pa($obj); 
    37913563        else { 
     
    37933565            else { $ret.=$this->print_ra($obj); } 
    37943566        } 
    3795         $ret.='</pre>'; 
     3567        $ret.='</pre></div>'."\n"; 
    37963568        if($return)return $ret; 
    37973569        else echo $ret; 
     
    38103582        } 
    38113583        if($print){ 
    3812             $out="<hr style='height:60px;background:#FFF;color:#FFF;margin:0;padding:0;line-height:60px; overflow:hidden; display:block;' /><ol id=\"pptlinks\">"; 
    3813             foreach($links as $k)$out.="<li><a href='#".sanitize_title_with_dashes($k)."'>{$k}</a></li>\n"; 
    3814             $out.="</ol>"; 
     3584            //$out="<hr style='height:60px;background:#FFF;color:#FFF;margin:0;padding:0;line-height:60px; overflow:hidden; display:block;' /> 
     3585            //$out="\n<ul id=\"pptlinks\">"; 
     3586            $out="\n<ul>"; 
     3587            foreach($links as $k)$out.="<li><a href='#tabs-".sanitize_title_with_dashes($k)."'>{$k}</a></li>\n"; 
     3588            $out.="</ul>\n"; 
    38153589            return $out; 
    38163590        } 
     
    39463720 
    39473721    /** AA_DEBUG::t() 
    3948             $this->t( 
    3949                             __FILE__, 
    3950                             __CLASS__, 
    3951                             __FUNCTION__, 
    3952                             __LINE__, 
    3953                             '', 
    3954                             5 
    3955                             ); 
    39563722    */ 
    3957     function t( 
    3958                          $f='',  
    3959                          $c='AA_DEBUG',  
    3960                          $fu='',  
    3961                          $l=0,  
    3962                          $m='',  
    3963                          $d=0 
    3964                          ) 
    3965     { 
    3966         if( $this->d($d) === false ) return;// sqpt_error_log("t Skipped.. {$fu} {$this->debug} <= {$d}"); 
     3723    function t($f='', $c='AA_DEBUG', $fu='', $l=0, $m='', $d=0) 
     3724    { 
     3725        if( $this->d($d) === false ) return;// aadv_error_log("t Skipped.. {$fu} {$this->debug} <= {$d}"); 
    39673726 
    39683727        $tfunc=$this->tt("{$c}{$fu}"); 
     
    39983757        $level=absint($level); 
    39993758        if(isset($this->debug)) $test=(absint($this->debug) * 1); 
    4000         //sqpt_error_log("debug:{$this->debug} | plugin_debug_level:{$this->options['plugin_debug_level']} | test:{$test} | level:{$level}"); 
     3759        //aadv_error_log("debug:{$this->debug} | plugin_debug_level:{$this->options['plugin_debug_level']} | test:{$test} | level:{$level}"); 
    40013760        return (bool) (( $test >= $level ) ? true : false); 
    40023761    } 
     
    40073766    function l($msg,$d=5,$b=false) 
    40083767    {        
    4009         if( $this->d($d) === false) return;// sqpt_error_log("l Skipped.. {$this->debug} >= {$d}"); 
     3768        if( $this->d($d) === false) return;// aadv_error_log("l Skipped.. {$this->debug} >= {$d}"); 
    40103769         
    40113770        if( $this->options && $this->options['log_errors']=='1' ){ 
    40123771            if($b){ 
    40133772                $t2=$this->tt($f); 
    4014                 sqpt_error_log("PHP Notice:  ".$f." [".$t2[0]."] [".$t2[1]."] [".$this->mem_usage(1)."] ".__CLASS__."::l()"." {$msg}"); 
     3773                aadv_error_log("PHP Notice:  ".$f." [".$t2[0]."] [".$t2[1]."] [".$this->mem_usage(1)."] ".__CLASS__."::l()"." {$msg}"); 
    40153774            } else { 
    40163775                if(empty($msg))return; 
    4017                 sqpt_error_log($msg); 
     3776                aadv_error_log($msg); 
    40183777            } 
    4019         } else return sqpt_error_log("Skipped.. no options"); 
     3778        } else return aadv_error_log("Skipped.. no options"); 
    40203779        return; 
    40213780    } 
     
    40503809    function die_log($m='') 
    40513810    { 
    4052         die( 
    4053                     !( 
    4054                          '' != $m && error_log($m) 
    4055                          && (print PHP_EOL."$m".PHP_EOL) 
    4056                      ) 
    4057             ); 
     3811        die(!('' != $m && error_log($m) && (print PHP_EOL."$m".PHP_EOL))); 
    40583812    } 
    40593813 
     
    43904144 
    43914145     
     4146     
     4147     
    43924148    // MISC FUNCTIONS ---------------------------------------------------------------------------------------------------------------------------------------------------------------- 
    43934149    /** AA_DEBUG::print_var_dump() - Returns the output from var_dump($var) 
     
    44434199                        ); 
    44444200         
    4445         //sqpt_error_log($f.":".$this->print_var_dump($ret).print_r(array('good'=>$g,'bad'=>$b),1)); 
     4201        //aadv_error_log($f.":".$this->print_var_dump($ret).print_r(array('good'=>$g,'bad'=>$b),1)); 
    44464202    } 
    44474203     
     
    46124368            echo '</pre>'; 
    46134369        } 
     4370    } 
     4371 
     4372 
     4373    /** AA_DEBUG::_statls() 
     4374     * 
     4375     * @param string $file 
     4376     */ 
     4377    function _statls( $file, $title=false ) 
     4378    { 
     4379        // $folder = ($folder=='.') ?   getcwd() : realpath("."); 
     4380        $this->t(__FILE__,__CLASS__,__FUNCTION__,__LINE__,'',75); 
     4381         
     4382        $fs = $this->_stat( $file ); 
     4383        $folder=dirname($file); 
     4384        //print_r($fs); 
     4385        $ret=''; 
     4386        if($title!==false) $ret='PERMS HUMANPERMS     USER:GROUP      UID:GID   MODIFIED        CREATED             SIZE-BYTES  TYPE  FILENAME'."\n". 
     4387        '============================================================================================================================================='."\n"; 
     4388        $ret.=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'], 
     4389                                                $fs['fileuid'], $fs['filegid'],$fs['modified'], $fs['created'], $fs['size'],'['.$fs['type'].']', str_replace($folder.'/', '', realpath($file))); 
     4390        return $ret; 
    46144391    } 
    46154392 
     
    49544731    */ 
    49554732    function relPath($dest) 
    4956   { 
     4733    { 
    49574734        $dest = realpath($dest); 
    49584735        $path_separator = (substr(PHP_OS, 0, 3) == 'WIN') ? '\\' : $path_separator = '/'; 
     
    49684745        } 
    49694746        return str_replace($path_separator . $path_separator, $path_separator, $result . str_replace(implode($path_separator, $Adest), '', $dest)); 
    4970    } 
    4971  
    4972  
    4973  
    4974     /** AA_DEBUG::get_file_lines_at() 
    4975     */ 
    4976     function get_file_lines_at($f='', $s=0, $e=0) 
    4977     { 
    4978         //sqpt_error_log("$f $s $e"); 
    4979          
    4980         $ret = array(); 
    4981         if ( 
    4982              $lines = explode( 
    4983                                     "\n", 
    4984                                     str_replace( 
    4985                                                     array("\r\n","\c\r","\r"),"\n", 
    4986                                                         implode( 
    4987                                                                   '',file($f) 
    4988                                                                   ) 
    4989                                                         ) 
    4990                                     ,($e+5) 
    4991                                     ) 
    4992              ) 
    4993         { 
    4994             $ret=array_slice($lines, ($s-1), ($e-$s+1)); 
    4995             unset($lines); 
    4996             array_map('rtrim',$ret); 
    4997             return join("\n", $ret); 
    4998         } 
    4999     } 
     4747    } 
     4748 
     4749 
     4750 
     4751     
    50004752     
    50014753     
     
    50274779add_action( 'init', array(&$AA_DEBUG, 'Init'),10); 
    50284780 
    5029 #add_action( 'admin_bar_init', array(&$AA_DEBUG, 'AdminBar'), 500 ); 
    5030 //add_action( 'wp_before_admin_bar_render', array(&$AA_DEBUG, 'AdminBar'),9999); 
    50314781 
    50324782//add_action( 'init', array(&$AA_DEBUG, 'live_debug') ); 
  • askapache-debug-viewer/trunk/f/admin.css

    r577450 r642810  
    11.aa_div1 { clear:both; max-width:95%; font:11px/16px monospace; padding:1px; margin:2px; border:2px outset #F7F7F7; background:#FFF; overflow-x:auto } 
    22h3.aa_h31 { background-color:#464646; color:#999; text-indent:10px; line-height:85px; height:65px; margin:0; } 
    3 #aan {clear:both;border: 0pt none; visibility: visible; z-index: 2147483641; position: fixed; width: 100%; left: 0pt; bottom: 0px;  height: 300px;display: block;background: none repeat scroll 0 0 #FFFFFF; font-family: Lucida Grande,Tahoma,sans-serif;font-size: 11px; margin: 0; padding: 0; overflow:hidden;} 
    4 #aao {clear:both;border: 0pt none; visibility: visible; z-index: 2147483642; overflow:scroll; width: 100%; left: 0pt; bottom: 0px;  height: 100%; display: block;background: none repeat scroll 0 0 #FFFFFF; font-family: Lucida Grande,Tahoma,sans-serif;font-size: 11px; margin: 0; padding: 0;} 
    5 #aao1 {border: 0pt none; visibility: visible; z-index: 2147483630; position: relative; width: 100%; left: 0pt; bottom: 0px;  height: 200px;display: block;background: none repeat scroll 0 0 #FFFFFF;  margin: 0; padding: 0;} 
     3 
     4#aan {clear:both;border:0pt none; visibility:visible; z-index:2147483641; position:fixed; left:0; right:1px; bottom:0;  height:300px;display:block;background:none repeat scroll 0 0 #FFFFFF; font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px; margin:0; padding:0;  border-top:3px double #ccc;  } 
     5 
     6 
     7#aao {clear:both;border:0pt none; visibility:visible; z-index:2147483642; overflow:scroll; width:100%; height:100%; left:0pt; bottom:0px;  top:2px; display:block;background:none repeat scroll 0 0 #FFFFFF; font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px; margin:0; padding:0; } 
     8 
     9#aaslink,#aaslink:hover,#aaslink:active { background:none repeat scroll 0 0 transparent; border:1px outset #CCCCCC; bottom:4px; color:#2D2D2D; display:block; font:600 13px/20px Arial; height:20px; overflow:hidden; position:absolute; right:4px; text-align:center; text-decoration:none; width:70px; z-index:2147483648; } 
     10#aaslink:hover,#aaslink:active {border:1px inset #CCCCCC;} 
     11 
    612     
    7 #pptlinks {background:#FFF;border: 0pt none; visibility: visible; z-index: 2147483647; position: fixed; width: 100%; left: 0pt; bottom: 0px; height: auto; line-height:24px; display: block;background: none repeat scroll 0 0 #FFFFFF; font-family: Lucida Grande,Tahoma,sans-serif;font-size: 11px; margin: 0; overflow: hidden;padding: 0;list-style-type: none;margin-left: 0;background:#FEFEFE;  } 
    8 #pptlinks li {list-style:none;list-style-type:none; display:block;overflow:hidden; margin: 0 1px 0 0; float: left; } 
    9 #pptlinks li a { background:#BFBFBF; border: 1px outset #8E8C8C; text-align: center; display: block; padding: 1px 2px; color: #1A1A1A; text-decoration: none;} 
    10 #pptlinks li a:hover,#aao #pptlinks li a:active { background:#000; border: 1px outset #8E8C8C; color: #FFFFFF; display: block; float: left; text-decoration: none;} 
     13#aahidehr {height:1500px;line-height:1500px;display:block;overflow:hidden;clear:both;} 
     14 
     15.ui-tabs-nav {background:#FFF; border:0 none; visibility:visible; z-index:2147483646; position:fixed; width:100%; left:0; bottom:0; height:auto; line-height:24px; display:block;background:none repeat scroll 0 0 #FFFFFF; font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px; margin:0; overflow:hidden;padding:0;list-style-type:none;margin-left:0;background:#FEFEFE;  } 
     16/*.ui-tabs-nav li {list-style:none;list-style-type:none; display:block;overflow:hidden; margin:0 1px 0 0; float:left; }*/ 
     17 
     18.ui-resizable-helper { border:2px dotted #00F; }n 
     19.ui-resizable-n { height:12px; } 
     20div#aao.ui-tabs div.ui-tabs-panel { padding:2px; } 
     21div#aao.ui-tabs div.ui-tabs-panel pre {margin:2px 0 } 
    1122 
    1223#aao h2 { background-color:#888;clear:both;color:#010101;height:25px;line-height:25px;margin:0 auto;width:100%;padding:0;text-indent:10px;} 
    1324#aao h2 a { line-height:25px;text-decoration:none;font-size:12px;padding-left:10px;height:25px;color:#D3D3D3;} 
    14 #aao ul {margin:.5em 1em; } 
     25 
    1526.aa_pre2 { background:none repeat scroll 0 0 #FFFFFF;clear:both;color:#000000;font:11px/16px monospace;margin:1px auto;max-width:100%;overflow-x:auto;padding:0;width:99%;border-bottom:40px solid #FFFFFF;} 
    1627.aa_label1 { float:left;display:block;width:125px;color:#666;} 
     
    1930#adv7_form { width:98%;min-width:35em;margin-left:0 } 
    2031#adv7 form p { width:97% } 
    21 #adv7 p.c4r { padding:5px 20px 5px 1px;margin-bottom:0.75em;margin-top:0.75em;margin-left:8px;border-bottom:1px solid #DDDDDD;} 
     32#adv7 p.c4r {border-bottom: 1px solid #DDDDDD; margin-bottom: 0.15em; margin-left: 8px; margin-top: 0.15em; overflow: hidden; } 
    2233#adv7 label { display:block;float:left;width:30em;line-height:20px } 
    2334#adv7 input { float:left;width:auto;margin-left:4px;margin-right:10px;text-align:left;} 
     
    6071 
    6172.jqHandle { 
    62    background: red; 
     73   background:red; 
    6374   height:15px; 
    6475} 
    6576 
    6677.jqDrag { 
    67   width: 100%; 
    68   cursor: move; 
     78  width:100%; 
     79  cursor:move; 
    6980} 
    7081 
    7182.jqResize { 
    72    width: 45px; 
     83   width:45px; 
    7384   height:45px; 
    7485   z-index:2147483642; 
    75    position: absolute; 
    76    top: 0; 
    77    left: 0; 
     86   position:absolute; 
     87   top:0; 
     88   left:0; 
    7889   display:block; 
    7990   overflow:hidden; 
    80    cursor: se-resize; 
     91   cursor:se-resize; 
    8192} 
    8293 
     
    8899 
    89100#adv7_phpinfo { overflow:hidden; } 
    90 #adv7_phpinfo pre { margin: 0px; font-family: monospace; } 
    91 #adv7_phpinfo a:link { color: #000099; text-decoration: none; background-color: #ffffff; } 
    92 #adv7_phpinfo a:hover { text-decoration: underline; } 
    93 #adv7_phpinfo table { border-collapse: collapse; width:95%; overflow:hidden; } 
    94 #adv7_phpinfo .center { text-align: center; } 
    95 #adv7_phpinfo .center table { margin-left: 0; text-align: left; border-collapse: collapse; width:95%; overflow:hidden; } 
    96 #adv7_phpinfo .center th { text-align: center !important; } 
     101#adv7_phpinfo pre { margin:0px; font-family:monospace; } 
     102#adv7_phpinfo a:link { color:#000099; text-decoration:none; background-color:#ffffff; } 
     103#adv7_phpinfo a:hover { text-decoration:underline; } 
     104#adv7_phpinfo table { border-collapse:collapse; width:95%; overflow:hidden; } 
     105#adv7_phpinfo .center { text-align:center; } 
     106#adv7_phpinfo .center table { margin-left:0; text-align:left; border-collapse:collapse; width:95%; overflow:hidden; } 
     107#adv7_phpinfo .center th { text-align:center !important; } 
    97108#adv7_phpinfo td, 
    98 #adv7_phpinfo th { border: 1px solid #000000; vertical-align: baseline; overflow:scroll; } 
     109#adv7_phpinfo th { border:1px solid #000000; vertical-align:baseline; overflow:scroll; } 
    99110#adv7_phpinfo td { max-width:75%; } 
    100 #adv7_phpinfo h1 { font-size: 150%; } 
    101 #adv7_phpinfo h2 { font-size: 125%; } 
    102 #adv7_phpinfo .p { text-align: left; } 
    103 #adv7_phpinfo .e { background-color: #ccccff; font-weight: bold; color: #000000; } 
    104 #adv7_phpinfo .h { background-color: #9999cc; font-weight: bold; color: #000000; white-space: pre-wrap; } 
    105 #adv7_phpinfo .v { background-color: #cccccc; color: #000000; overflow:auto; white-space: pre-wrap; } 
    106 #adv7_phpinfo .vr { background-color: #cccccc; text-align: right; color: #000000; } 
    107 #adv7_phpinfo img { float: right; border: 0px; } 
    108 #adv7_phpinfo hr { background-color: #cccccc; border: 0px; height: 1px; color: #000000; } 
     111#adv7_phpinfo h1 { font-size:150%; } 
     112#adv7_phpinfo h2 { font-size:125%; } 
     113#adv7_phpinfo .p { text-align:left; } 
     114#adv7_phpinfo .e { background-color:#ccccff; font-weight:bold; color:#000000; } 
     115#adv7_phpinfo .h { background-color:#9999cc; font-weight:bold; color:#000000; white-space:pre-wrap; } 
     116#adv7_phpinfo .v { background-color:#cccccc; color:#000000; overflow:auto; white-space:pre-wrap; } 
     117#adv7_phpinfo .vr { background-color:#cccccc; text-align:right; color:#000000; } 
     118#adv7_phpinfo img { float:right; border:0px; } 
     119#adv7_phpinfo hr { background-color:#cccccc; border:0px; height:1px; color:#000000; } 
     120 
     121 
     122 
     123 
  • askapache-debug-viewer/trunk/f/admin.js

    r522076 r642810  
    1 console.log("bahhhh"); 
    21(function($){ 
    32    $.fn.goAnchor = function () { 
     
    109$(document).ready(function() { 
    1110    //$(".goAnchor").goAnchor(); 
    12     console.log("ahhhh"); 
    13     $("#aan").resizable({ minHeight: 50, minWidth:400, handles: 'all'  }); 
     11    $("#aan").resizable({  
     12        minHeight:50, 
     13        minWidth:200, 
     14        handles:'n', 
     15        grid:50, 
     16        //helper: "ui-resizable-helper", 
     17        //ghost: true, 
     18        //alsoResize: "#aahidehr" 
     19    }); 
     20    $("#aao").tabs(); 
     21     
     22    //$( "#aao" ).tabs(); 
     23     
     24    // fix the classes 
     25        //$( ".tabs-bottom .ui-tabs-nav, .tabs-bottom .ui-tabs-nav > *" ).removeClass( "ui-corner-all ui-corner-top" ).addClass( "ui-corner-bottom" ); 
     26  
     27        // move the nav to the bottom 
     28        //$( ".tabs-bottom .ui-tabs-nav" ).appendTo( ".tabs-bottom" ); 
    1429 }); 
    1530 
  • askapache-debug-viewer/trunk/readme.txt

    r577450 r642810  
    11=== AskApache Debug Viewer === 
    2 Contributors: askapache 
     2Contributors: askapache,cduke250 
    33Donate link: http://www.askapache.com/donate/ 
    4 Tags: debug, debugging, error, errors, problems, support, admin, programmer, developer, plugin, development, information, stats, logs, queries, htaccess, password, error, support, askapache 
     4Tags: debug, debugging, error, errors, warning, problem, bug, problems, support, admin, programmer, developer, plugin, development, information, stats, logs, queries, htaccess, password, error, support, askapache, apache, rewrites 
    55Requires at least: 3.0 
    6 Tested up to: 3.4.1 
    7 Stable tag: 2.3.2 
     6Tested up to: 3.5 
     7Stable tag: 2.4 
    88 
    9 This 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. 
     9This 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.  This debugging plugin goes further than any other in the way it uses Apache Server Status Handlers, CGI Script for server environment view, and in the shear amount of debugging information available, like the basically print_r($GLOBALS). 
    1010 
    1111== Description == 
    12 This 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. 
     12This 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.  This debugging plugin goes further than any other in the way it uses Apache Server Status Handlers, CGI Script for server environment view, and in the shear amount of debugging information available, like the basically print_r($GLOBALS). 
     13 
     14Only viewable to administrators. 
    1315 
    1416A standalone plugin, you set which debug output settings you want, and whether to turn it on or off.  Then every page in your administration panel will include the debug output in the footer using the 'admin_footer' action.  Or you can also output in the wp_footer.  Additionally, it has the capability of live-debugging, which changes your php.ini error settings on-the-fly for live debugging. 
     
    5456 
    5557 
     58== Screenshots == 
     59 
     601. Example Use 
     612. Server Status 
     623. Server Info 
     634. PHP Info 
     645. Server Environment CGI 
     656. Settings Page 
Note: See TracChangeset for help on using the changeset viewer.