| 1 | <?php
|
|---|
| 2 | // Turn debugging on
|
|---|
| 3 | define('SCUTTLE_DEBUG',false);
|
|---|
| 4 |
|
|---|
| 5 | // generic debugging function
|
|---|
| 6 | // Sample:
|
|---|
| 7 | // pc_debug(__FILE__, __LINE__, "This is a debug message.");
|
|---|
| 8 |
|
|---|
| 9 | function pc_debug($file, $line, $message) {
|
|---|
| 10 | if (defined('SCUTTLE_DEBUG') && SCUTTLE_DEBUG) {
|
|---|
| 11 |
|
|---|
| 12 | file_put_contents(dirname(__file__).'/../w/images/debug.log',time().": [$file][$line]: $message",FILE_APPEND);
|
|---|
| 13 |
|
|---|
| 14 | //error_log("---DEBUG-". $sitename .": [$file][$line]: $message");
|
|---|
| 15 | } else {
|
|---|
| 16 | #error_log("SCUTTLE_DEBUG disabled");
|
|---|
| 17 | }
|
|---|
| 18 | }
|
|---|
| 19 |
|
|---|
| 20 | /**
|
|---|
| 21 | * Colorized var_dump()
|
|---|
| 22 | *
|
|---|
| 23 | * @author Clemens Gutweiler <cg@webmaking.de>
|
|---|
| 24 | * @date 2001-08-01
|
|---|
| 25 | * @access public
|
|---|
| 26 | * @version 0.1
|
|---|
| 27 | *
|
|---|
| 28 | */
|
|---|
| 29 | function var_dumpc( $par ) {
|
|---|
| 30 | /**
|
|---|
| 31 | * Get Output from var_dump();
|
|---|
| 32 | */
|
|---|
| 33 | ob_start();
|
|---|
| 34 | var_dump($par);
|
|---|
| 35 | $var_dump = ob_get_contents();
|
|---|
| 36 | ob_end_clean();
|
|---|
| 37 | /**
|
|---|
| 38 | * Font Color
|
|---|
| 39 | */
|
|---|
| 40 | $c_type = '<font%%%%%%%%%%color="#FF8000">';
|
|---|
| 41 | $c_phpnamespace = '<font%%%%%%%%%%color="#007700">';
|
|---|
| 42 | $c_string = '<font%%%%%%%%%%color="#DD0000">';
|
|---|
| 43 | $c_integer = '<font%%%%%%%%%%color="#0000BB">';
|
|---|
| 44 | $c_cursor = '<font%%%%%%%%%%color="#0000FF">';
|
|---|
| 45 | $c_close = '</font>';
|
|---|
| 46 | /**
|
|---|
| 47 | * Format Dump
|
|---|
| 48 | */
|
|---|
| 49 | $var_dump = str_replace("\n", "<br>\n", $var_dump);
|
|---|
| 50 | // string(5) "wm_db"
|
|---|
| 51 | $var_dump = preg_replace('/(.*?)\((.*?)\) \"(.*?)\"/ms', "\\1(\\2) ".$c_string.'"\\3"'.$c_close, $var_dump);
|
|---|
| 52 | // Type string(9)
|
|---|
| 53 | $var_dump = preg_replace('/([a-zA-z]*)(\([a-zA-Z0-9-]*\))/', $c_type."\\1".$c_close."\\2", $var_dump);
|
|---|
| 54 | // (*)
|
|---|
| 55 | $var_dump = preg_replace("/\(([0-9-]*)\)/", "(".$c_integer."\\1".$c_close.")", $var_dump);
|
|---|
| 56 | $var_dump = preg_replace("/\(([a-zA-Z]*)\)/", "(".$c_string."\\1".$c_close.")", $var_dump);
|
|---|
| 57 | // Key ["classname"]
|
|---|
| 58 | $var_dump = preg_replace('/\[\"([_a-zA-Z]*)\"\]/', '['.$c_phpnamespace.'"\\1"'.$c_close.']', $var_dump);
|
|---|
| 59 | // =>
|
|---|
| 60 | $var_dump = preg_replace('/(=>)/', $c_cursor.'\\1'.$c_close, $var_dump);
|
|---|
| 61 | // Whitespace
|
|---|
| 62 | $var_dump = str_replace(" ", " ", $var_dump);
|
|---|
| 63 | $var_dump = '<br><font size="2" face="Courier New, Fixedsys">'.$var_dump.'</font><br>';
|
|---|
| 64 | $var_dump = str_replace("%%%%%%%%%%", " ", $var_dump);
|
|---|
| 65 | /**
|
|---|
| 66 | * Print Output
|
|---|
| 67 | */
|
|---|
| 68 | echo $var_dump;
|
|---|
| 69 | }
|
|---|
| 70 |
|
|---|
| 71 | /*
|
|---|
| 72 | nicely formatted output from php's debug_backtrace()
|
|---|
| 73 | * */
|
|---|
| 74 | function backtrace(){
|
|---|
| 75 | $output = "<div style='text-align: left; font-family: monospace;'>\n";
|
|---|
| 76 | $output .= "<b>Backtrace:</b><br />\n";
|
|---|
| 77 | $backtrace = debug_backtrace();
|
|---|
| 78 |
|
|---|
| 79 | foreach ($backtrace as $bt) {
|
|---|
| 80 | $args = '';
|
|---|
| 81 | foreach ($bt['args'] as $a) {
|
|---|
| 82 | if (!empty($args)) {
|
|---|
| 83 | $args .= ', ';
|
|---|
| 84 | }
|
|---|
| 85 | switch (gettype($a)) {
|
|---|
| 86 | case 'integer':
|
|---|
| 87 | case 'double':
|
|---|
| 88 | $args .= $a;
|
|---|
| 89 | break;
|
|---|
| 90 | case 'string':
|
|---|
| 91 | $a = htmlspecialchars(substr($a, 0, 64)).((strlen($a) > 64) ? '...' : '');
|
|---|
| 92 | $args .= "\"$a\"";
|
|---|
| 93 | break;
|
|---|
| 94 | case 'array':
|
|---|
| 95 | $args .= 'Array('.count($a).')';
|
|---|
| 96 | break;
|
|---|
| 97 | case 'object':
|
|---|
| 98 | $args .= 'Object('.get_class($a).')';
|
|---|
| 99 | break;
|
|---|
| 100 | case 'resource':
|
|---|
| 101 | $args .= 'Resource('.strstr($a, '#').')';
|
|---|
| 102 | break;
|
|---|
| 103 | case 'boolean':
|
|---|
| 104 | $args .= $a ? 'True' : 'False';
|
|---|
| 105 | break;
|
|---|
| 106 | case 'NULL':
|
|---|
| 107 | $args .= 'Null';
|
|---|
| 108 | break;
|
|---|
| 109 | default:
|
|---|
| 110 | $args .= 'Unknown';
|
|---|
| 111 | }
|
|---|
| 112 | }
|
|---|
| 113 | $output .= "<br />\n";
|
|---|
| 114 | $output .= "<b>file:</b> {$bt['line']} - {$bt['file']}<br />\n";
|
|---|
| 115 | $output .= "<b>call:</b> {$bt['class']}{$bt['type']}{$bt['function']}($args)<br />\n";
|
|---|
| 116 | }
|
|---|
| 117 | $output .= "</div>\n";
|
|---|
| 118 | return $output;
|
|---|
| 119 | }
|
|---|
| 120 |
|
|---|
| 121 | ?> |
|---|