/** * Render all {@link ProfilerSQLNode} queries for the given node, and traverse it's child nodes * to render their queries also. * * @param ProfilerNode $node The node to begin rendering */ public static function renderNodeSQL($node) { if ($node->hasSQLQueries()) { $c = 0; //row counter $nodeQueries = $node->getSQLQueries(); ?> <tr class="profiler-query-node-name" id="profiler-node-queries-<?php echo md5($node->getName() . $node->getStart()); ?> "> <th colspan="4"><?php echo $node->getName(); ?> </th> </tr> <?php foreach ($nodeQueries as $query) { ?> <tr class="profiler-query-info-header profiler-node-queries-<?php echo md5($node->getName() . $node->getStart()); ?> "> <th class="profiler-gutter"> </td> <th>start time (ms)</th> <th>duration (ms)</th> <th>query type</th> </tr> <tr class="profiler-query-info profiler-node-queries-<?php echo md5($node->getName() . $node->getStart()); ?> "> <td> </td> <td class="profiler-query-start-timer profiler-monospace"> <span class="profiler-unit">T+</span><?php echo round($query->getStart() - Profiler::getGlobalStart(), 1); ?> </td> <td class="profiler-query-duration profiler-monospace"><?php echo $query->getDuration(); ?> </td> <td class="profiler-query-type"><?php echo $query->getQueryType(); ?> </td> </tr> <tr> <td class="profiler-node-queries-<?php echo md5($node->getName() . $node->getStart()); ?> "> </td> <td class="profiler-node-queries-<?php echo md5($node->getName() . $node->getStart()); ?> " colspan="3"> <pre class="prettyprint lang-sql"><?php echo $query->getQuery(); ?> </pre> </td> </tr> <tr> <td colspan="4" class="profiler-query-more-info-links"> <a href="#profiler-results" class="profiler-back-to-top">top</a> · <a href="#<?php echo md5($query->getQuery()) . "_query_callstack"; ?> " class="profiler-show-callstack" data-query-id="<?php echo md5($query->getQuery()); ?> ">show callstack</a> </td> </tr> <tr class="profiler-hidden" id="<?php echo md5($query->getQuery()) . "_query_callstack"; ?> "> <td> </td> <td colspan="3"> <table class="profiler-query_callstack"> <?php foreach ($query->getCallstack() as $stackStep) { ?> <tr class="<?php echo ++$c % 2 ? 'odd' : 'even'; ?> "> <td class="profiler-callstack-method"><code class="prettyprint"><?php echo (!empty($stackStep['class']) ? $stackStep['class'] . $stackStep['type'] : '') . $stackStep['function']; ?> </code></td> </tr> <?php } ?> </table> </td> </tr> <tr class="profiler-query-seperator"> <td colspan="4"><div class="profiler-hr"><hr /></div></td> </tr> <?php } } if ($node->hasChildren()) { foreach ($node->getChildren() as $childNode) { self::renderNodeSQL($childNode); } } }