* @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; } } ?>