<?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/>.
 */

require_once (LIB_PATH.'/common/unitCommon.php');
/*
--JavaScript用 の詳細データ格納テーブル（公開情報）
DROP TABLE IF EXISTS unit_bjava CASCADE;
CREATE TABLE unit_bjava (
	pageu_code			integer,				--ユニット配列順序における登録番号
	java_sc				text,					--Script
	java_height		integer default 300,
	btm_padding			smallint default 2,		--下方スペース　0:なし　1：狭　2：標準　3：広
	primary key (pageu_code)
);

--カテゴリ別情報リスト用 の詳細データ格納テーブル（下書き情報）
DROP TABLE IF EXISTS unit_bjava_tmp CASCADE;
CREATE TABLE unit_bjava_tmp (
	pageu_code			integer,				--ユニット配列順序における登録番号
	java_sc				text,					--Script
	java_height		integer default 300,
	btm_padding			smallint default 2,		--下方スペース　0:なし　1：狭　2：標準　3：広
	primary key (pageu_code)
);
 */
class bJava extends unitCommon
{
	//------ ユニット毎に必ず設定しなくてはならない変数 -------//
	var $_table = "unit_bjava";			//公開用テーブル名
	var $_tmptable = "unit_bjava_tmp";	//下書き用テーブル名
	var $columns = array(
					array("column"=>"pageu_code","conv"=>"n","tags"=>false),	//ユニット登録コード
					array("column"=>"java_sc","conv"=>"","tags"=>true),			//Script
					array("column"=>"java_height","conv"=>"n","tags"=>false), //v1.2にて追加
					array("column"=>"btm_padding","conv"=>"n","tags"=>false)		//下方スペース
					);
	function bJava()
	{
		$this->__construct();
	}

	function __construct()
	{
		unitCommon::__construct();
	}
	//-----------------

	//出力データセット処理（必須）
	function setDisplayData() {
		$data = $this->getDetail();
		if ($data) {
			if($this->_prev) {
				$data["prev"]=$this->_prev;
			}
		}
		return $data;
	}

	/*
	 * DBより保存データ取得
	 * 改変可能
	 */
	function getDetail() {
		$sql = "select * from ".$this->getTbl()." where pageu_code = ?";
		if(isset($this->_pageu_code)&&is_numeric($this->_pageu_code)) {
			$result = $this->db->prepare($sql,$this->_pageu_code);
			$rtn = $result->fetchRow(DB_FETCHMODE_ASSOC);
		}
		return $rtn;
	}


	function setDefault()
	{
		$data = $this->getDetail();
		if($data) {
			$this->_form->setDefaults($data);
		} else {
			$this->_form->setDefaults(array("java_height"=>"300"));
		}
	}

	//フォームエレメントの作成
	function setElements()
	{
		$this->_form->addElement('hidden','pageu_code', $this->_pageu_code,array("id"=>"pageu_code")); //ページコード
		//Script
		$this->_form->addElement('textarea','java_sc', null, array('id'=>'java_sc','rows'=>10,'cols'=>50));
		$this->_form->addElement('text','java_height', null, array('id'=>'bmap_height','size'=>20,'maxlength' => 20,'style'=>'ime-mode:disabled'));
	}

	//フォーム入力エラーチェックの設定
	function setRules()
	{
		$this->_form->applyFilter('__ALL__','trim');
		$this->_form->_submitValues = DataBase::ConvColumnVals($this->_form->_submitValues,$this->columns); //ルールに従った値変換、タグの除去
		$this->_form->setJsWarnings('下記の項目が不正です。','');
		$this->_form->addRule('pageu_code','・「ユニットコード」が不明です。コンテンツ管理よりやり直してください','required',null,$this->erchk);
		$this->_form->addRule('java_sc','・スクリプトを入力してください。','required',null,$this->erchk);
		
		$this->_form->addRule('java_height','・「表示エリア（高さ）」を入力してください','required',null,$this->erchk);
		$this->_form->addRule('java_height','・「表示エリア（高さ）」は半角数字で入力してください','numeric',null,$this->erchk);
		$this->_form->registerRule('NumericRange_valid', 'callback','NumericRange');
		$this->_form->addRule('java_height','・「表示エリア（高さ）」は50以上2000以内で入力してください','NumericRange_valid',array(50,2000),$this->erchk);
	}

	//データ下書き保存処理
	function doSave($post)
	{
		$record = null;
		foreach($this->columns as $val) {
			if($post[$val["column"]]!=null){
				$record[$val["column"]] = $post[$val["column"]];
			} else {
				$record[$val["column"]] = null;
			}
		}
		//既存データがあるか確認
		$old_data = $this->getDetail();
		$this->db->query('BEGIN');
		//保存処理開始
		if(is_array($old_data)&& count($old_data)>0) {
			//更新
			if(!$this->db->update($this->getTbl(),$record, "pageu_code=".$record["pageu_code"])) {
				$this->db->query('ROLLBACK');
				return "・データの保存に失敗しました";
			}
		} else { //新規
			if(!$this->db->insert($this->getTbl(),$record)) {
				$this->db->query('ROLLBACK');
				return "・データの保存に失敗しました";
			}
		}
		$this->db->query('COMMIT');
		return null;
	}
}
?>