[ Mini Kiebo ]
Server: Windows NT DESKTOP-5B8S0D4 6.2 build 9200 (Windows 8 Professional Edition) i586
Path:
D:
/
Backup
/
14082024
/
Data
/
htdocs
/
htdocs
/
ojs
/
248
/
lib
/
pkp
/
lib
/
pqp
/
[
Home
]
File: display.php
<?php /* - - - - - - - - - - - - - - - - - - - - - - - - - - - Title : HTML Output for Php Quick Profiler Author : Created by Ryan Campbell URL : http://particletree.com/features/php-quick-profiler/ Last Updated : April 22, 2009 Description : This is a horribly ugly function used to output the PQP HTML. This is great because it will just work in your project, but it is hard to maintain and read. See the README file for how to use the Smarty file we provided with PQP. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ function displayPqp($output, $config) { $cssUrl = $config.'css/pQp.css'; echo <<<JAVASCRIPT <!-- JavaScript --> <script type="text/javascript"> var PQP_DETAILS = true; var PQP_HEIGHT = "short"; var PQP_METRICS = true; addEvent(window, 'load', loadCSS); function changeTab(tab) { var pQp = document.getElementById('pQp'); hideAllTabs(); addClassName(pQp, tab, true); } function hideAllTabs() { var pQp = document.getElementById('pQp'); removeClassName(pQp, 'console'); removeClassName(pQp, 'speed'); removeClassName(pQp, 'queries'); removeClassName(pQp, 'memory'); removeClassName(pQp, 'files'); } function toggleMetrics(){ var container = document.getElementById('pqp-metrics'); if(PQP_METRICS){ addClassName(container, 'hideMetrics', true); PQP_METRICS = false; } else{ removeClassName(container, 'hideMetrics'); PQP_METRICS = true; } } function toggleDetails(){ var container = document.getElementById('pqp-container'); if(PQP_DETAILS){ addClassName(container, 'hideDetails', true); PQP_DETAILS = false; } else{ removeClassName(container, 'hideDetails'); PQP_DETAILS = true; } } function toggleHeight(){ var container = document.getElementById('pqp-container'); if(PQP_HEIGHT == "short"){ addClassName(container, 'tallDetails', true); PQP_HEIGHT = "tall"; } else{ removeClassName(container, 'tallDetails'); PQP_HEIGHT = "short"; } } function loadCSS() { var sheet = document.createElement("link"); sheet.setAttribute("rel", "stylesheet"); sheet.setAttribute("type", "text/css"); sheet.setAttribute("href", "$cssUrl"); document.getElementsByTagName("head")[0].appendChild(sheet); setTimeout(function(){document.getElementById("pqp-container").style.display = "block"}, 10); } //http://www.bigbold.com/snippets/posts/show/2630 function addClassName(objElement, strClass, blnMayAlreadyExist){ if ( objElement.className ){ var arrList = objElement.className.split(' '); if ( blnMayAlreadyExist ){ var strClassUpper = strClass.toUpperCase(); for ( var i = 0; i < arrList.length; i++ ){ if ( arrList[i].toUpperCase() == strClassUpper ){ arrList.splice(i, 1); i--; } } } arrList[arrList.length] = strClass; objElement.className = arrList.join(' '); } else{ objElement.className = strClass; } } //http://www.bigbold.com/snippets/posts/show/2630 function removeClassName(objElement, strClass){ if ( objElement.className ){ var arrList = objElement.className.split(' '); var strClassUpper = strClass.toUpperCase(); for ( var i = 0; i < arrList.length; i++ ){ if ( arrList[i].toUpperCase() == strClassUpper ){ arrList.splice(i, 1); i--; } } objElement.className = arrList.join(' '); } } //http://ejohn.org/projects/flexible-javascript-events/ function addEvent( obj, type, fn ) { if ( obj.attachEvent ) { obj["e"+type+fn] = fn; obj[type+fn] = function() { obj["e"+type+fn]( window.event ) }; obj.attachEvent( "on"+type, obj[type+fn] ); } else{ obj.addEventListener( type, fn, false ); } } </script> JAVASCRIPT; echo '<div id="pqp-container" class="pQp" style="display:none">'; $logCount = count($output['logs']['console']); $fileCount = count($output['files']); $memoryUsed = $output['memoryTotals']['used']; $queryCount = $output['queryTotals']['count']; $speedTotal = $output['speedTotals']['total']; echo <<<PQPTABS <div id="pQp" class="console"> <table id="pqp-metrics" cellspacing="0"> <tr> <td class="green" onclick="changeTab('console');"> <var>$logCount</var> <h4>Console</h4> </td> <td class="blue" onclick="changeTab('speed');"> <var>$speedTotal</var> <h4>Load Time</h4> </td> <td class="purple" onclick="changeTab('queries');"> <var>$queryCount Queries</var> <h4>Database</h4> </td> <td class="orange" onclick="changeTab('memory');"> <var>$memoryUsed</var> <h4>Memory Used</h4> </td> <td class="red" onclick="changeTab('files');"> <var>{$fileCount} Files</var> <h4>Included</h4> </td> </tr> </table> PQPTABS; echo '<div id="pqp-console" class="pqp-box">'; if($logCount == 0) { echo '<h3>This panel has no log items.</h3>'; } else { echo '<table class="side" cellspacing="0"> <tr> <td class="alt1"><var>'.$output['logs']['logCount'].'</var><h4>Logs</h4></td> <td class="alt2"><var>'.$output['logs']['errorCount'].'</var> <h4>Errors</h4></td> </tr> <tr> <td class="alt3"><var>'.$output['logs']['memoryCount'].'</var> <h4>Memory</h4></td> <td class="alt4"><var>'.$output['logs']['speedCount'].'</var> <h4>Speed</h4></td> </tr> </table> <table class="main" cellspacing="0">'; $class = ''; foreach($output['logs']['console'] as $log) { echo '<tr class="log-'.$log['type'].'"> <td class="type">'.$log['type'].'</td> <td class="'.$class.'">'; if($log['type'] == 'log') { echo '<div><pre>'.$log['data'].'</pre></div>'; } elseif($log['type'] == 'memory') { echo '<div><pre>'.$log['data'].'</pre> <em>'.$log['dataType'].'</em>: '.$log['name'].' </div>'; } elseif($log['type'] == 'speed') { echo '<div><pre>'.$log['data'].'</pre> <em>'.$log['name'].'</em></div>'; } elseif($log['type'] == 'error') { echo '<div><em>Line '.$log['line'].'</em> : '.$log['data'].' <pre>'.$log['file'].'</pre></div>'; } echo '</td></tr>'; if($class == '') $class = 'alt'; else $class = ''; } echo '</table>'; } echo '</div>'; echo '<div id="pqp-speed" class="pqp-box">'; if($output['logs']['speedCount'] == 0) { echo '<h3>This panel has no log items.</h3>'; } else { echo '<table class="side" cellspacing="0"> <tr><td><var>'.$output['speedTotals']['total'].'</var><h4>Load Time</h4></td></tr> <tr><td class="alt"><var>'.$output['speedTotals']['allowed'].'</var> <h4>Max Execution Time</h4></td></tr> </table> <table class="main" cellspacing="0">'; $class = ''; foreach($output['logs']['console'] as $log) { if($log['type'] == 'speed') { echo '<tr class="log-'.$log['type'].'"> <td class="'.$class.'">'; echo '<div><pre>'.$log['data'].'</pre> <em>'.$log['name'].'</em></div>'; echo '</td></tr>'; if($class == '') $class = 'alt'; else $class = ''; } } echo '</table>'; } echo '</div>'; echo '<div id="pqp-queries" class="pqp-box">'; if($output['queryTotals']['count'] == 0) { echo '<h3>This panel has no log items.</h3>'; } else { echo '<table class="side" cellspacing="0"> <tr><td><var>'.$output['queryTotals']['count'].'</var><h4>Total Queries</h4></td></tr> <tr><td class="alt"><var>'.$output['queryTotals']['time'].'</var> <h4>Total Time</h4></td></tr> <tr><td><var>0</var> <h4>Duplicates</h4></td></tr> </table> <table class="main" cellspacing="0">'; $class = ''; foreach($output['queries'] as $query) { echo '<tr> <td class="'.$class.'">'.$query['sql']; if($query['explain']) { echo '<em> Possible keys: <b>'.$query['explain']['possible_keys'].'</b> · Key Used: <b>'.$query['explain']['key'].'</b> · Type: <b>'.$query['explain']['type'].'</b> · Rows: <b>'.$query['explain']['rows'].'</b> · Speed: <b>'.$query['time'].'</b> </em>'; } echo '</td></tr>'; if($class == '') $class = 'alt'; else $class = ''; } echo '</table>'; } echo '</div>'; echo '<div id="pqp-memory" class="pqp-box">'; if($output['logs']['memoryCount'] == 0) { echo '<h3>This panel has no log items.</h3>'; } else { echo '<table class="side" cellspacing="0"> <tr><td><var>'.$output['memoryTotals']['used'].'</var><h4>Used Memory</h4></td></tr> <tr><td class="alt"><var>'.$output['memoryTotals']['total'].'</var> <h4>Total Available</h4></td></tr> </table> <table class="main" cellspacing="0">'; $class = ''; foreach($output['logs']['console'] as $log) { if($log['type'] == 'memory') { echo '<tr class="log-'.$log['type'].'">'; echo '<td class="'.$class.'"><b>'.$log['data'].'</b> <em>'.$log['dataType'].'</em>: '.$log['name'].'</td>'; echo '</tr>'; if($class == '') $class = 'alt'; else $class = ''; } } echo '</table>'; } echo '</div>'; echo '<div id="pqp-files" class="pqp-box">'; if($output['fileTotals']['count'] == 0) { echo '<h3>This panel has no log items.</h3>'; } else { echo '<table class="side" cellspacing="0"> <tr><td><var>'.$output['fileTotals']['count'].'</var><h4>Total Files</h4></td></tr> <tr><td class="alt"><var>'.$output['fileTotals']['size'].'</var> <h4>Total Size</h4></td></tr> <tr><td><var>'.$output['fileTotals']['largest'].'</var> <h4>Largest</h4></td></tr> </table> <table class="main" cellspacing="0">'; $class =''; foreach($output['files'] as $file) { echo '<tr><td class="'.$class.'"><b>'.$file['size'].'</b> '.$file['name'].'</td></tr>'; if($class == '') $class = 'alt'; else $class = ''; } echo '</table>'; } echo '</div>'; echo <<<FOOTER <table id="pqp-footer" cellspacing="0"> <tr> <td class="credit"> <a href="http://particletree.com" target="_blank"> <strong>PHP</strong> <b class="green">Q</b><b class="blue">u</b><b class="purple">i</b><b class="orange">c</b><b class="red">k</b> Profiler</a></td> <td class="actions"> <a href="#" onclick="toggleMetrics();return false">Metrics</a> <a href="#" onclick="toggleDetails();return false">Details</a> <a class="heightToggle" href="#" onclick="toggleHeight();return false">Height</a> </td> </tr> </table> FOOTER; echo '</div></div>'; } ?>