<?php
/*
	Copyright(c) 2010 Shift Tech Inc. All Rights Reserved.
 	http://www.shift-tech.jp/

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

class sitebaseDB extends Model
{
	//DBカラム名と変換ルールの設定
	//KVa => 半カナを全カナ,濁点つきの文字を１文字に変換する (K、H と共に利用する）,全角英数字を半角英数字に変換する
	//KVC => 半カナを全カナ,濁点つきの文字を１文字に変換する (K、H と共に利用する）,全角ひらがなを全角カタカナに変換する
	//n   => 全角数字を半角数字に変換する
	var $columns = array(
							array("column"=>"sbase_code","conv"=>"n","tags"=>false),				//サイトコード
							array("column"=>"sbase_name","conv"=>"KVa","tags"=>false),				//サイト名
							array("column"=>"sbase_url","conv"=>"KVa","tags"=>false),				//サイトURL
							array("column"=>"sbase_sslurl","conv"=>"KVa","tags"=>false),			//サイト セキュアURL
							array("column"=>"sbase_adminemail","conv"=>"KVa","tags"=>false),		//管理者メールアドレス
							array("column"=>"sbase_keywords","conv"=>"KVa","tags"=>false),			//サイト共通Meta用Keywords
							array("column"=>"sbase_description","conv"=>"KVa","tags"=>false),		//サイト共通Meta用description
							array("column"=>"sbase_analyticstags","conv"=>"KVa","tags"=>true),		//アクセス解析用タグ
							array("column"=>"sbase_urltype","conv"=>"n","tags"=>false),				//URLタイプ 0:mod_rewrite利用しない 1:する
							array("column"=>"sbase_editor","conv"=>"n","tags"=>false),				//wysiwygエディタ
							array("column"=>"sbase_cache","conv"=>"n","tags"=>false),				//キャッシュ機能 0:利用しない 1:する
							);
	var $_form = null;
	var $erchk = 'server';//quickformエラーチェックのフラグ'client'or'server;
	var $db=null;

	/**
	 * コンストラクタ php4対応・・・
	 */
	function sitebaseDB()
	{
		$this->__construct();
	}
	function __construct()
	{
		Model::__construct();
		$this->db = new DataBase();
	}

	//フォームエレメントの作成
	function setElements()
	{
		$this->_form->_submitValues = $this->rtrimSlash($this->_form->_submitValues); //ルールに従った値変換、タグの除去
		$this->_form->addElement('hidden','token', null);
		$this->_form->addElement('hidden','sbase_code', null);
		$this->_form->addElement('text','sbase_name', null, array('id'=>'sbase_name','size'=>40,'maxlength' => 40));
		$this->_form->addElement('text','sbase_url', null, array('id'=>'sbase_url','size'=>40,'maxlength' => 80,'style'=>'ime-mode:disabled'));
		$this->_form->addElement('text','sbase_sslurl', null, array('id'=>'sbase_sslurl','size'=>40,'maxlength' => 80,'style'=>'ime-mode:disabled'));
		$this->_form->addElement('text','sbase_adminemail', null, array('id'=>'sbase_adminemail','size'=>40,'maxlength' => 40,'style'=>'ime-mode:disabled'));
		$this->_form->addElement('text','sbase_keywords', null, array('id'=>'sbase_keywords','size'=>50,'maxlength' => 100));
		$this->_form->addElement('text','sbase_description', null, array('id'=>'sbase_description','size'=>100,'maxlength' => 200));
		$this->_form->addElement('textarea','sbase_analyticstags', null, array('id'=>'sbase_analyticstags','cols'=>60,'rows'=>4));
		$item=array();
		$item[]=&HTML_QuickForm::createElement('radio', null, null, '利用する', 1);
		$item[]=&HTML_QuickForm::createElement('radio', null, null, '利用しない', 0);
		$this->_form->addGroup($item,'sbase_urltype',null,null);
		$item=array();
		$item[]=&HTML_QuickForm::createElement('radio', null, null, '利用する', 1);
		$item[]=&HTML_QuickForm::createElement('radio', null, null, '利用しない', 0);
		$this->_form->addGroup($item,'sbase_cache',null,null);
		global $unit_editor_type;
		$this->_form->addElement('select','sbase_editor', null,$unit_editor_type);
	}

	//フォーム入力エラーチェックの設定
	function setRules()
	{
	/*ルール*/
		$this->_form->applyFilter('__ALL__','trim');
		$this->_form->registerRule('check_url', 'callback', 'check_url');
		$this->_form->_submitValues = DataBase::ConvColumnVals($this->_form->_submitValues,$this->columns); //ルールに従った値変換、タグの除去

		$this->_form->setJsWarnings('下記の項目が不正です。','');

		$this->_form->addRule('sbase_code','・「サイトコード」が不明です','required',null,$this->erchk);
		$this->_form->addRule('sbase_name','・「サイト名」を入力してください','required',null,$this->erchk);
		$this->_form->addRule('sbase_name','・「サイト名」は全角40文字以内です','maxlength',120,$this->erchk);
		$this->_form->addRule('sbase_url','・「サイトURL」を入力してください','required',null,$this->erchk);
		$this->_form->addRule('sbase_url', '・「サイトURL」が不正です', 'check_url',null,$this->erchk);
		$this->_form->addRule('sbase_url','・「サイトURL」は半角英数80文字以内です','maxlength',80,$this->erchk);
		$this->_form->addRule('sbase_sslurl','・「セキュアサイト用URL」を入力してください','required',null,$this->erchk);
		$this->_form->addRule('sbase_sslurl', '・「セキュアサイト用URL」が不正です', 'check_url',null,$this->erchk);
		$this->_form->addRule('sbase_sslurl','・「セキュアサイト用URL」は半角英数80文字以内です','maxlength',80,$this->erchk);
		$this->_form->addRule('sbase_adminemail','・「管理者メールアドレス」を入力してください','required',null,$this->erchk);
		$this->_form->addRule('sbase_adminemail','・「管理者メールアドレス」は半角英数40文字以内です','maxlength',40,$this->erchk);
		$this->_form->addRule('sbase_adminemail', '・「管理者メールアドレス」が不正です', 'email',null,$this->erchk);

		$this->_form->addRule('sbase_keywords','・「サイト共通検索エンジン用サイトキーワード」は全角50(半角100)文字以内です','maxlength',150,$this->erchk);
		$this->_form->addRule('sbase_description','・「サイト共通検索エンジン用サイト説明文」は全角100(半角200)文字以内です','maxlength',300,$this->erchk);
		//$this->_form->addRule('sbase_analyticstags','・「アクセス解析用タグ」は半角英数400文字以内です','maxlength',400,$this->erchk);
		$this->_form->registerRule('check_token', 'callback','check_token');
		$this->_form->addRule('token','・不正なページ遷移の為処理を停止しました。管理トップよりやり直してください','check_token',null,$this->erchk);
		$this->_form->addRule('token','・不正なページ遷移の為処理を停止しました。管理トップよりやり直してください','required',null,$this->erchk);
	}

	function rtrimSlash($post) {
		if(is_array($post)) {
			foreach($post as $key=>$val){
				if($key=="sbase_sslurl"||$key=="sbase_url"){
					$post[$key] = rtrim($val, '/');//最後のスラッシュを取り除く
				}
			}
		}
		return $post;
	}

	//ボタン作成
	function setButtons($frozen = false) {
		$buttons = array();
		if($frozen) {
			$buttons[] = $this->_form->createElement('submit','BTNback',' 編集に戻る ',array('id'=>'BTNback','class'=>'bBtnBack'));
			$buttons[] = $this->_form->createElement('submit','BTNsave',' 保存 ',array('id'=>'BTNsave','class'=>'bBtnSave'));
		} else {
			$buttons[] = $this->_form->createElement('submit','BTNnext',' 次へ進む ',array('id'=>'BTNnext','class'=>'bBtnNext'));
		}
		$this->_form->addGroup($buttons,"buttons", null, '&nbsp;&nbsp;');
	}

	//情報取得
	function getData()
	{
		$result = $this->db->query("select * from tbl_sitebase");
		if($result != null) {
			//データ取得
			return $result->fetchRow(DB_FETCHMODE_ASSOC);
		}
		return null;
	}

	//データ保存
	function doSave($post)
	{
		foreach($this->columns as $val) {
					if($val["column"]=="sbase_sslurl"||$val["column"]=="sbase_url"){
						$post[$val["column"]] = rtrim($post[$val["column"]], '/');//最後のスラッシュを取り除く
					}
					$records[$val["column"]] = $post[$val["column"]];
		}
		if(isset($records["sbase_code"]) && is_numeric($records["sbase_code"])) {
			//update
			return $this->db->update("tbl_sitebase", $records, $where = "sbase_code=".$records["sbase_code"]);
		} else {
			//insert
			$records["sbase_code"] = $this->db->getKey("tbl_sitebase_sbase_code");//登録ID
			return $this->db->insert("tbl_sitebase", $records);
		}
	}

    function initSite() {
        $basedata = $this->getData();
        if(is_array($basedata)) {
        	define('SITENAME',$basedata["sbase_name"]);
        	define('WWW',$basedata["sbase_url"]);
        	define('WWW_SSL',$basedata["sbase_sslurl"]);
			define('ADMIN_MAIL',$basedata["sbase_adminemail"]);
			define('METAKEY',$basedata["sbase_keywords"]);
			define('METADESC',$basedata["sbase_description"]);
			define('ANALYTICS',$basedata["sbase_analyticstags"]);
			define('URLTYPE',$basedata["sbase_urltype"]);
			define('UNITSCACHE',$basedata["sbase_cache"]);
			define('SEDITOR',$basedata["sbase_editor"]);
        }
    }

}
?>