<?php

class Agro_View_Helper_Profiler extends Zend_Controller_Action_Helper_Abstract {
	
	public function profiler() {
		$profiler = Agro_Db_Table_Abstract::getDefaultAdapter()->getProfiler();
		$totalTime    = $profiler->getTotalElapsedSecs();
        $queryCount   = $profiler->getTotalNumQueries();
        $Queries      = $profiler->getQueryProfiles();
        $longestTime  = 0;
        $longestQuery = null;
        $queries = "";
        
        if ($Queries) {
        	foreach ($Queries as $query) {
            	if ($query->getElapsedSecs() > $longestTime) {
                	$longestTime  = $query->getElapsedSecs();
                	$longestQuery = $query->getQuery();
				} 
				
                $queries .= 'Query length: ' . round($query->getElapsedSecs(), 3) . " sec.<br />n";
                $queries .= "Query: n" . $query->getQuery() . "<br />n";                                $queries .= "<br />n";
			}
			
			$queryOut = 'Executed ' . $queryCount . ' queries in ' . round($totalTime, 3) . ' sec.' . "<br />n";
            $queryOut .= 'Average query length: ' . round(($totalTime / $queryCount), 3) . ' sec.' . "<br />n";
            $queryOut .= 'Queries per second: ' . round(($queryCount / $totalTime),3) . "<br />n";
            $queryOut .= 'Longest query length: ' . round($longestTime,3) . " sec.<br />n";
            $queryOut .= "Longest query: n" . $longestQuery . "<br />n";
            $queryOut .= "Queries: n" . $queries . "<br />n";
		}
		                                
		$out = '<div id="profiler" style="display:block">';
        
		if (isset($queryOut)) {
        	$out .= $queryOut;      
		}
		
		$out .= "</div>";
                
		return $out;
	}
	
}