/** * Set the default database adapter * * @param Zend_Db_Adapter_Abstract $adapter * * @return void */ public static function setDefaultAdapter(Zend_Db_Adapter_Abstract $adapter) { self::$_defaultAdapter = $adapter; }
protected function _rowToModel($row, $class = false) { if (array_key_exists('project.project_id', $row)) { $row['project'] = new Default_Model_Project(array('project_id' => $row['project.project_id'], 'name' => $row['project.name'], 'private' => $row['project.private'])); unset($row['project.project_id'], $row['project.name'], $row['project.private']); } if (array_key_exists('created_by.user_id', $row)) { $row['created_by'] = new Default_Model_User(array('user_id' => $row['created_by.user_id'], 'username' => $row['created_by.username'], 'password' => $row['created_by.password'], 'last_login' => $row['created_by.last_login'], 'last_ip' => $row['created_by.last_ip'], 'register_time' => $row['created_by.register_time'], 'register_ip' => $row['created_by.register_ip'])); unset($row['created_by.user_id'], $row['created_by.username'], $row['created_by.password'], $row['created_by.last_login'], $row['created_by.last_ip'], $row['created_by.register_time'], $row['created_by.register_ip']); } if (array_key_exists('assigned_to.user_id', $row) && $row['assigned_to.user_id'] != null) { $row['created_by'] = new Default_Model_User(array('user_id' => $row['assigned_to.user_id'], 'username' => $row['assigned_to.username'], 'password' => $row['assigned_to.password'], 'last_login' => $row['assigned_to.last_login'], 'last_ip' => $row['assigned_to.last_ip'], 'register_time' => $row['assigned_to.register_time'], 'register_ip' => $row['assigned_to.register_ip'])); } unset($row['assigned_to.user_id'], $row['assigned_to.username'], $row['assigned_to.password'], $row['assigned_to.last_login'], $row['assigned_to.last_ip'], $row['assigned_to.register_time'], $row['assigned_to.register_ip']); return parent::_rowToModel($row); }
public static function _toHTML() { $timers = self::getTimers(); $out = '<div id="profiler-section" style="z-index:10000;bottom:5px;left:5px;opacity:1;background:white;width:auto;padding:5px;border:2px solid #CCC;" onmouseover="this.style.opacity=1" onmouseout="this.style.opacity=1">'; $out .= '<pre>Memory usage:<br/> real: ' . memory_get_usage(true) . ', emalloc: ' . memory_get_usage() . '</pre>'; $out .= '<table border="1" cellspacing="0" cellpadding="2" width="100%">'; $out .= '<tr><th>Code Profiler</th><th>Time</th><th>Cnt</th><th>RealMem</th><th>Emalloc</th></tr>'; foreach ($timers as $name => $timer) { $sum = self::fetch($name, 'sum'); $count = self::fetch($name, 'count'); $realmem = self::fetch($name, 'realmem'); $emalloc = self::fetch($name, 'emalloc'); if ($sum < 0.001 && $count < 10 && $realmem == 0) { continue; } $out .= '<tr><td align="left">' . $name . '</td><td>' . number_format($sum, 4) . '</td><td>' . $count . '</td><td>' . number_format($realmem) . '</td><td>' . number_format($emalloc) . '</td></tr>' . '</td></tr>'; } $out .= '</table>'; $profiler = Issues_Model_Mapper_DbAbstract::getDefaultAdapter()->getProfiler(); $totalTime = $profiler->getTotalElapsedSecs(); $queryCount = $profiler->getTotalNumQueries(); $longestTime = 0; $longestQuery = null; if ($profiler->getTotalNumQueries() > 0) { foreach ($profiler->getQueryProfiles() as $query) { if ($query->getElapsedSecs() > $longestTime) { $longestTime = $query->getElapsedSecs(); $longestQuery = $query->getQuery(); } } $out .= '<table border="1" cellspacing="0" cellpadding="2" width="100%">'; $out .= '<tr><td width="40%"><b>Queries executed:</td><td>' . $queryCount . '</td></tr>'; $out .= '<tr><td><b>All queries length</td><td>' . $totalTime . '</td></tr>'; $out .= '<tr><td><b>Average query length:</td><td>' . $totalTime / $queryCount . '</td></tr>'; $out .= '<tr><td><b>Queries per second:</td><td>' . $queryCount / $totalTime . '</td></tr>'; $out .= '<tr><td valign="top"><b>Longest query:</td><td>' . $longestQuery . '</td></tr>'; $out .= '<tr><td><b>Longest query time:</td><td>' . $longestTime . '</td></tr>'; $out .= '</table>'; $out .= '<table border="1" cellspacing="0" cellpadding="2" width="100%">'; $out .= '<tr><th>Query</th><th>Elapsed Time</th></tr>'; foreach ($profiler->getQueryProfiles() as $query) { $out .= '<tr><td>'; $out .= $query->getQuery(); $out .= '</td><td>'; $out .= $query->getElapsedSecs(); $out .= '</td></tr>'; } $out .= '</table>'; } else { $out .= "No database hits... everything loaded from cache."; } $out .= '</div>'; return $out; }
/** * Initialize database * * @return void */ protected function _initDatabase() { $this->bootstrap('db'); Issues_Model_Mapper_DbAbstract::setDefaultAdapter($this->getResource('db')); }