PHP Classes

File: htdocs/class/logger/render.php

Recommend this page to a friend!
  Classes of Michael Beck   Xoops 2.5   htdocs/class/logger/render.php   Download  
File: htdocs/class/logger/render.php
Role: Example script
Content type: text/plain
Description: Example script
Class: Xoops 2.5
Modular content management publication system
Author: By
Last change:
Date: 6 years ago
Size: 9,225 bytes
 

Contents

Class file image Download
<?php
/**
 * Xoops Logger renderer
 *
 * You may not change or alter any portion of this comment or credits
 * of supporting developers from this source code or any supporting source code
 * which is considered copyrighted (c) material of the original comment or credit authors.
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 *
 * @copyright (c) 2000-2016 XOOPS Project (www.xoops.org)
 * @license GNU GPL 2 (http://www.gnu.org/licenses/gpl-2.0.html)
 * @package kernel
 * @subpackage logger
 * @since 2.3.0
 * @author Skalpa Keo <skalpa@xoops.org>
 * @author Taiwen Jiang <phppp@users.sourceforge.net>
 *
 * @todo Not well written, just keep as it is. Refactored in 3.0
 */
defined('XOOPS_ROOT_PATH') || exit('Restricted access');

$ret = '';
if (
$mode === 'popup') {
   
$dump = $this->dump('');
   
$content = '
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
    <meta http-equiv="content-language" content="'
. _LANGCODE . '" />
    <meta http-equiv="content-type" content="text/html; charset='
. _CHARSET . '" />
    <title>'
. $xoopsConfig['sitename'] . ' - ' . _LOGGER_DEBUG . ' </title>
    <meta name="generator" content="XOOPS" />
    <link rel="stylesheet" type="text/css" media="all" href="'
. xoops_getcss($xoopsConfig['theme_set']) . '" />
</head>
<body>'
. $dump . '
    <div style="text-align:center;">
        <input class="formButton" value="'
. _CLOSE . '" type="button" onclick="window.close();" />
    </div>
'
;
   
$ret .= '
<script type="text/javascript">
    debug_window = openWithSelfMain("about:blank", "popup", 680, 450, true);
    debug_window.document.clear();
'
;
   
$lines = preg_split("/(\r\n|\r|\n)( *)/", $content);
    foreach (
$lines as $line) {
       
$ret .= "\n" . 'debug_window.document.writeln("' . str_replace(array('"', '</'), array('\"', '<\/'), $line) . '");';
    }
   
$ret .= '
    debug_window.focus();
    debug_window.document.close();
</script>
'
;
}

$this->addExtra(_LOGGER_INCLUDED_FILES, sprintf(_LOGGER_FILES, count(get_included_files())));
$memory = 0;

if (
function_exists('memory_get_usage')) {
   
$memory = memory_get_usage() . ' bytes';
} else {
    if (
strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
       
$out = array();
       
exec('tasklist /FI "PID eq ' . getmypid() . '" /FO LIST', $out);
        if (isset(
$out[5])) {
           
$memory = sprintf(_LOGGER_MEM_ESTIMATED, substr($out[5], strpos($out[5], ':') + 1));
        }
    }
}
if (
$memory) {
   
$this->addExtra(_LOGGER_MEM_USAGE, $memory);
}

if (empty(
$mode)) {
   
$views = array('errors', 'deprecated', 'queries', 'blocks', 'extra');
   
$ret .= "\n<div id=\"xo-logger-output\">\n<div id='xo-logger-tabs'>\n";
   
$ret .= "<a href='javascript:xoSetLoggerView(\"none\")'>" . _LOGGER_NONE . "</a>\n";
   
$ret .= "<a href='javascript:xoSetLoggerView(\"\")'>" . _LOGGER_ALL . "</a>\n";
    foreach (
$views as $view) {
       
$count = count($this->$view);
       
$ret .= "<a href='javascript:xoSetLoggerView(\"$view\")'>" . constant('_LOGGER_' . strtoupper($view)) . " ($count)</a>\n";
    }
   
$count = count($this->logstart);
   
$ret .= "<a href='javascript:xoSetLoggerView(\"timers\")'>" . _LOGGER_TIMERS . "($count)</a>\n";
   
$ret .= "</div>\n";
}

if (empty(
$mode) || $mode === 'errors') {
   
$types = array(
       
E_USER_NOTICE => _LOGGER_E_USER_NOTICE,
       
E_USER_WARNING => _LOGGER_E_USER_WARNING,
       
E_USER_ERROR => _LOGGER_E_USER_ERROR,
       
E_NOTICE => _LOGGER_E_NOTICE,
       
E_WARNING => _LOGGER_E_WARNING,/*E_STRICT => _LOGGER_E_STRICT*/);
   
$class = 'even';
   
$ret .= '<table id="xo-logger-errors" class="outer"><tr><th>' . _LOGGER_ERRORS . '</th></tr>';
    foreach (
$this->errors as $error) {
       
$ret .= "\n<tr><td class='$class'>";
       
$ret .= isset($types[$error['errno']]) ? $types[$error['errno']] : _LOGGER_UNKNOWN;
       
$ret .= ': ';
       
$ret .= sprintf(_LOGGER_FILELINE, $this->sanitizePath($error['errstr']), $this->sanitizePath($error['errfile']), $error['errline']);
       
$ret .= "<br>\n</td></tr>";
       
$class = ($class === 'odd') ? 'even' : 'odd';
    }
   
$ret .= "\n</table>\n";
}

