mirror of
				https://bitbucket.org/jsuto/piler.git
				synced 2025-11-04 05:12:27 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			125 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			125 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
class ModelAuditAudit extends Model {
 | 
						|
 | 
						|
   public function search_audit($data = array()) {
 | 
						|
      $where = '';
 | 
						|
      $arr = $results = array();
 | 
						|
      $from = 0;
 | 
						|
      $sort = "ts";
 | 
						|
      $order = "DESC";
 | 
						|
      $sortorder = "ORDER BY ts DESC";
 | 
						|
      $date1 = $date2 = 0;
 | 
						|
      $q = '';
 | 
						|
 | 
						|
 | 
						|
      if($data['sort'] == "user") { $sort = "email"; }
 | 
						|
      if($data['sort'] == "ipaddr") { $sort = "ipaddr"; }
 | 
						|
      if($data['sort'] == "ref") { $sort = "meta_id"; }
 | 
						|
      if($data['sort'] == "action") { $sort = "action"; }
 | 
						|
      if($data['sort'] == "description") { $sort = "description"; }
 | 
						|
 | 
						|
      if($data['order'] == 1) { $order = "ASC"; }
 | 
						|
 | 
						|
      $sortorder = "ORDER BY `$sort` $order";
 | 
						|
 | 
						|
 | 
						|
      if(isset($data['action']) && $data['action'] != ACTION_ALL) {
 | 
						|
         $where .= " AND action=?";
 | 
						|
         array_push($arr, $data['action']);
 | 
						|
      }
 | 
						|
 | 
						|
      if(isset($data['ipaddr'])) {
 | 
						|
         $where .= " AND ipaddr IN (" . $this->append_search_criteria($data['ipaddr'], $arr) . ")";
 | 
						|
      }
 | 
						|
 | 
						|
      if(isset($data['user'])) {
 | 
						|
         $where .= " AND email IN (" . $this->append_search_criteria($data['user'], $arr) . ")";
 | 
						|
      }
 | 
						|
 | 
						|
      if(isset($data['ref'])) {
 | 
						|
         $where .= " AND ref IN (" . $this->append_search_criteria($data['ref'], $arr) . ")";
 | 
						|
      }
 | 
						|
 | 
						|
      if(isset($data['date1'])) { $date1 = $data['date1']; }
 | 
						|
      if(isset($data['date2'])) { $date2 = $data['date2']; }
 | 
						|
 | 
						|
      $date = fixup_date_condition('ts', $date1, $date2);
 | 
						|
 | 
						|
 | 
						|
      if($date) { $where .= " AND $date "; }
 | 
						|
 | 
						|
      if($where) {
 | 
						|
         $where = " WHERE " . substr($where, 5, strlen($where));
 | 
						|
      }
 | 
						|
 | 
						|
      $from = $data['page_len'] * $data['page'];
 | 
						|
 | 
						|
 | 
						|
      $query = $this->db->query("SELECT COUNT(*) AS count FROM " . TABLE_AUDIT . " $where", $arr);
 | 
						|
 | 
						|
      $n = $query->row['count'];
 | 
						|
 | 
						|
      if($n > 0) {
 | 
						|
         if($n > MAX_AUDIT_HITS) { $n = MAX_AUDIT_HITS; }
 | 
						|
 | 
						|
         $query = $this->db->query("SELECT * FROM " . TABLE_AUDIT . " $where $sortorder LIMIT $from," . $data['page_len'], $arr);
 | 
						|
 | 
						|
 
 | 
						|
         if(isset($query->rows)) {
 | 
						|
 | 
						|
            foreach($query->rows as $a) {
 | 
						|
               if($a['meta_id'] > 0) { $q .= "," . $a['meta_id']; }
 | 
						|
            }
 | 
						|
 | 
						|
            if($q) {
 | 
						|
               $q = substr($q, 1, strlen($q));
 | 
						|
               $Q = $this->db->query("SELECT id, piler_id FROM " . TABLE_META . " WHERE id IN($q)");
 | 
						|
 | 
						|
               foreach($Q->rows as $a) {
 | 
						|
                  $m[$a['id']] = $a['piler_id'];
 | 
						|
               }
 | 
						|
            }
 | 
						|
 | 
						|
            foreach($query->rows as $a) {
 | 
						|
               $results[] = array(
 | 
						|
                                    'id' => $a['meta_id'],
 | 
						|
                                    'piler_id' => isset($m[$a['meta_id']]) ? $m[$a['meta_id']] : '',
 | 
						|
                                    'action' => $a['action'],
 | 
						|
                                    'email' => $a['email'],
 | 
						|
                                    'date' => date(AUDIT_DATE_FORMAT, $a['ts']),
 | 
						|
                                    'ipaddr' => $a['ipaddr'],
 | 
						|
                                    'description' => $a['description'],
 | 
						|
                                    'shortdescription' => make_short_string($a['description'], MAX_CGI_FROM_SUBJ_LEN)
 | 
						|
                                  );
 | 
						|
 | 
						|
            }
 | 
						|
         }
 | 
						|
      }
 | 
						|
 | 
						|
      return array($n, $results);
 | 
						|
   }
 | 
						|
 | 
						|
 | 
						|
   private function append_search_criteria($s = '', &$arr = array()) {
 | 
						|
      $q = "";
 | 
						|
 | 
						|
      $a = explode("*", $s);
 | 
						|
 | 
						|
      for($i=0; $i<count($a); $i++) {
 | 
						|
         if($a[$i]) {
 | 
						|
            array_push($arr, $a[$i]);
 | 
						|
            $q .= ",?";
 | 
						|
         }
 | 
						|
      }
 | 
						|
 | 
						|
      $q = substr($q, 1, strlen($q));
 | 
						|
 | 
						|
      return $q;
 | 
						|
   }
 | 
						|
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
?>
 |