* @copyright: Copyright (c) 2010, Bunzia Alexander * @version: 1.0 * @license: http://www.gnu.org/copyleft/gpl.html GNU/GPL * @package: HiLo CMS */ include_once(MAIN_SOURCE_PATH.'/inc/class.query.php'); include_once(MAIN_SOURCE_PATH.'/inc/class.objects.php'); include_once(MAIN_SOURCE_PATH.'/modules/admin/cache/config.php'); include_once(MAIN_SOURCE_PATH.'/modules/admin/inc/url.php'); include_once(MAIN_SOURCE_PATH.'/modules/admin/lang/'.MAIN_LANG.'/lang.php'); class filedsSetMeta { //static $id = false; // адрес новости static function p_name($v){ include_once(MAIN_SOURCE_PATH.'/modules/admin/inc/class.pages.php'); $p = pages::load_pname($v); if ( false===$p ){ throw new Exception('Ошибка: страницы "'.$v.'" не существует!'); } return $v; } /* static function n_alias($v,$id){ if ( empty($v) ){ throw new Exception('Ошибка: нужно заполнить поле "Адрес"!'); } if ( !sys_is_alias($v) ){ throw new Exception('Ошибка: адрес содержит запрещённые символы"!'); } if ( metas::is_exists($v,$id) ){ throw new Exception('Ошибка: материал с таким адресом уже существует"!'); } return $v; } static function desc($v){ if ( empty($v) ){ throw new Exception('Ошибка: нужно заполнить поле "Содержимое"!'); } return $v; } static function short_desc($v){ if ( empty($v) ){ throw new Exception('Ошибка: нужно заполнить поле "Содержимое"!'); } return sys_short_text($v); } static function images($v){ return str_replace('245x120_','',$v); } static function main_image($v){ $v = str_replace('245x120_','',$v); $v = explode('|',$v); if ( !empty($v[0]) ){ return $v[0]; } return false; } /*static function set_n_time_add($v){ if ( empty($v) ){ //throw new Exception('Ошибка: нужно заполнить поле "Содержимое"!'); return FALSE; } preg_match('#^([0-9]{2,2})\.([0-9]{2,2})\.([0-9]{4,4}) ([0-9]{1,2}):([0-9]{1,2})$#',$v,$res); $v = mktime($res[4],$res[5],0,$res[2],$res[1],$res[3]); return $v; }*/ } class filedsGetMeta { static $__var = array(); // для хранения временных переменных static function type_list($v){ $s = new select_box(); $s -> selected_id($v); $s -> empty_record(false); foreach( meta::$types as $k =>$v ){ $s -> set($k,$v); } return $s -> get(); } static function lang_links($v){ if ( !defined('MAIN_LANGS') ){ return false; } $langs = explode(',',MAIN_LANGS); $result = array(); foreach( $langs as $l ){ $q = new metaQuery('q'); //$q -> set_debug(1); $q -> where_link($v); $q -> where_lang($l); $q -> get('COUNT(*)'); list($count) = $q -> row(); $result[] = array('lang'=>$l,'exists'=> (( $count ) ? 1 : 0) ); } return $result; } static function lang_list($v){ if ( !defined('MAIN_LANGS') ){ return false; } $langs = explode(',',MAIN_LANGS); $s = new select_box(); $s -> selected_id($v); $s -> empty_record(false); foreach( $langs as $lng ) { $s -> set($lng,$lng); } return $s -> get(); } } class metaQuery extends query{ var $fields_get = 'filedsGetMeta'; /** * @var string $alias Алиас для исплользования в mysql запросе */ public function __construct($alias){ $this -> set_table(MAIN_META_TBL ); $this -> set_alias($alias); } /** * Подключаем таблицу категорий * * @var: string $alias Алиас для исплользования в mysql запросе * @var: string $cols нужные столбцы public function include_category($alias,$cols=false){ global $MAIN_DB; $this -> include_table( $MAIN_DB -> prefix("metas_category") ,$alias,'category_id',$cols ); }*/ public function where_id($v){ $v = intval($v); if ( empty($v) ){ return FALSE; } return $this -> set_where( $this -> alias.'.meta_id',$v); } public function where_func($v){ return $this -> set_where( $this -> alias.'.f_func',$v); } public function where_module($v){ if ( empty($v) ){ return false; } return $this -> set_where( $this -> alias.'.module',$v); } public function where_link($v){ $v = intval($v); if ( empty($v) ){ return false; } return $this -> set_where( $this -> alias.'.link_id',$v); } public function where_lang($v){ if ( !defined('MAIN_LANGS') ){ return false; } $langs = explode(',',MAIN_LANGS); if ( !in_array($v,$langs) ){ return false; } return $this -> set_where( $this -> alias.'.lang',$v); } public function where_main_rows(){ return $this -> set_anothe_where( $this -> alias.'.meta_id='.$this -> alias.'.link_id'); } public function orderby_id($v){ return $this -> set_orderby($this -> alias.'.meta_id',$v); } public function orderby_module($v){ return $this -> set_orderby($this -> alias.'.module',$v); } /** * Произвольная сортировка */ public function orderby_rand(){ return $this -> set_orderby('RAND()'); } } // end class metasQuery class meta extends objects{ public $table = "system_meta"; public $key = "meta_id"; public $fields = 'filedsSetMeta'; static $types = array('title' => 'Заголовок','desc' => 'Описание','keywords'=>'Ключевые слова'); //STATIC static function load_id($id){ $m = new metaQuery('m'); if ( !$m -> where_id($id) ){ return FALSE; } $m -> get('*'); if ( !$m -> get_count_rows() ){ return FALSE; } return new meta($id,$m -> row()); } static function create(){ //global $MAIN_DB; //$sql = "INSERT INTO ".$MAIN_DB -> prefix( self::$table)." (".self::$key.") VALUES(0)"; //$MAIN_DB -> query($sql); //$id = $MAIN_DB -> insert_id(); return new meta(0,array() ); } /* public function update(){ global $MAIN_DB; if ( sizeof($this -> set_info)==0 ){ sys_error(500,E_EMPTY_ARRAY); } $sql = array(); foreach( $this -> set_info as $k=>$v ){ $sql[]="`$k`='".sys_in_sql($v)."'"; } $sql = " UPDATE ".$MAIN_DB -> prefix($this -> table)." SET ".implode(',',$sql)." WHERE ".$this -> key."='".$this -> key_value."'"; if ( !empty($this -> debug) ){ throw new Exception($sql); } $MAIN_DB -> query($sql); //metas::search_index($this -> key_value); // формируем новую запись в таблицу поиска return $this -> key_value; }*/ /*public function insert(){ global $MAIN_DB; if ( sizeof($this -> set_info)==0 ){ sys_error(500,E_EMPTY_ARRAY); } $sql = array(); foreach( $this -> set_info as $k=>$v ){ $sql[]="`$k`='".sys_in_sql($v)."'"; } $sql = "INSERT INTO ".$MAIN_DB -> prefix($this -> table)." SET ".implode(',',$sql).""; if ( !empty($this -> debug) ){ throw new Exception($sql); } $MAIN_DB -> query($sql); $id = $MAIN_DB -> insert_id(); // metas::search_index($id); // формируем новую запись в таблицу поиска return $id; }*/ /* public function delete(){ global $MAIN_DB; $sql = "DELETE FROM ".$MAIN_DB -> prefix($this -> table)." WHERE ".$this -> key."='".$this -> key_value."'"; $MAIN_DB -> query($sql); //metas::build_rss();// обновляем rss return TRUE; }*/ public function cache(){ global $MAIN_DB; $p = new metaQuery('f'); $p -> orderby_module('DESC'); $p -> get('f.*',false); $rows = $p -> rows(); $cache = array(); foreach( $rows as $r ){ $cache[$r['module']].='HL::set_meta("'.$r['type'].'","'.addslashes($r['value']).'","'.$r['key'].'","'.$r['p_name'].'","'.$r['lang'].'");'."\n\r"; } foreach( $cache as $module=>$array ){ file_put_contents(MAIN_PATH.'/tmp/meta/'.$module.'.php',"" ); } return TRUE; } } // end class ?>