logger_render.php

Go to the documentation of this file.
00001 <?php
00002 
00003 defined( 'XOOPS_ROOT_PATH' ) or die();
00004 
00005 $ret = '';
00006 
00007 if ( $mode == 'popup' ) {
00008      $dump = $this->dump( '' );
00009      $content = '
00010 <html>
00011 <head>
00012      <meta http-equiv="content-type" content="text/html; charset='._CHARSET.'" />
00013      <meta http-equiv="content-language" content="'._LANGCODE.'" />
00014      <title>'.$xoopsConfig['sitename'].'</title>
00015      <link rel="stylesheet" type="text/css" media="all" href="'.getcss($xoopsConfig['theme_set']).'" />
00016 </head>
00017 <body>' . $dump . '
00018      <div style="text-align:center;">
00019           <input class="formButton" value="'._CLOSE.'" type="button" onclick="javascript:window.close();" />
00020      </div>
00021 </body>
00022 </html>';
00023      $ret .= '
00024 <script type="text/javascript">
00025      debug_window = openWithSelfMain("about:blank", "popup", 680, 450, true);
00026      debug_window.document.clear();
00027 ';
00028      $lines = preg_split("/(\r\n|\r|\n)( *)/", $content);
00029      foreach ($lines as $line) {
00030           $ret .= "\n" . 'debug_window.document.writeln("'.str_replace( array( '"', '</' ), array( '\"', '<\/' ), $line).'");';
00031      }
00032      $ret .= '
00033      debug_window.focus();
00034      debug_window.document.close();
00035 </script>';
00036 }
00037 
00038 if ( empty( $mode ) ) {
00039      $views = array( 'errors', 'queries', 'blocks', 'extra' );
00040      $ret .= "\n<div id=\"xo-logger-output\">\n<div id='xo-logger-tabs'>\n";
00041      $ret .= "<a href='javascript:xoSetLoggerView(\"\")'>All</a>\n";
00042      foreach ( $views as $view ) {
00043           $count = count( $this->$view );
00044           $ret .= "<a href='javascript:xoSetLoggerView(\"$view\")'>$view ($count)</a>\n";
00045      }
00046      $count = count( $this->logstart );
00047      $ret .= "<a href='javascript:xoSetLoggerView(\"timers\")'>timers ($count)</a>\n";
00048      $ret .= "</div>\n";
00049 }
00050 
00051 if ( empty($mode) || $mode == 'errors' ) {
00052      $types = array(
00053           E_USER_NOTICE => 'Notice',
00054           E_USER_WARNING => 'Warning',
00055           E_USER_ERROR => 'Error',
00056           E_NOTICE => 'Notice',
00057           E_WARNING => 'Warning',
00058           E_STRICT => 'Strict',
00059      );
00060      $class = 'even';
00061      $ret .= '<table id="xo-logger-errors" class="outer"><tr><th>Errors</th></tr>';
00062      foreach ( $this->errors as $error ) {
00063           $ret .= "\n<tr><td class='$class'>";
00064           $ret .= isset( $types[ $error['errno'] ] ) ? $types[ $error['errno'] ] : 'Unknown';
00065           $ret .= sprintf( ": %s in file %s line %s<br />\n", $error['errstr'], $error['errfile'], $error['errline'] );
00066           $ret .= "</td></tr>";
00067         $class = ($class == 'odd') ? 'even' : 'odd';
00068      }
00069      $ret .= "\n</table>\n";
00070 }
00071 
00072 if ( empty($mode) || $mode == 'queries' ) {
00073      $class = 'even';
00074      $ret .= '<table id="xo-logger-queries" class="outer"><tr><th>Queries</th></tr>';
00075     foreach ($this->queries as $q) {
00076         if (isset($q['error'])) {
00077             $ret .= '<tr class="'.$class.'"><td><span style="color:#ff0000;">'.htmlentities($q['sql']).'<br /><b>Error number:</b> '.$q['errno'].'<br /><b>Error message:</b> '.$q['error'].'</span></td></tr>';
00078         } else {
00079             $ret .= '<tr class="'.$class.'"><td>'.htmlentities($q['sql']).'</td></tr>';
00080         }
00081         $class = ($class == 'odd') ? 'even' : 'odd';
00082     }
00083     $ret .= '<tr class="foot"><td>Total: <span style="color:#ff0000;">'.count($this->queries).'</span> queries</td></tr></table>';
00084 }
00085 if ( empty($mode) || $mode == 'blocks' ) {
00086     $class = 'even';
00087     $ret .= '<table id="xo-logger-blocks" class="outer"><tr><th colspan="2">Blocks</th></tr>';
00088     foreach ($this->blocks as $b) {
00089         if ($b['cached']) {
00090             $ret .= '<tr><td class="'.$class.'"><b>'.htmlspecialchars($b['name']).':</b> Cached (regenerates every '.intval($b['cachetime']).' seconds)</td></tr>';
00091         } else {
00092             $ret .= '<tr><td class="'.$class.'"><b>'.htmlspecialchars($b['name']).':</b> No Cache</td></tr>';
00093         }
00094         $class = ($class == 'odd') ? 'even' : 'odd';
00095     }
00096     $ret .= '<tr class="foot"><td>Total: <span style="color:#ff0000;">'.count($this->blocks).'</span> blocks</td></tr></table>';
00097 }
00098 if ( empty($mode) || $mode == 'extra' ) {
00099      $this->addExtra( 'Included files', count ( get_included_files() ) . ' files' );
00100      $memory = 0;
00101      if ( function_exists( 'memory_get_usage' ) ) {
00102           $memory = memory_get_usage() . ' bytes';
00103      } else {
00104           $os = isset( $_ENV['OS'] ) ? $_ENV['OS'] : $_SERVER['OS'];
00105           if ( strpos( strtolower( $os ), 'windows') !== false ) {
00106                $out = array();
00107                exec('tasklist /FI "PID eq ' . getmypid() . '" /FO LIST', $out );
00108                $memory = substr( $out[5], strpos( $out[5], ':') + 1) . ' [Estimated]';
00109           }
00110      }
00111      if ( $memory ) {
00112           $this->addExtra( 'Memory usage', $memory );
00113      }
00114      
00115     $class = 'even';
00116     $ret .= '<table id="xo-logger-extra" class="outer"><tr><th colspan="2">Extra</th></tr>';
00117     foreach ($this->extra as $ex) {
00118         $ret .= '<tr><td class="'.$class.'"><b>'.htmlspecialchars($ex['name']).':</b> '.htmlspecialchars($ex['msg']).'</td></tr>';
00119         $class = ($class == 'odd') ? 'even' : 'odd';
00120     }
00121     $ret .= '</table>';
00122 }
00123 if ( empty($mode) || $mode == 'timers' ) {
00124     $class = 'even';
00125     $ret .= '<table id="xo-logger-timers" class="outer"><tr><th colspan="2">Timers</th></tr>';
00126     foreach ( $this->logstart as $k => $v ) {
00127         $ret .= '<tr><td class="'.$class.'"><b>'.htmlspecialchars($k).'</b> took <span style="color:#ff0000;">' . sprintf( "%.03f", $this->dumpTime($k) ) . '</span> seconds to load.</td></tr>';
00128         $class = ($class == 'odd') ? 'even' : 'odd';
00129     }
00130     $ret .= '</table>';
00131 }
00132 
00133 if ( empty( $mode ) ) {
00134      $ret .= <<<EOT
00135 </div>
00136 <script type="text/javascript">
00137      function xoLogCreateCookie(name,value,days) {
00138           if (days) {
00139                var date = new Date();
00140                date.setTime(date.getTime()+(days*24*60*60*1000));
00141                var expires = "; expires="+date.toGMTString();
00142           }
00143           else var expires = "";
00144           document.cookie = name+"="+value+expires+"; path=/";
00145      }
00146      function xoLogReadCookie(name) {
00147           var nameEQ = name + "=";
00148           var ca = document.cookie.split(';');
00149           for(var i=0;i < ca.length;i++) {
00150                var c = ca[i];
00151                while (c.charAt(0)==' ') c = c.substring(1,c.length);
00152                if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
00153           }
00154           return null;
00155      }
00156      function xoLogEraseCookie(name) {
00157           createCookie(name,"",-1);
00158      }
00159      function xoSetLoggerView( name ) {
00160           var log = document.getElementById( "xo-logger-output" );
00161           if ( !log ) return;
00162           var i, elt;
00163           for ( i=0; i!=log.childNodes.length; i++ ) {
00164                elt = log.childNodes[i];
00165                if ( elt.tagName && elt.tagName.toLowerCase() != 'script' && elt.id != "xo-logger-tabs" ) {
00166                     elt.style.display = ( !name || elt.id == "xo-logger-" + name ) ? "block" : "none";
00167                }
00168           }
00169           xoLogCreateCookie( 'XOLOGGERVIEW', name, 1 );
00170      }
00171      xoSetLoggerView( xoLogReadCookie( 'XOLOGGERVIEW' ) );
00172 </script>
00173      
00174 EOT;
00175 }
00176 
00177 
00178 ?>

Generated on Sun Feb 17 00:55:42 2008 for XOOPS by  doxygen 1.5.5