if (empty(
$mode) || $mode === 'deprecated') {
   
$class = 'even';
   
$ret .= '<table id="xo-logger-deprecated" class="outer"><tr><th>' . _LOGGER_DEPRECATED . '</th></tr>';
    foreach (
$this->deprecated as $message) {
       
$ret .= "\n<tr><td class='$class'>";
       
$ret .= $message;
       
$ret .= "<br>\n</td></tr>";
       
$class = ($class === 'odd') ? 'even' : 'odd';
    }
   
$ret .= "\n</table>\n";
}

if (empty(
$mode) || $mode === 'queries') {
   
$class = 'even';
   
$ret .= '<table id="xo-logger-queries" class="outer"><tr><th>' . _LOGGER_QUERIES . '</th></tr>';
   
$xoopsDB = XoopsDatabaseFactory::getDatabaseConnection();
   
$pattern = '/\b' . preg_quote($xoopsDB->prefix()) . '\_/i';

    foreach (
$this->queries as $q) {
       
$sql = preg_replace($pattern, '', $q['sql']);
       
$query_time = isset($q['query_time']) ? sprintf('%0.6f - ', $q['query_time']) : '';

        if (isset(
$q['error'])) {
           
$ret .= '<tr class="' . $class . '"><td><span style="color:#ff0000;">' . $query_time . htmlentities($sql) . '<br><strong>Error number:</strong> ' . $q['errno'] . '<br><strong>Error message:</strong> ' . $q['error'] . '</span></td></tr>';
        } else {
           
$ret .= '<tr class="' . $class . '"><td>' . $query_time . htmlentities($sql) . '</td></tr>';
        }

       
$class = ($class === 'odd') ? 'even' : 'odd';
    }
   
$ret .= '<tr class="foot"><td>' . _LOGGER_TOTAL . ': <span style="color:#ff0000;">' . count($this->queries) . '</span></td></tr></table>';
}
if (empty(
$mode) || $mode === 'blocks') {
   
$class = 'even';
   
$ret .= '<table id="xo-logger-blocks" class="outer"><tr><th colspan="2">' . _LOGGER_BLOCKS . '</th></tr>';
    foreach (
$this->blocks as $b) {
        if (
$b['cached']) {
           
$ret .= '<tr><td class="' . $class . '"><strong>' . $b['name'] . ':</strong> ' . sprintf(_LOGGER_CACHED, (int)$b['cachetime']) . '</td></tr>';
        } else {
           
$ret .= '<tr><td class="' . $class . '"><strong>' . $b['name'] . ':</strong> ' . _LOGGER_NOT_CACHED . '</td></tr>';
        }
       
$class = ($class === 'odd') ? 'even' : 'odd';
    }
   
$ret .= '<tr class="foot"><td>' . _LOGGER_TOTAL . ': <span style="color:#ff0000;">' . count($this->blocks) . '</span></td></tr></table>';
}
if (empty(
$mode) || $mode === 'extra') {
   
$class = 'even';
   
$ret .= '<table id="xo-logger-extra" class="outer"><tr><th colspan="2">' . _LOGGER_EXTRA . '</th></tr>';
    foreach (
$this->extra as $ex) {
       
$ret .= '<tr><td class="' . $class . '"><strong>';
       
$ret .= htmlspecialchars($ex['name']) . ':</strong> ' . htmlspecialchars($ex['msg']);
       
$ret .= '</td></tr>';
       
$class = ($class === 'odd') ? 'even' : 'odd';
    }
   
$ret .= '</table>';
}
if (empty(
$mode) || $mode === 'timers') {
   
$class = 'even';
   
$ret .= '<table id="xo-logger-timers" class="outer"><tr><th colspan="2">' . _LOGGER_TIMERS . '</th></tr>';
    foreach (
$this->logstart as $k => $v) {
       
$ret .= '<tr><td class="' . $class . '"><strong>';
       
$ret .= sprintf(_LOGGER_TIMETOLOAD, htmlspecialchars($k) . '</strong>', '<span style="color:#ff0000;">' . sprintf('%.03f', $this->dumpTime($k)) . '</span>');
       
$ret .= '</td></tr>';
       
$class = ($class === 'odd') ? 'even' : 'odd';
    }
   
$ret .= '</table>';
}

if (empty(
$mode)) {
   
$ret .= <<<EOT
</div>
<script type="text/javascript">
    function xoLogCreateCookie(name,value,days)
    {
        if (days) {
            var date = new Date();
            date.setTime(date.getTime()+(days*24*60*60*1000));
            var expires = "; expires="+date.toGMTString();
        } else var expires = "";
        document.cookie = name+"="+value+expires+"; path=/";
    }
    function xoLogReadCookie(name)
    {
        var nameEQ = name + "=";
        var ca = document.cookie.split(';');
        for (var i=0;i < ca.length;i++) {
            var c = ca[i];
            while (c.charAt(0)==' ') c = c.substring(1,c.length);
            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
        }

        return null;
    }
    function xoLogEraseCookie(name)
    {
        createCookie(name,"",-1);
    }
    function xoSetLoggerView( name )
    {
        var log = document.getElementById( "xo-logger-output" );
        if ( !log ) return null;
        var i, elt;
        for (i=0; i!=log.childNodes.length; i++) {
            elt = log.childNodes[i];
            if ( elt.tagName && elt.tagName.toLowerCase() != 'script' && elt.id != "xo-logger-tabs" ) {
                elt.style.display = ( !name || elt.id == "xo-logger-" + name ) ? "block" : "none";
            }
        }
        xoLogCreateCookie( 'XOLOGGERVIEW', name, 1 );
    }
    xoSetLoggerView( xoLogReadCookie( 'XOLOGGERVIEW' ) );
</script>

EOT;
}