mirror of
				https://bitbucket.org/jsuto/piler.git
				synced 2025-11-04 09:22:26 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			67 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
class ModelStatChart extends Model {
 | 
						|
 | 
						|
   public function lineChartArchivedMessages($timespan){
 | 
						|
      $data = [];
 | 
						|
 | 
						|
      $session = Registry::get('session');
 | 
						|
 | 
						|
      $range = $this->getRangeInSeconds($timespan);
 | 
						|
 | 
						|
      if($timespan == "daily"){ $grouping = "GROUP BY FROM_UNIXTIME(ts, '%Y.%m.%d. %H')"; }
 | 
						|
      else { $grouping = "GROUP BY FROM_UNIXTIME(ts, '%Y.%m.%d.')"; }
 | 
						|
 | 
						|
 | 
						|
      if($timespan == "daily"){
 | 
						|
         $delta = 3600;
 | 
						|
         $data_points = 24;
 | 
						|
      } else {
 | 
						|
         $delta = 86400;
 | 
						|
         $data_points = 30;
 | 
						|
      }
 | 
						|
 | 
						|
      $now = time();
 | 
						|
      $now -= $now % $delta + ($data_points-1)*$delta;
 | 
						|
 | 
						|
      for($i=0; $i<$data_points; $i++) {
 | 
						|
         $data[$now] = 0;
 | 
						|
         $now += $delta;
 | 
						|
      }
 | 
						|
 | 
						|
      if(Registry::get('admin_user') == 0) {
 | 
						|
 | 
						|
         $q = '';
 | 
						|
         $auditdomains = $session->get('auditdomains');
 | 
						|
 | 
						|
         foreach($auditdomains as $a) {
 | 
						|
            if($q) { $q .= ",?"; } else { $q = "?"; }
 | 
						|
         }
 | 
						|
         reset($auditdomains);
 | 
						|
         $query = $this->db->query("select (arrived-(arrived%$delta)) as ts, count(*) as num from " . VIEW_MESSAGES . " where arrived > $range AND todomain IN ($q) $domains $grouping ORDER BY ts DESC limit $data_points", $auditdomains);
 | 
						|
      } else {
 | 
						|
         $query = $this->db->query("select (arrived-(arrived%$delta)) as ts, count(*) as num from " . TABLE_META . " where arrived > $range $grouping ORDER BY ts DESC limit $data_points");
 | 
						|
      }
 | 
						|
 | 
						|
      foreach ($query->rows as $q) {
 | 
						|
         if(isset($data[$q['ts']])) {
 | 
						|
            $data[$q['ts']] = $q['num'];
 | 
						|
         }
 | 
						|
      }
 | 
						|
 | 
						|
      return $data;
 | 
						|
   }
 | 
						|
 | 
						|
 | 
						|
   private function getRangeInSeconds($timespan) {
 | 
						|
      $range = 0;
 | 
						|
 | 
						|
      if($timespan == "daily") { return time() - 86400; }
 | 
						|
      if($timespan == "weekly") { return time() - 604800; }
 | 
						|
 | 
						|
      return time() - 2592000;
 | 
						|
   }
 | 
						|
 | 
						|
 | 
						|
}
 |