<!DOCTYPE html> <html lang="en"> <head> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"/> <meta charset="utf-8"/> <title>Query</title> <meta name="author" content=""/> <meta name="description" content=""/> <link href="../css/bootstrap-combined.no-icons.min.css" rel="stylesheet"> <link href="../css/font-awesome.min.css" rel="stylesheet"> <link href="../css/prism.css" rel="stylesheet" media="all"/> <link href="../css/template.css" rel="stylesheet" media="all"/> <!--[if lt IE 9]> <script src="../js/html5.js"></script> <![endif]--> <script src="../js/jquery-1.11.0.min.js"></script> <script src="../js/ui/1.10.4/jquery-ui.min.js"></script> <script src="../js/bootstrap.min.js"></script> <script src="../js/jquery.smooth-scroll.js"></script> <script src="../js/prism.min.js"></script> <!-- TODO: Add http://jscrollpane.kelvinluck.com/ to style the scrollbars for browsers not using webkit--> <script type="text/javascript"> function loadExternalCodeSnippets() { Array.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) { var src = pre.getAttribute('data-src'); var extension = (src.match(/\.(\w+)$/) || [, ''])[1]; var language = 'php'; var code = document.createElement('code'); code.className = 'language-' + language; pre.textContent = ''; code.textContent = 'Loading…'; pre.appendChild(code); var xhr = new XMLHttpRequest(); xhr.open('GET', src, true); xhr.onreadystatechange = function () { if (xhr.readyState == 4) { if (xhr.status < 400 && xhr.responseText) { code.textContent = xhr.responseText; Prism.highlightElement(code); } else if (xhr.status >= 400) { code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText; } else { code.textContent = '✖ Error: File does not exist or is empty'; } } }; xhr.send(null); }); } $(document).ready(function(){ loadExternalCodeSnippets(); }); $('#source-view').on('shown', function () { loadExternalCodeSnippets(); }) </script> <link rel="shortcut icon" href="../images/favicon.ico"/> <link rel="apple-touch-icon" href="../images/apple-touch-icon.png"/> <link rel="apple-touch-icon" sizes="72x72" href="../images/apple-touch-icon-72x72.png"/> <link rel="apple-touch-icon" sizes="114x114" href="../images/apple-touch-icon-114x114.png"/> </head> <body> <div class="navbar navbar-fixed-top"> <div class="navbar-inner"> <div class="container"> <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <i class="icon-ellipsis-vertical"></i> </a> <a class="brand" href="../index.html">Query</a> <div class="nav-collapse"> <ul class="nav pull-right"> <li class="dropdown"> <a href="../index.html" class="dropdown-toggle" data-toggle="dropdown"> API Documentation <b class="caret"></b> </a> <ul class="dropdown-menu"> <li><a href="../namespaces/Query.html">\Query</a></li> </ul> </li> <li class="dropdown" id="charts-menu"> <a href="#" class="dropdown-toggle" data-toggle="dropdown"> Charts <b class="caret"></b> </a> <ul class="dropdown-menu"> <li> <a href="../graphs/class.html"> <i class="icon-list-alt"></i> Class hierarchy diagram </a> </li> </ul> </li> <li class="dropdown" id="reports-menu"> <a href="#" class="dropdown-toggle" data-toggle="dropdown"> Reports <b class="caret"></b> </a> <ul class="dropdown-menu"> <li> <a href="../reports/errors.html"> <i class="icon-list-alt"></i> Errors <span class="label label-info pull-right">31</span> </a> </li> <li> <a href="../reports/markers.html"> <i class="icon-list-alt"></i> Markers <span class="label label-info pull-right">0</span> </a> </li> <li> <a href="../reports/deprecated.html"> <i class="icon-list-alt"></i> Deprecated <span class="label label-info pull-right">0</span> </a> </li> </ul> </li> </ul> </div> </div> </div> <!--<div class="go_to_top">--> <!--<a href="#___" style="color: inherit">Back to top  <i class="icon-upload icon-white"></i></a>--> <!--</div>--> </div> <div id="___" class="container-fluid"> <section class="row-fluid"> <div class="span2 sidebar"> <div class="accordion" style="margin-bottom: 0"> <div class="accordion-group"> <div class="accordion-heading"> <a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1227803492"></a> <a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a> </div> <div id="namespace-1227803492" class="accordion-body collapse in"> <div class="accordion-inner"> <div class="accordion" style="margin-bottom: 0"> <div class="accordion-group"> <div class="accordion-heading"> <a class="accordion-toggle collapsed" data-toggle="collapse" data-target="#namespace-2064253653"></a> <a href="../namespaces/Query.html" style="margin-left: 30px; padding-left: 0">Query</a> </div> <div id="namespace-2064253653" class="accordion-body collapse "> <div class="accordion-inner"> <div class="accordion" style="margin-bottom: 0"> <div class="accordion-group"> <div class="accordion-heading"> <a class="accordion-toggle collapsed" data-toggle="collapse" data-target="#namespace-1269935538"></a> <a href="../namespaces/Query.Drivers.html" style="margin-left: 30px; padding-left: 0">Drivers</a> </div> <div id="namespace-1269935538" class="accordion-body collapse "> <div class="accordion-inner"> <div class="accordion" style="margin-bottom: 0"> <div class="accordion-group"> <div class="accordion-heading"> <a class="accordion-toggle collapsed" data-toggle="collapse" data-target="#namespace-1331514274"></a> <a href="../namespaces/Query.Drivers.Firebird.html" style="margin-left: 30px; padding-left: 0">Firebird</a> </div> <div id="namespace-1331514274" class="accordion-body collapse "> <div class="accordion-inner"> <ul> <li class="class"><a href="../classes/Query.Drivers.Firebird.Driver.html">Driver</a></li> <li class="class"><a href="../classes/Query.Drivers.Firebird.Result.html">Result</a></li> <li class="class"><a href="../classes/Query.Drivers.Firebird.SQL.html">SQL</a></li> <li class="class"><a href="../classes/Query.Drivers.Firebird.Util.html">Util</a></li> </ul> </div> </div> </div> </div> <div class="accordion" style="margin-bottom: 0"> <div class="accordion-group"> <div class="accordion-heading"> <a class="accordion-toggle collapsed" data-toggle="collapse" data-target="#namespace-2011881385"></a> <a href="../namespaces/Query.Drivers.Mysql.html" style="margin-left: 30px; padding-left: 0">Mysql</a> </div> <div id="namespace-2011881385" class="accordion-body collapse "> <div class="accordion-inner"> <ul> <li class="class"><a href="../classes/Query.Drivers.Mysql.Driver.html">Driver</a></li> <li class="class"><a href="../classes/Query.Drivers.Mysql.SQL.html">SQL</a></li> <li class="class"><a href="../classes/Query.Drivers.Mysql.Util.html">Util</a></li> </ul> </div> </div> </div> </div> <div class="accordion" style="margin-bottom: 0"> <div class="accordion-group"> <div class="accordion-heading"> <a class="accordion-toggle collapsed" data-toggle="collapse" data-target="#namespace-912403622"></a> <a href="../namespaces/Query.Drivers.Pgsql.html" style="margin-left: 30px; padding-left: 0">Pgsql</a> </div> <div id="namespace-912403622" class="accordion-body collapse "> <div class="accordion-inner"> <ul> <li class="class"><a href="../classes/Query.Drivers.Pgsql.Driver.html">Driver</a></li> <li class="class"><a href="../classes/Query.Drivers.Pgsql.SQL.html">SQL</a></li> <li class="class"><a href="../classes/Query.Drivers.Pgsql.Util.html">Util</a></li> </ul> </div> </div> </div> </div> <div class="accordion" style="margin-bottom: 0"> <div class="accordion-group"> <div class="accordion-heading"> <a class="accordion-toggle collapsed" data-toggle="collapse" data-target="#namespace-383490106"></a> <a href="../namespaces/Query.Drivers.Sqlite.html" style="margin-left: 30px; padding-left: 0">Sqlite</a> </div> <div id="namespace-383490106" class="accordion-body collapse "> <div class="accordion-inner"> <ul> <li class="class"><a href="../classes/Query.Drivers.Sqlite.Driver.html">Driver</a></li> <li class="class"><a href="../classes/Query.Drivers.Sqlite.SQL.html">SQL</a></li> <li class="class"><a href="../classes/Query.Drivers.Sqlite.Util.html">Util</a></li> </ul> </div> </div> </div> </div> <ul> <li class="interface"><a href="../classes/Query.Drivers.DriverInterface.html">DriverInterface</a></li> <li class="interface"><a href="../classes/Query.Drivers.PDOInterface.html">PDOInterface</a></li> <li class="interface"><a href="../classes/Query.Drivers.PDOStatementInterface.html">PDOStatementInterface</a></li> <li class="interface"><a href="../classes/Query.Drivers.SQLInterface.html">SQLInterface</a></li> <li class="class"><a href="../classes/Query.Drivers.AbstractDriver.html">AbstractDriver</a></li> <li class="class"><a href="../classes/Query.Drivers.AbstractSQL.html">AbstractSQL</a></li> <li class="class"><a href="../classes/Query.Drivers.AbstractUtil.html">AbstractUtil</a></li> </ul> </div> </div> </div> </div> <ul> <li class="interface"><a href="../classes/Query.QueryBuilderInterface.html">QueryBuilderInterface</a></li> <li class="class"><a href="../classes/Query.AbstractQueryBuilder.html">AbstractQueryBuilder</a></li> <li class="class"><a href="../classes/Query.BadDBDriverException.html">BadDBDriverException</a></li> <li class="class"><a href="../classes/Query.ConnectionManager.html">ConnectionManager</a></li> <li class="class"><a href="../classes/Query.DriverFactory.html">DriverFactory</a></li> <li class="class"><a href="../classes/Query.QueryBuilder.html">QueryBuilder</a></li> <li class="class"><a href="../classes/Query.QueryParser.html">QueryParser</a></li> <li class="class"><a href="../classes/Query.State.html">State</a></li> </ul> </div> </div> </div> </div> <ul> </ul> </div> </div> </div> </div> </div> </section> <section class="row-fluid"> <div class="span10 offset2"> <div class="row-fluid"> <div class="span8 content class"> <nav> <a href="../namespaces/Query.html">\Query</a> <i class="icon-level-up"></i> </nav> <a href="#source-view" role="button" class="pull-right btn" data-toggle="modal"><i class="icon-code"></i></a> <h1><small>\Query</small>ConnectionManager</h1> <p><em>Connection manager class to manage connections for the Query method</em></p> <section id="summary"> <h2>Summary</h2> <section class="row-fluid heading"> <section class="span4"> <a href="#methods">Methods</a> </section> <section class="span4"> <a href="#properties">Properties</a> </section> <section class="span4"> <a href="#constants">Constants</a> </section> </section> <section class="row-fluid public"> <section class="span4"> <a href="../classes/Query.ConnectionManager.html#method___clone" class="">__clone()</a><br /> <a href="../classes/Query.ConnectionManager.html#method___sleep" class="">__sleep()</a><br /> <a href="../classes/Query.ConnectionManager.html#method___wakeup" class="">__wakeup()</a><br /> <a href="../classes/Query.ConnectionManager.html#method_getInstance" class="">getInstance()</a><br /> <a href="../classes/Query.ConnectionManager.html#method_getConnection" class="">getConnection()</a><br /> <a href="../classes/Query.ConnectionManager.html#method_connect" class="">connect()</a><br /> <a href="../classes/Query.ConnectionManager.html#method_parseParams" class="">parseParams()</a><br /> </section> <section class="span4"> <em>No public properties found</em> </section> <section class="span4"> <em>No constants found</em> </section> </section> <section class="row-fluid protected"> <section class="span4"> <em>No protected methods found</em> </section> <section class="span4"> <em>No protected properties found</em> </section> <section class="span4"> <em>N/A</em> </section> </section> <section class="row-fluid private"> <section class="span4"> <a href="../classes/Query.ConnectionManager.html#method___construct" class="">__construct()</a><br /> <a href="../classes/Query.ConnectionManager.html#method_createDsn" class="">createDsn()</a><br /> </section> <section class="span4"> <a href="../classes/Query.ConnectionManager.html#property_connections" class="">$connections</a><br /> <a href="../classes/Query.ConnectionManager.html#property_instance" class="">$instance</a><br /> </section> <section class="span4"> <em>N/A</em> </section> </section> </section> </div> <aside class="span4 detailsbar"> <span class="label label-info">final</span> <dl> <dt>File</dt> <dd><a href="../files/Query.ConnectionManager.html"><div class="path-wrapper">Query/ConnectionManager.php</div></a></dd> <dt>Package</dt> <dd><div class="namespace-wrapper">Default</div></dd> <dt>Class hierarchy</dt> <dd class="hierarchy"> <div class="namespace-wrapper">\Query\ConnectionManager</div> </dd> </dl> <h2>Tags</h2> <table class="table table-condensed"> <tr><td colspan="2"><em>None found</em></td></tr> </table> </aside> </div> <a id="properties" name="properties"></a> <div class="row-fluid"> <div class="span8 content class"> <h2>Properties</h2> </div> <aside class="span4 detailsbar"></aside> </div> <div class="row-fluid"> <div class="span8 content class"> <a id="property_connections" name="property_connections" class="anchor"></a> <article class="property"> <h3 class="private ">$connections</h3> <pre class="signature">$connections : array</pre> <p><em>Map of named database connections</em></p> <h4>Type</h4> array </article> </div> <aside class="span4 detailsbar"> <h1><i class="icon-arrow-down"></i></h1> <dl> </dl> <h2>Tags</h2> <table class="table table-condensed"> <tr><td colspan="2"><em>None found</em></td></tr> </table> </aside> </div> <div class="row-fluid"> <div class="span8 content class"> <a id="property_instance" name="property_instance" class="anchor"></a> <article class="property"> <h3 class="private ">$instance</h3> <pre class="signature">$instance : \Query\ConnectionManager</pre> <p><em>Class instance variable</em></p> <h4>Type</h4> <a href="../classes/Query.ConnectionManager.html">\Query\ConnectionManager</a> </article> </div> <aside class="span4 detailsbar"> <h1><i class="icon-arrow-down"></i></h1> <dl> </dl> <h2>Tags</h2> <table class="table table-condensed"> <tr><td colspan="2"><em>None found</em></td></tr> </table> </aside> </div> <a id="methods" name="methods"></a> <div class="row-fluid"> <div class="span8 content class"><h2>Methods</h2></div> <aside class="span4 detailsbar"></aside> </div> <div class="row-fluid"> <div class="span8 content class"> <a id="method___clone" name="method___clone" class="anchor"></a> <article class="method"> <h3 class="public ">__clone()</h3> <a href="#source-view" role="button" class="pull-right btn" data-toggle="modal" style="font-size: 1.1em; padding: 9px 14px"><i class="icon-code"></i></a> <pre class="signature" style="margin-right: 54px;">__clone() : void</pre> <p><em>Private clone method to prevent cloning</em></p> <h4>Throws</h4> <dl> <dt>\DomainException</dt> <dd></dd> </dl> </article> </div> <aside class="span4 detailsbar"> <h1><i class="icon-arrow-down"></i></h1> <dl> </dl> <h2>Tags</h2> <table class="table table-condensed"> <tr><td colspan="2"><em>None found</em></td></tr> </table> </aside> </div> <div class="row-fluid"> <div class="span8 content class"> <a id="method___sleep" name="method___sleep" class="anchor"></a> <article class="method"> <h3 class="public ">__sleep()</h3> <a href="#source-view" role="button" class="pull-right btn" data-toggle="modal" style="font-size: 1.1em; padding: 9px 14px"><i class="icon-code"></i></a> <pre class="signature" style="margin-right: 54px;">__sleep() : void</pre> <p><em>Prevent serialization of this object</em></p> <h4>Throws</h4> <dl> <dt>\DomainException</dt> <dd></dd> </dl> </article> </div> <aside class="span4 detailsbar"> <h1><i class="icon-arrow-down"></i></h1> <dl> </dl> <h2>Tags</h2> <table class="table table-condensed"> <tr><td colspan="2"><em>None found</em></td></tr> </table> </aside> </div> <div class="row-fluid"> <div class="span8 content class"> <a id="method___wakeup" name="method___wakeup" class="anchor"></a> <article class="method"> <h3 class="public ">__wakeup()</h3> <a href="#source-view" role="button" class="pull-right btn" data-toggle="modal" style="font-size: 1.1em; padding: 9px 14px"><i class="icon-code"></i></a> <pre class="signature" style="margin-right: 54px;">__wakeup() : void</pre> <p><em>Make sure serialize/deserialize doesn't work</em></p> <h4>Throws</h4> <dl> <dt>\DomainException</dt> <dd></dd> </dl> </article> </div> <aside class="span4 detailsbar"> <h1><i class="icon-arrow-down"></i></h1> <dl> </dl> <h2>Tags</h2> <table class="table table-condensed"> <tr><td colspan="2"><em>None found</em></td></tr> </table> </aside> </div> <div class="row-fluid"> <div class="span8 content class"> <a id="method_getInstance" name="method_getInstance" class="anchor"></a> <article class="method"> <h3 class="public ">getInstance()</h3> <a href="#source-view" role="button" class="pull-right btn" data-toggle="modal" style="font-size: 1.1em; padding: 9px 14px"><i class="icon-code"></i></a> <pre class="signature" style="margin-right: 54px;">getInstance() : \Query\ConnectionManager</pre> <p><em>Return a connection manager instance</em></p> <h4>Returns</h4> <a href="../classes/Query.ConnectionManager.html">\Query\ConnectionManager</a> </article> </div> <aside class="span4 detailsbar"> <h1><i class="icon-arrow-down"></i></h1> <span class="label label-info">static</span> <dl> </dl> <h2>Tags</h2> <table class="table table-condensed"> <tr> <th> staticvar </th> <td> <p>null $instance</p> </td> </tr> </table> </aside> </div> <div class="row-fluid"> <div class="span8 content class"> <a id="method_getConnection" name="method_getConnection" class="anchor"></a> <article class="method"> <h3 class="public ">getConnection()</h3> <a href="#source-view" role="button" class="pull-right btn" data-toggle="modal" style="font-size: 1.1em; padding: 9px 14px"><i class="icon-code"></i></a> <pre class="signature" style="margin-right: 54px;">getConnection(string|array|object <span class="argument">$name = ''</span>) : \Query\QueryBuilderInterface</pre> <p><em>Returns the connection specified by the name given</em></p> <h4>Parameters</h4> <table class="table table-condensed table-hover"> <tr> <td>string|array|object</td> <td>$name </td> <td></td> </tr> </table> <h4>Throws</h4> <dl> <dt>\InvalidArgumentException</dt> <dd></dd> </dl> <h4>Returns</h4> <a href="../classes/Query.QueryBuilderInterface.html">\Query\QueryBuilderInterface</a> </article> </div> <aside class="span4 detailsbar"> <h1><i class="icon-arrow-down"></i></h1> <dl> </dl> <h2>Tags</h2> <table class="table table-condensed"> <tr><td colspan="2"><em>None found</em></td></tr> </table> </aside> </div> <div class="row-fluid"> <div class="span8 content class"> <a id="method_connect" name="method_connect" class="anchor"></a> <article class="method"> <h3 class="public ">connect()</h3> <a href="#source-view" role="button" class="pull-right btn" data-toggle="modal" style="font-size: 1.1em; padding: 9px 14px"><i class="icon-code"></i></a> <pre class="signature" style="margin-right: 54px;">connect(\stdClass <span class="argument">$params</span>) : \Query\QueryBuilderInterface</pre> <p><em>Parse the passed parameters and return a connection</em></p> <h4>Parameters</h4> <table class="table table-condensed table-hover"> <tr> <td>\stdClass</td> <td>$params </td> <td></td> </tr> </table> <h4>Returns</h4> <a href="../classes/Query.QueryBuilderInterface.html">\Query\QueryBuilderInterface</a> </article> </div> <aside class="span4 detailsbar"> <h1><i class="icon-arrow-down"></i></h1> <dl> </dl> <h2>Tags</h2> <table class="table table-condensed"> <tr><td colspan="2"><em>None found</em></td></tr> </table> </aside> </div> <div class="row-fluid"> <div class="span8 content class"> <a id="method_parseParams" name="method_parseParams" class="anchor"></a> <article class="method"> <h3 class="public ">parseParams()</h3> <a href="#source-view" role="button" class="pull-right btn" data-toggle="modal" style="font-size: 1.1em; padding: 9px 14px"><i class="icon-code"></i></a> <pre class="signature" style="margin-right: 54px;">parseParams(\stdClass <span class="argument">$params</span>) : array</pre> <p><em>Parses params into a dsn and option array</em></p> <h4>Parameters</h4> <table class="table table-condensed table-hover"> <tr> <td>\stdClass</td> <td>$params </td> <td></td> </tr> </table> <h4>Throws</h4> <dl> <dt>\Query\BadDBDriverException</dt> <dd></dd> </dl> <h4>Returns</h4> array </article> </div> <aside class="span4 detailsbar"> <h1><i class="icon-arrow-down"></i></h1> <dl> </dl> <h2>Tags</h2> <table class="table table-condensed"> <tr><td colspan="2"><em>None found</em></td></tr> </table> </aside> </div> <div class="row-fluid"> <div class="span8 content class"> <a id="method___construct" name="method___construct" class="anchor"></a> <article class="method"> <h3 class="private ">__construct()</h3> <a href="#source-view" role="button" class="pull-right btn" data-toggle="modal" style="font-size: 1.1em; padding: 9px 14px"><i class="icon-code"></i></a> <pre class="signature" style="margin-right: 54px;">__construct() </pre> <p><em>Private constructor to prevent multiple instances</em></p> </article> </div> <aside class="span4 detailsbar"> <h1><i class="icon-arrow-down"></i></h1> <dl> </dl> <h2>Tags</h2> <table class="table table-condensed"> <tr> <th> codeCoverageIgnore </th> <td> </td> </tr> </table> </aside> </div> <div class="row-fluid"> <div class="span8 content class"> <a id="method_createDsn" name="method_createDsn" class="anchor"></a> <article class="method"> <h3 class="private ">createDsn()</h3> <a href="#source-view" role="button" class="pull-right btn" data-toggle="modal" style="font-size: 1.1em; padding: 9px 14px"><i class="icon-code"></i></a> <pre class="signature" style="margin-right: 54px;">createDsn(string <span class="argument">$dbtype</span>, \stdClass <span class="argument">$params</span>) : string</pre> <p><em>Create the dsn from the db type and params</em></p> <h4>Parameters</h4> <table class="table table-condensed table-hover"> <tr> <td>string</td> <td>$dbtype </td> <td></td> </tr> <tr> <td>\stdClass</td> <td>$params </td> <td></td> </tr> </table> <h4>Returns</h4> string </article> </div> <aside class="span4 detailsbar"> <h1><i class="icon-arrow-down"></i></h1> <dl> </dl> <h2>Tags</h2> <table class="table table-condensed"> <tr><td colspan="2"><em>None found</em></td></tr> </table> </aside> </div> </div> </section> <div id="source-view" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="source-view-label" aria-hidden="true"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <h3 id="source-view-label">ConnectionManager.php</h3> </div> <div class="modal-body"> <pre data-src="../files/Query/ConnectionManager.php.txt" class="language-php line-numbers"></pre> </div> </div> <footer class="row-fluid"> <section class="span10 offset2"> <section class="row-fluid"> <section class="span10 offset1"> <section class="row-fluid footer-sections"> <section class="span4"> <h1><i class="icon-code"></i></h1> <div> <ul> <li><a href="../namespaces/Query.html">\Query</a></li> </ul> </div> </section> <section class="span4"> <h1><i class="icon-bar-chart"></i></h1> <div> <ul> <li><a href="../graphs/class.html">Class Hierarchy Diagram</a></li> </ul> </div> </section> <section class="span4"> <h1><i class="icon-pushpin"></i></h1> <div> <ul> <li><a href="../reports/errors.html">Errors</a></li> <li><a href="../reports/markers.html">Markers</a></li> </ul> </div> </section> </section> </section> </section> <section class="row-fluid"> <section class="span10 offset1"> <hr /> Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored on February 28th, 2017 at 21:36. </section> </section> </section> </footer> </div> </body> </html>