<?php
//お約束の呪文/////////////////////////////////
//ログインチェック、設定ファイル読み込み、Smarty Viewの生成を行う
require_once("../../../../../app_path.php");
require_once(APP_PATH . '/BSMAdminController.php');
$bsmactlr = new BSMAdminController();
///////////////////////////////////////////////
//コントローラ部分
//好きに書いてよし！

//Modelクラスを読み込み
//DBからのデータ読み込み、書き込み、大半の処理はこのModelクラスに書いてください。
require_once("../../class/CLfrmadd.php");

class frmaddAct extends CLfrmadd
{
	function frmaddAct(&$bsmactlr)
	{
		$this->__construct($bsmactlr);
	}

	function __construct(&$bsmactlr)
	{
		CLfrmadd::__construct();
		$this->bsmactlr = $bsmactlr;

		//管理権限によるメニュー表示制御
		$this->setAuth($this->bsmactlr->view);
	}

	function action()
	{
		$tpl_file = "index.tpl";

		//フォームジェネレータの利用権限のチェック
		if( $_SESSION["form_generator_kanri"] == 0 || $_SESSION["form_generator_kanri"] == null){
			header('location:../index.php');
			exit();
		}

		//Form設定
		$this->setElements();
		//エラーチェック
		$this->setRules();
		//ボタン
		$this->setButtons();

		$req = $_REQUEST['buttons'];
		//「一覧に戻る」ボタンクリック時
		if (isset($req['BTNList']) && $req['BTNList']!=null) {
				header('location:../frmlist/index.php');
				exit();
		//「次に進む」ボタンクリック時
		} elseif (isset($req['BTNnext']) && $req['BTNnext'] != null) {
			if($_SESSION["frmAddMode"]!=0){
				die("不正なページ遷移の為処理を停止しました。管理トップよりやり直してください。");
			}
			
			//入力したメールアドレスが複数の場合は、「,」で切る
			$frm_mail_addr_tmp  = $_REQUEST['frm_mail_address'];
			$mail_address		= split(',', $frm_mail_addr_tmp);
			$record["frm_name"] = $_REQUEST['frm_name'];
			//メールアドレスがエラー：0；
			//メールアドレスが正しい：１；
			$frozen_flag = 1;
			if ($this->_form->validate()) {
				//メールアドレスが複数の場合
				if (is_array($mail_address)) {
					foreach ($mail_address as $val) {
						//入力したメールアドレスの正確性をチェックする
						if (!preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/", $val)) {
							$this->_form->setElementError("frm_mail_address", "・「受付先メールアドレス」を正しく入力してください");
							$frozen_flag = 0;
							break;
						}
					}
				//メールアドレスが単数の場合
				} else {
					if (!preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/", $val)) {
						$this->_form->setElementError("frm_mail_address", "・「受付先メールアドレス」を正しく入力してください");
						$frozen_flag = 0;
					}
				}
			} else {
				$frozen_flag = 0;
			}
			//メールアドレスが正しい場合、画面を凍結する
			if ($frozen_flag) {
				$this->_form->freeze();
				$this->setButtons($this->_form->isFrozen());
				$_SESSION["frmAddMode"]=1;
			}

		//「保存」ボタンクリック時
		} else if (isset($req['BTNsave']) && $req['BTNsave'] != null) {
			if($_SESSION["frmAddMode"]!=1){
				die("不正なページ遷移の為処理を停止しました。管理トップよりやり直してください。");
			}
			if ($this->_form->validate()) {
				$post	= $this->_form->getSubmitValues();
				$record = array();

				foreach ($this->columns as $val) {
					$record[$val["column"]] = $post[$val["column"]];
				}

				$rtn = $this->doSave($record);
				if ($rtn == null) {
					$this->clrToken();
					unset($_SESSION["frmAddMode"]);
					header('location:../frmlist/index.php');
					exit;
				} else {
					$this->_form->setElementError("", $rtn);
				}
			}
		//削除ボタンクリック時
		} else if (isset($req['BTNdelete']) && $req['BTNdelete'] != null) {
			$post = $this->_form->getSubmitValues();
			$hist_count = $this->getHistCount($post["frm_id"]);
			if ($hist_count == 0) {
				$rtn  = $this->delete($post);
				if ($rtn == null) {
					header('location:../frmlist/index.php');
					exit;
				} else {
					$this->_form->setElementError("", $rtn);
				}
			} else {
				$this->_form->setElementError("", "・お問い合わせが存在するので削除できません");
			}
		} else {
			//何もクリックされていない場合は情報取得
			//DBデータ取得
			$record = $this->getData($_REQUEST["frm_id"]);
			if(empty($record)){
				$record = array(
					'frm_order' => 0
				);
			}
			if(!isset($req['BTNback']) || $req['BTNback'] == null){
				$record['token'] = $this->getToken();
			}
			$this->_form->setDefaults($record);
			$_SESSION["frmAddMode"]=0;
		}

		//登録エラー時
		if (!empty($this->_form->_errors)) {
			$this->bsmactlr->view->assign('ERROR', $this->_form->_errors);
			foreach ($this->_form->_errors as $key => $val) {
				$this->_form->updateElementAttr($key, array("class" => "err"));
			}
		}

		if ($_REQUEST['frm_defaultflg'] == 1) {
			$this->_form->freeze();
			$this->setButtons($this->_form->isFrozen());
		}

		$delBtnflg = ($this->getHistCount($_REQUEST["frm_id"]) > 0 ? false : true);
		$this->bsmactlr->view->assign('delBtnflg', $delBtnflg);

		$renderer = new HTML_QuickForm_Renderer_ArraySmarty($this->bsmactlr->view);
		$this->_form->accept($renderer);
		$this->bsmactlr->view->assign('form', $renderer->toArray());

		if ($this->_form->isFrozen()) {
			$tpl_file = "prev.tpl";
		} else {
			$tpl_file = "index.tpl";
		}

		$this->bsmactlr->setHeadhtml('<link href="../css/imported.css" rel="stylesheet" type="text/css" media="all">');
		$this->bsmactlr->DisplayPage($this->bsmactlr->setTpl("/extMdlFormGnrtr/admin/frmadd/".$tpl_file));
	}
}

$frm = new frmaddAct($bsmactlr);
$frm->action();

?>