<?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
*/
include_once(MAIN_SOURCE_PATH.'/inc/class.query.php');
include_once(MAIN_SOURCE_PATH.'/inc/class.objects.php');



class filedsSetMailTmpl
{
  //static $id = false; //  адрес 
  
  static function m_name($v){
		if ( empty($v) ){
		  throw new Exception( M_ADMIN_M_NAME_EMPTY );
		}
		return $v;
	}
	
	public function set_subject($v){
	  if ( empty($v) ){
		  throw new Exception( M_ADMIN_M_SUBJECT_EMPTY );
		}
		return $v;
	}
	
	public function set_body($v){
		if ( empty($v) ){
		  throw new Exception( M_ADMIN_M_BODY_EMPTY );
		}
		return $v;
	}
	
	public function set_from_name($v){
	  if ( empty($v) ){
	    throw new Exception( M_ADMIN_M_FROMNAME_EMPTY );
		}
		return $v;
	}
	
	public function set_content_type($v){
    if ( empty($v) ){
      throw new Exception( M_ADMIN_M_CONTENT_TYPE_EMPTY );
		}
	  if ( !in_array($v,mailTmpl::$formats) ){
	    throw new Exception( M_ADMIN_M_CONTENT_TYPE_FALSE );
		}
		return $v;
	}
	
	public function set_key($v){
    if ( empty($v) ){
      throw new Exception( M_ADMIN_M_KEY_EMPTY );
		}
	  if ( !mailTmpl::check_type($v) ){
	    throw new Exception( M_ADMIN_M_KEY_FALSE );
		}
		return $v;
	}
	
	
  /*
	static function p_type_content($v){
		if ( empty($v) ){
			return true;
		}
		
		$values = array('HTML','PHP','TMPL');
		if ( !in_array($v,$values) ){
		  throw new Exception( M_ADMIN_BLOCKS_FALSE_TYPE_CONTENT );
		}
		return $v;
	}

	
	*/


  
}


class filedsGetMailTmpl
{

  static $__var = array();  //  для хранения временных переменных
  
  
  static function type_list($v){
  		  //  список форматов
		$types = mailTmpl::$formats;
		$s = new select_box();
		$s -> selected_id($v);
		$s -> empty_record(false);
		foreach( $types as $t ){
		  $s -> set($t,$t);
		}
		return $s -> get();
  }
  static function from($v,$row){
		return (!empty($row['m_from_email']) ? ($v.'('.$row['m_from_email'].')') : $v);
	}


	static function lang_links($v){
    if ( false===MAIN_MULTILANG ){
      return false;
    }
    $langs = explode(',',MAIN_LANGS);
    $result = array();
    foreach( $langs as $l ){
      $q = new mailTmplQuery('q');
      $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 ( false===MAIN_MULTILANG ){
      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 mailTmplQuery extends query{

  var $fields_get = 'filedsGetMailTmpl';
	
	public function __construct($alias){

		$this -> set_table( MAIN_MAIL_TMPL_TBL );
		$this -> set_alias($alias);
	}
	
	/*public function include_tmpl($alias,$cols=''){
		$this -> include_table(MAIN_TMPL_TBL,$alias,'t_id',$cols );
		return true;
	}*/
	
	public function where_id($v){
		$v = intval($v);
		if ( empty($v) ){
			return false;
		}
		return $this -> set_where( $this -> alias.'.m_id',$v);
	}
	
  public function where_link($v){
    if ( false===MAIN_MULTILANG ){
      return $this -> where_id($v);
    }
		$v = intval($v);
		if ( empty($v) ){
			return false;
		}
		return $this -> set_where( $this -> alias.'.link_id',$v);
	}
	
	public function where_main_rows(){
		if ( false===MAIN_MULTILANG ){
      return false;
    }
		return $this -> set_anothe_where( $this -> alias.'.m_id='.$this -> alias.'.link_id');
	}
	

	
	
  public function where_lang($v){
    if ( false===MAIN_MULTILANG ){
      return false;
    }
    $langs = explode(',',MAIN_LANGS);
		if ( !in_array($v,$langs) ){
		  return false;
		}
		return $this -> set_where( $this -> alias.'.lang',$v);
	}
	
	
	public function orderby_id($v){
		return $this -> set_orderby( $this -> alias.'.m_id',$v);
	}


	
}


	//	класс для управления записями таблицы system_staticPages
class mailTmpl extends objects{

  public $table = "system_mail_tmpl";
  public $key = "m_id";
	public $fields = 'filedsSetMailTmpl';
	static $formats = 	array('text','html');
		
	public function id(){
		return $this -> info['m_id']; 
	}

	

	
		//	загрузка модуля по его id
	static function load_id($id){
		
		$m = new mailTmplQuery('m');
		if ( !$m -> where_id($id) ){
			return false;
		}
		$m -> get('*');
		if (  $m -> get_count_rows()==0 ){
			return FALSE;
		}
		return new mailTmpl($id,$m -> row());
	}
	
	
	
	static function create(){
		return new mailTmpl( 0, array('m_id'=>0));
	}
	

	
  static function check_type($v){
	  if ( preg_match('#[^a-z0-9_]#i',$v) ){
	    return false;
	  }
		return true;
	}	

	
}

?>
