<?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');
/*
--左テキスト右画像(bTxtImg)用 の詳細データ格納テーブル（公開情報）
DROP TABLE IF EXISTS unit_btxtimg CASCADE;
CREATE TABLE unit_btxtimg (
	pageu_code		integer,			--ユニット配列順序における登録番号
	btxig_img		text,				--ファイル名（code-1-YmdHis）.拡張子
	btxig_alt		text,				--ALT
	btxig_cap		text,				--キャプション
	btxig_clc_flg	smallint default 0,	--クリック時の動作　0：何もしない　1：拡大（HTML）2：拡大（Ajax）　3：リンク
	btxig_jmp_url	text,				--リンク先URL
	btxig_jmp_flg	smallint default 1,	--リンク方法　1：別ウインドウ　2：同一ウインドウ　3：親ウインドウ
	btxig_txt		text,				--（左）テキスト
	bg_color		smallint default 0,	--背景色　0：なし　1：あり
	bdr_type		smallint default 0,	--枠線　0：なし　1：実線　2：点線
	btm_padding		smallint default 2,	--下方スペース　0:なし　1：狭　2：標準　3：広
	primary key (pageu_code)
);

--左テキスト右画像(bTxtImg)用 の詳細データ格納テーブル（下書き情報）
DROP TABLE IF EXISTS unit_btxtimg_tmp CASCADE;
CREATE TABLE unit_btxtimg_tmp (
	pageu_code		integer,			--ユニット配列順序における登録番号
	btxig_img		text,				--ファイル名（code-1-YmdHis）.拡張子
	btxig_alt		text,				--ALT
	btxig_cap		text,				--キャプション
	btxig_clc_flg	smallint default 0,	--クリック時の動作　0：何もしない　1：拡大（HTML）2：拡大（Ajax）　3：リンク
	btxig_jmp_url	text,				--リンク先URL
	btxig_jmp_flg	smallint default 1,	--リンク方法　1：別ウインドウ　2：同一ウインドウ　3：親ウインドウ
	btxig_txt		text,				--（左）テキスト
	bg_color		smallint default 0,	--背景色　0：なし　1：あり
	bdr_type		smallint default 0,	--枠線　0：なし　1：実線　2：点線
	btm_padding		smallint default 2,	--下方スペース　0:なし　1：狭　2：標準　3：広
	primary key (pageu_code)
);
 */
class bTxtImg extends unitCommon
{	
	//------ ユニット毎に必ず設定しなくてはならない変数 -------//
	var $_table = "unit_btxtimg";			//公開用テーブル名
	var $_tmptable = "unit_btxtimg_tmp";	//下書き用テーブル名
	var $columns = array(
					array("column"=>"pageu_code","conv"=>"n","tags"=>false),	//
					array("column"=>"btxig_img","conv"=>"a","tags"=>false),		//ファイル名
					array("column"=>"btxig_alt","conv"=>"KV","tags"=>false),	//ALT
					array("column"=>"btxig_cap","conv"=>"KV","tags"=>false),	//キャプション
					array("column"=>"btxig_clc_flg","conv"=>"n","tags"=>false),	//クリック時の動作
					array("column"=>"btxig_jmp_url","conv"=>"a","tags"=>false),	//リンク先URL
					array("column"=>"btxig_jmp_flg","conv"=>"n","tags"=>false),	//リンク方法
					array("column"=>"btxig_txt","conv"=>"KV","tags"=>true),		//WYSIWYG
					array("column"=>"bg_color","conv"=>"n","tags"=>false),		//背景色
					array("column"=>"bdr_type","conv"=>"n","tags"=>false),		//枠線
					array("column"=>"btm_padding","conv"=>"n","tags"=>false)	//下方スペース
					);
	var $jflg = array(1=>" target=\"_blank\"", 2=>"", 3=>" target=\"_top\"");
	var $_data = array();
	var $_path00 = "";
	var $_path0  = "";
	var $_path   = "";
	var $_path1  = "";
		
	function bTxtImg()
	{
		$this->__construct();
	}
	
	function __construct()
	{
		unitCommon::__construct();
	}
	//-----------------
	
	//出力データセット処理（必須）
	function setDisplayData() {
		$this->_data = $this->getDetail();
		if ($this->_data) {
			//画像パス
			$this->_data['path'] = UNITS_IMG_PATH.$this->_data['btxig_img'];
			
			//aタグ
			$this->_data['a1'] = '';
			$this->_data['a2'] = '';
			if ($this->_data['btxig_clc_flg']!=0) {
				switch ($this->_data['btxig_clc_flg']) {
					case 1:
						list($wth, $hgt, $type, $attr) = getimagesize(BASE_PATH.UNITS_IMG_PATH.$this->_data['btxig_img']);
						$this->_data['a1'] = "<a href=\"javascript:void(0);\" onClick=\"window.open('".$this->_current_topurl.$this->_data['path']."', null, 'width=".$wth.",height=".$hgt."');\">";
						break;
					case 2:
						$this->_data['a1'] = "<a href=\"".$this->_current_topurl.$this->_data['path']."\" rel=\"lightbox[ligthbox]\"".$this->jflg[$this->_data['btxig_jmp_flg']].">";
						break;
					case 3:
						$this->_data['a1'] = "<a href=\"".$this->_data['btxig_jmp_url']."\"".$this->jflg[$this->_data['btxig_jmp_flg']].">";
						break;
					default:	
				}
				$this->_data['a2'] = '</a>';
			}
		}
		return $this->_data;
	}
	
