set_table( MAIN_MAIL_TMPL_TBL ); $this -> set_alias($alias); } /*** * функции формирвования запроса * * */ public function where_id($v){ $v = intval($v); if ( empty($v) ){ return false; } return $this -> set_where( $this -> alias.'.m_id',$v); } public function orderby_id($v){ return $this -> set_orderby( $this -> alias.'.m_id',$v); } /*** * функции-обработчики алиасов при выборе из таблицы * * */ /** * Формирование получателя * */ protected function from($v,$row){ return (!empty($row['m_from_email']) ? ($v.'('.$row['m_from_email'].')') : $v); } } class mail_tmpl{ // отладка запросов public $debug = false; // массив в котором хранятся данные о текущей записе, __construct private $info = array(); // первичный ключ таблицы, __construct private $main_key = false; // массив изменённых данных о текущей записи private $set_info = array(); // последняя ошибка private $last_error=false; // форматы писем static $formats = array('text','html'); // вызвается только внутри класса // для создания объекта используются публичные статичные методы load_id / create private function __construct( $array=array() ){ $this -> info = $array; $this -> main_key = $array['m_id']; } /** * обновляем запись * */ public function update(){ global $MAIN_DB; if ( false===$this -> main_key ){ sys_error(ERROR_500,A_EMPTY_ID); } if ( false!==$this -> error() ){ return false; } if ( sizeof($this -> set_info)==0 ){ sys_error(ERROR_500,A_EMPTY_ARRAY); } $sql = array(); foreach( $this -> set_info as $k=>$v ){ $sql[]="`$k`='".sys_in_sql($v)."'"; } $sql = " UPDATE ".MAIN_MAIL_TMPL_TBL." SET ".implode(',',$sql)." WHERE m_id='".$this -> main_key."'"; if ( !empty($this -> debug) ){ die($sql); } $MAIN_DB -> query($sql); return $this -> main_key; } /** * добавление новой записи в таблицу system_tmpl * */ public function insert(){ global $MAIN_DB; if ( false!==$this -> error() ){ return false; } if ( sizeof($this -> set_info)==0 ){ sys_error(ERROR_500,A_EMPTY_ARRAY); } $sql = array(); foreach( $this -> set_info as $k=>$v ){ $sql[]="`$k`='".sys_in_sql($v)."'"; } $sql = "INSERT INTO ".MAIN_MAIL_TMPL_TBL." SET ".implode(',',$sql).""; if ( !empty($this -> debug) ){ die($sql); } $MAIN_DB -> query($sql); return $MAIN_DB -> insert_id(); } public function delete(){ global $MAIN_DB; $sql = "DELETE FROM ".MAIN_MAIL_TMPL_TBL." WHERE ".implode(',',$sql)." m_id='".$this -> main_key."'"; $MAIN_DB -> query($sql); return true; } public function get($k){ if ( isset($this -> info[$k]) ){ return $this -> info[$k]; } sys_error(ERROR_500, sprintf(A_NOT_VAR,$k) ); } public function set($k,$v){ if ( method_exists($this,'set_'.$k) ){ $f = 'set_'.$k; return $this -> $f($v); } $this -> set_info[$k] = $v; return true; } // отладка запросов insert/update public function set_debug($flag){ $this -> debug = $flag; } /** * SET - функции. Это уникальные обработчики для значений заносимых в базу данных. * **/ public function set_name($v){ if ( empty($v) ){ $this -> make_error(M_ADMIN_M_NAME_EMPTY); return false; } $this -> set_info['m_name']=$v; return true; } public function set_subject($v){ if ( empty($v) ){ $this -> make_error(M_ADMIN_M_SUBJECT_EMPTY); return false; } $this -> set_info['m_subject']=$v; return true; } public function set_body($v){ if ( empty($v) ){ $this -> make_error(M_ADMIN_M_BODY_EMPTY); return false; } $this -> set_info['m_body']=$v; return true; } public function set_from_name($v){ if ( empty($v) ){ $this -> make_error(M_ADMIN_M_FROMNAME_EMPTY); return false; } $this -> set_info['m_from_name']=$v; return true; } public function set_content_type($v){ if ( empty($v) ){ $this -> make_error(M_ADMIN_M_CONTENT_TYPE_EMPTY); return false; } if ( !in_array($v,mail_tmpl::$formats) ){ $this -> make_error(M_ADMIN_M_CONTENT_TYPE_FALSE); return false; } $this -> set_info['m_content_type']=$v; return true; } public function set_key($v){ if ( empty($v) ){ $this -> make_error(M_ADMIN_M_KEY_EMPTY); return false; } if ( !mail_tmpl::check_type($v) ){ $this -> make_error(M_ADMIN_M_KEY_FALSE); return false; } $this -> set_info['m_key']=$v; return true; } /** * GET - функции * * */ public function id(){ return $this -> info['m_id']; } /** * СТАТИЧНЫЕ ФУНКЦИИ * * */ /** * загрузка модуля по его id * */ static function load_id($id){ $m = new mail_tmpl_q('m'); if ( !$m -> where_id($id) ){ return false; } $m -> get('*'); if ( $m -> get_count_rows()==0 ){ return FALSE; } return new mail_tmpl($m -> row()); } static function create(){ return new mail_tmpl( array('m_id'=>0)); } static function check_type($v){ if ( preg_match('#[^a-z0-9_]#i',$v) ){ return false; } return true; } /** * Обработка ошибок * * */ private function make_error($msg){ if (false===$this -> last_error){ $this -> last_error = $msg; } } // возвращаем последнюю ошибку public function error(){ return $this -> last_error; } } ?>