Blame view

mobile/source/inc/class.cache.php 2.68 KB
a1684257   Administrator   first commit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
  <?php
  /**
  * @author:  Bunzia Alexander <nifus@mail.ru> <http://www.weblancer.net/users/nifus/>
  * @copyright: Copyright (c) 2010, Bunzia Alexander
  * @version: 1.0
  * @license: http://www.gnu.org/copyleft/gpl.html GNU/GPL
  * @package: HiLo CMS
  */
  
  /**
  * Сохраняем сгенерированный HTML
  *
  */
  class cache{
  
  	private $name = false;  //  основной ключ фильтрации
  	private $parametrs = array(); //  дополнительные ключи фильтрации
  	
  	/**
  	* Проверяем название шаблона на соответствие формату и только потом создаём
  	*
  	* @var: str v Название шаблона страницы 
  	* @return: obj
  	*/
  	public function create($v){
  	  if ( !sys_is_page($v) ){
  	    sys_error(ERROR_500);
  	  }
  	  return new cache($v);
  	}
  	
  	private function __construct($name){
  		$this -> name = $name;
  	}
  	
  	
  	public function set_parametr($k,$v){
  		if ( empty($k) ){
  		  sys_error(ERROR_500);
  		}
  		$this -> parametrs[$k] = $v;
  		return TRUE;
  	}
  	
  	
  	public function save($data){
  	global $MAIN_DB;
  	   
  	  $sub_key = serialize($this -> parametrs);
  	  $sql = "
  	    SELECT COUNT(*) FROM ".MAIN_CACHE_TBL."   
  	    WHERE  p_parametrs = '".sys_in_sql($sub_key)."' AND p_name='{$this -> name}'";
  	  list($count) = $MAIN_DB -> fetch_array( $MAIN_DB -> query($sql) );
  	  if ( $count>0 ){
         $sql = "
          UPDATE ".MAIN_CACHE_TBL." 
          SET p_cache='".sys_in_sql($data)."' ,p_time_add='".MAIN_TIME."'
          
          WHERE p_parametrs = '".sys_in_sql($sub_key)."' AND p_name='{$this -> name}'";
      }else{
        $sql = "
          INSERT INTO ".MAIN_CACHE_TBL." 
          SET 
            p_cache='".sys_in_sql($data)."',
            p_parametrs = '".sys_in_sql($sub_key)."', 
            p_name='{$this -> name}',
            p_time_add='".MAIN_TIME."'";
      }
  	  $MAIN_DB -> query($sql);
  		return TRUE;
  	}
  	
  	public function load($time=0){
  	global $MAIN_DB;
  	    //  кэшировать данные запрещенно в настройках CMS
  	    
  	  if ( FALSE===MAIN_CACHE_MODE){
  	    return FALSE;
  	  }
  	  $sub_key = serialize($this -> parametrs);
  	  $sql_time = !empty($time) ? " AND p_time_add>".(MAIN_TIME-$time) : '';
  	  $sql = "
  	    SELECT p_cache FROM ".MAIN_CACHE_TBL."   
  	    WHERE  p_parametrs = '".sys_in_sql($sub_key)."' AND p_name='{$this -> name}' ".$sql_time ;
  	  $res = $MAIN_DB -> query($sql);
  	  if ( $MAIN_DB -> num_rows($res)==0 ){
  	    return FALSE;
  	  }
  	  list($p_cache) = $MAIN_DB -> fetch_array( $res);
  		return $p_cache;
  	}
  	
  	public function clear(){
  	global $MAIN_DB;
  	  $sql = "DELETE  FROM ".MAIN_CACHE_TBL."    WHERE  p_name='{$this -> name}'";
  	  $MAIN_DB -> query($sql);
  		return TRUE;
  	}
  }
  
  ?>