	/*
	 * DBより保存データ取得
	 * 改変可能
	 */
	function getDetail() {
		$rtn =  null;
		$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);
			if($result){
				$rtn = $result->fetchRow(DB_FETCHMODE_ASSOC);
			}
		}
		return $rtn;
	}
	
	
	function setDefault()
	{
		$this->_form->setDefaults(array('btxig_clc_flg'=>0));
		$data = $this->getDetail();
		$this->_form->setDefaults($data);
	}
	
	//フォームエレメントの作成
	function setElements()
	{
		$this->_form->addElement('hidden','pageu_code', $this->_pageu_code,array("id"=>"pageu_code")); //ページコード
		$this->_form->addElement('hidden','btxig_img', null,array("id"=>"btxig_img"));
		$this->_form->addElement('file', 'picture', '');//画像アップ用ボタン
		$this->_form->addElement('text','btxig_alt', null, array('id'=>'btxig_alt','size'=>40,'maxlength' => 200));
		$this->_form->addElement('text','btxig_cap', null, array('id'=>'btxig_cap','size'=>40,'maxlength' => 200));
		$tmp = array();
		$tmp[] = $this->_form->createElement('radio', null, null, 'なし', 0);
		$tmp[] = $this->_form->createElement('radio', null, null, '拡大表示', 1);
		$tmp[] = $this->_form->createElement('radio', null, null, '拡大表示（同ウィンドウ内）', 2);
		$tmp[] = $this->_form->createElement('radio', null, null, 'リンク', 3);
		$this->_form->addGroup($tmp, 'btxig_clc_flg', array('id'=>'btxig_clc_flg'));
		$this->_form->addElement('text','btxig_jmp_url', null, array('id'=>'btxig_jmp_url','size'=>40,'maxlength' => 200,'style'=>'ime-mode:disabled'));
		$sel01 =& $this->_form->addElement('select','btxig_jmp_flg', array('id'=>'btxig_jmp_flg'), null);
		$sel01->addOption('新しいウィンドウ', 1);
		$sel01->addOption('同じウィンドウ', 2);
		$this->_form->addElement('textarea','btxig_txt', null, array('id'=>'btxig_txt','rows'=>10));
		//表示中の画像サイズ
		$imgs_str = isset($_REQUEST["imgs"]) ? $_REQUEST["imgs"] : null;
		$this->_form->addElement('hidden','imgs', $imgs_str, array("id"=>"imgs"));
	}
	
	//フォーム入力エラーチェックの設定
	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);
		$obj = $this->_form->getElement("btxig_img");
		if (!$obj->getValue()) {
			$this->_form->addRule('picture','・画像ファイルを選択してください。','uploadedfile',null,'server');
		} else {
			$this->_view->assign('image', BINGOTOPURL.UNITS_IMG_PATH.$obj->getValue());
		}
		$this->_form->addRule('picture',"・画像ファイルサイズが大きすぎます。<br />アップロード可能なファイルサイズは".MAX_FILE_SIZE/(1000*1000)."Mbyte未満となっております。",'maxfilesize',MAX_FILE_SIZE,null,'server');
		$this->_form->addRule('picture','・アップロードできるファイル形式は「JPEG, GIF, PNG」となっております。','mimetype',array("image/pjpeg","image/jpeg","image/gif","image/x-png","image/png"));
		//URL（入力がある場合のみチェック）
		$this->_form->registerRule('check_url', 'callback', 'check_url'); 
		//リンク指定の場合URLは必須
		$obj2 = $this->_form->getElement("btxig_clc_flg");
		if ($obj2->getValue()==3) {
			$this->_form->addRule( 'btxig_jmp_url', '・URLが不正です', 'check_url',null,'server');
			$this->_form->addRule('btxig_jmp_url','・リンク先URLを入力してください。','required',null,$this->erchk);
		}
		$this->_form->addRule('btxig_txt','・テキストを入力してください。','required',null,$this->erchk);
	}
	
	//データ下書き保存処理
	function doSave($post)
	{
		//あらかじめ画像処理
		$result = null;
		$bimg = '';
		//既存データがあるか確認（画像削除用にも使用）
		$old_data = $this->getDetail();
		
		//画像ファイルがアップロードされいてる場合の処理
		if (is_uploaded_file($_FILES['picture']["tmp_name"])) {
			//画像ファイル名
			$bimg = $this->_pageu_code.'-1-'.date("YmdHis");

			//画像ファイル保存用ディレクトリ
			$path = BASE_PATH.UNITS_IMG_PATH;
			//がなければ作成
			if (!is_dir($path)) {
				if (!mkdir($path, 0777)) {
					return "・保存先ディレクトリがありません";
				}
			}
			
			//画像ファイル保存
			$img = $this->_form->getElement('picture');
			$bimg = commonFile::uploadImage($img, $path, $bimg);
			if (!$bimg) {
				return "・画像ファイルの保存に失敗しました";
			}
			/*if (is_file($path.'/'.$old_data['btxig_img'])) {
				//旧画像を削除
				unlink($path.'/'.$old_data['btxig_img']);
			}*/
			
			//画像ファイル保存（リサイズ）
			//if (!commonFile::ImgResize($path.'/'.$bimg, $path1.'/'.$bimg, $_SESSION['USERAREAWIDTH'])) {
			//	return "・画像ファイルの保存に失敗しました";
			//}
		}
				
		$record = null;
		foreach($this->columns as $val) {
			if($post[$val["column"]]!=null){
				$record[$val["column"]] = $post[$val["column"]];
			} else {
				$record[$val["column"]] = null;
			}
		}
		if ($bimg) {
			//ファイル名も保存
			$record["btxig_img"] = $bimg;
		}
		//URL指定のない場合は保存しない
		if ($record["btxig_clc_flg"]!=3) {
			$record["btxig_jmp_url"]='';
			$record["btxig_jmp_flg"]=1;
		}
		
		$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;
	}
}
?>