mirror of
				https://bitbucket.org/jsuto/piler.git
				synced 2025-10-31 05:42:27 +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;
 | |
|    }
 | |
| 
 | |
| 
 | |
| }
 |