|
|
- <?php
- require('../../../includes/prepend.inc.php');
- $intDatabaseIndex = $_POST['intDatabaseIndex'];
- $strProfileData = $_POST['strProfileData'];
- $strReferrer = $_POST['strReferrer'];
-
- $objProfileArray = unserialize(base64_decode($strProfileData));
- $objProfileArray = QType::Cast($objProfileArray, QType::ArrayType);
- if ((count($objProfileArray) % 2) != 0)
- throw new Exception('Database Profiling data appears to have been corrupted.');
- ?>
- <html>
- <head>
- <title>Qcodo Development Framework - Database Profiling Tool</title>
- <style>
- body { font-family: 'Arial' 'Helvetica' 'sans-serif'; font-size: 14px; }
- a:link, a:visited { text-decoration: none; }
- a:hover { text-decoration: underline; }
-
- pre { font-family: 'Lucida Console' 'Courier New' 'Courier' 'monospaced'; font-size: 11px; line-height: 13px; }
- .page { padding: 10px; }
-
- .headingLeft {
- background-color: #446644;
- color: #ffffff;
- padding: 10px 0px 10px 10px;
- font-family: 'Verdana' 'Arial' 'Helvetica' 'sans-serif';
- font-size: 18px;
- font-weight: bold;
- width: 70%;
- vertical-align: middle;
- }
- .headingLeftSmall { font-size: 10px; }
- .headingRight {
- background-color: #446644;
- color: #ffffff;
- padding: 0px 10px 10px 10px;
- font-family: 'Verdana' 'Arial' 'Helvetica' 'sans-serif';
- font-size: 10px;
- width: 30%;
- vertical-align: middle;
- text-align: right;
- }
- .title { font-family: 'Verdana' 'Arial' 'Helvetica' 'sans-serif'; font-size: 19px; font-style: italic; color: #330055; }
- .code { background-color: #f4eeff; padding: 1px 10px 1px 10px; }
-
- .function { font-family: 'Verdana' 'Arial' 'Helvetica' 'sans-serif'; font-size: 12px; font-weight: bold; }
- .function_details { font-family: 'Verdana' 'Arial' 'Helvetica' 'sans-serif'; font-size: 10px; color: #777777; }
- </style>
- <script type="text/javascript">
- function Toggle(spanId) {
- var obj = document.getElementById(spanId);
-
- if (obj) {
- if (obj.style.display == "block") {
- // Make INVISIBLE
- obj.style.display = "none";
- } else {
- // Make VISIBLE
- obj.style.display = "block";
- }
- }
- }
-
- function ShowAll() {
- for (var intIndex = 1; intIndex < <?php _p(count($objProfileArray)); ?>; intIndex = intIndex + 2) {
- var obj = document.getElementById('query' + intIndex);
- obj.style.display = "block";
- }
- }
-
- function HideAll() {
- for (var intIndex = 1; intIndex < <?php _p(count($objProfileArray)); ?>; intIndex = intIndex + 2) {
- var obj = document.getElementById('query' + intIndex);
- obj.style.display = "none";
- }
- }
- </script>
- </head>
- <body topmargin="0" leftmargin="0" marginheight="0" marginwidth="0">
-
- <table border="0" cellspacing="0" width="100%">
- <tr>
- <td nowrap="nowrap" class="headingLeft"><span class="headingLeftSmall">Qcodo Development Framework <?= QCODO_VERSION ?><br /></span>Database Profiling Tool</div></td>
- <td nowrap="nowrap" class="headingRight">
- <b>Database Index:</b> <?php _p($intDatabaseIndex); ?>; <b>Database Type:</b> <?php _p(QApplication::$Database[$intDatabaseIndex]->Adapter); ?><br />
- <b>Database Server:</b> <?php _p(QApplication::$Database[$intDatabaseIndex]->Server); ?>; <b>Database Name:</b> <?php _p(QApplication::$Database[$intDatabaseIndex]->Database); ?><br />
- <b>Profile Generated From:</b> <?php _p($strReferrer); ?>
- </td>
- </tr>
- </table><br />
-
- <div class="page">
- <?php
- $intCount = count($objProfileArray) / 2;
- if ($intCount == 0)
- _p('<b>There were no queries that were performed.</b>', false);
- else if ($intCount == 1)
- _p('<b>There was 1 query that was performed.</b>', false);
- else
- printf('<b>There were %s queries that were performed.</b>', $intCount);
- ?>
- <br />
- <a href="javascript: ShowAll()" class="function_details">Show All</a>
- |
- <a href="javascript: HideAll()" class="function_details">Hide All</a>
- <br /><br /><br />
- <?php
- for ($intIndex = 0; $intIndex < count($objProfileArray); $intIndex++) {
- if ((count($objProfileArray[$intIndex]) > 3) &&
- (array_key_exists('function', $objProfileArray[$intIndex][2])) &&
- (($objProfileArray[$intIndex][2]['function'] == 'QueryArray') ||
- ($objProfileArray[$intIndex][2]['function'] == 'QuerySingle') ||
- ($objProfileArray[$intIndex][2]['function'] == 'QueryCount')))
- $objDebugBacktrace = $objProfileArray[$intIndex][3];
- else
- $objDebugBacktrace = $objProfileArray[$intIndex][2];
- $intIndex++;
- $strQuery = $objProfileArray[$intIndex];
-
- $objArgs = (array_key_exists('args', $objDebugBacktrace)) ? $objDebugBacktrace['args'] : array();
- $strClass = (array_key_exists('class', $objDebugBacktrace)) ? $objDebugBacktrace['class'] : null;
- $strType = (array_key_exists('type', $objDebugBacktrace)) ? $objDebugBacktrace['type'] : null;
- $strFunction = (array_key_exists('function', $objDebugBacktrace)) ? $objDebugBacktrace['function'] : null;
- $strFile = (array_key_exists('file', $objDebugBacktrace)) ? $objDebugBacktrace['file'] : null;
- $strLine = (array_key_exists('line', $objDebugBacktrace)) ? $objDebugBacktrace['line'] : null;
- ?>
- <span class="function">
- Called by <?php _p($strClass . $strType . $strFunction . '(' . implode(', ', $objArgs) . ')'); ?>
- </span>
- |
- <a href="javascript: Toggle('query<?php _p($intIndex); ?>')" class="function_details">Show/Hide</a>
- <br />
- <span class="function_details"><b>File: </b><?php _p($strFile); ?>; <b>Line: </b><?php _p($strLine); ?>
- </span><br />
- <div class="code" id="query<?php _p($intIndex); ?>" style="display: none"><pre><?php _p($strQuery); ?></pre></div>
- <br /><br />
- <?php
- }
- ?>
-
- </div>
- </body>
- </html>
|