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

/**
 * ページ情報のDBアクセスクラス
 * @author 	yamamoto
 * @version
 */
require_once (LIB_PATH.'/common/unitDB.php');
class pageIdxDB extends Model
{
	var $_form = null;
	var $erchk = 'server';//quickformエラーチェックのフラグ'client'or'server;
	var $db=null;
	var $_pidx_code = null;
	//var $_listflg = false;
	
	//KVa => 半カナを全カナ,濁点つきの文字を１文字に変換する (K、H と共に利用する）,全角英数字を半角英数字に変換する
	//KVC => 半カナを全カナ,濁点つきの文字を１文字に変換する (K、H と共に利用する）,全角ひらがなを全角カタカナに変換する
	//n   => 全角数字を半角数字に変換する
/*
CREATE TABLE tbl_page_idx (
    pidx_code               serial,					--記事コード
	pidx_extmodule_code	integer,				--拡張モジュールコード
    pidx_sidx_code          integer,					--セクションコード
    pidx_active             smallint default 1,			--０：削除　１：有効
    pidx_view               smallint default 1,			-- -1:否認 ０：下書（承認前）１：承認中　２：承認済
    pidx_cat_code         	integer not null,			--カテゴリーコード
	pidx_ptype				smallint default 0,			--ページタイプ 0:通常 1:リストタイプのindex.phpページ 2:新規index.phpページ
	pidx_url				text,						--ページURL, nullの場合はindexとする
	pidx_directurl				text,						--一覧用ジャンプ先ＵＲＬ
    pidx_date               date,						--公開日
    pidx_edate		    	date,						--公開終了日（デフォルトnull）nullの場合は終了日なし
    pidx_title              text,						--記事タイトル
    pidx_comment			text,						--一覧表示,RSS表示用概要文
	pidx_comment_pic		text,						--一覧表示用画像ファイルパス
	pidx_keywords			text,						--META用キーワード
	pidx_description		text,						--META用description
	pidx_analyticstags		text,						--ページ個別アクセス解析タグ
    pidx_comment_flg       smallint default 0,			--０：受信しない　１：すべて受信
    --pidx_order				integer,					--表示順
    pidx_cusr_code         	integer,					--作成者ユーザコード
	pidx_uusr_code			integer,					--最終更新者ユーザコード
	pidx_cnsnt_usr_code		integer,					--承認者ユーザコード
	pidx_rev				text,						--バージョン名称
	pidx_note				text,						--更新履歴等の備考
	pidx_c_date				timestamptz,				--登録日
	pidx_u_date				timestamptz,				--最終更新日
    primary key (pidx_code)
);
*/
	var $columns = array(
						array("column"=>"pidx_code","conv"=>"n","tags"=>false),			//記事コード
						array("column"=>"pidx_sidx_code","conv"=>"n","tags"=>false),	//セクションコード
						array("column"=>"pidx_active","conv"=>"n","tags"=>false),		//０：削除　１：有効
						array("column"=>"pidx_view","conv"=>"n","tags"=>false),			//-1:否認 ０：非公開　１：承認中（ログインユーザのみ公開）　２：承認済
						array("column"=>"pidx_cat_code","conv"=>"n","tags"=>false),		//カテゴリコード
						array("column"=>"pidx_ptype","conv"=>"n","tags"=>false),		//ページタイプ 0:通常 1:リスト
						array("column"=>"pidx_url","conv"=>"a","tags"=>false),			//ページUrl indexの場合はnull
						array("column"=>"pidx_directurl","conv"=>"a","tags"=>false),	//一覧用ジャンプ先URL
						array("column"=>"pidx_date","conv"=>"a","tags"=>false),			//公開日
						array("column"=>"pidx_edate","conv"=>"a","tags"=>false),		//公開終了日
						array("column"=>"pidx_title","conv"=>"KVa","tags"=>false),		//記事タイトル
						array("column"=>"pidx_comment","conv"=>"KVa","tags"=>true),		//一覧用文章
						array("column"=>"pidx_comment_pic","conv"=>"KVa","tags"=>false),//一覧用画像
						array("column"=>"pidx_keywords","conv"=>"KVa","tags"=>false),	//METAキーワード
						array("column"=>"pidx_description","conv"=>"KVa","tags"=>false),//METADescription
						array("column"=>"pidx_analyticstags","conv"=>"KVa","tags"=>true),//analytics
						array("column"=>"pidx_comment_flg","conv"=>"n","tags"=>false),	//０：受信しない　１：すべて受信
						array("column"=>"pidx_cusr_code","conv"=>"n","tags"=>false),	//作成者ユーザコード
						array("column"=>"pidx_uusr_code","conv"=>"n","tags"=>false),	//最終更新者ユーザコード
						array("column"=>"pidx_cnsnt_usr_code","conv"=>"n","tags"=>false),//承認者ユーザコード
						array("column"=>"pidx_rev","conv"=>"KVa","tags"=>false),		//バージョン名称
						array("column"=>"pidx_note","conv"=>"KVa","tags"=>false),		//更新履歴等の備考
						array("column"=>"pidx_c_date","conv"=>"a","tags"=>false),		//登録日
						array("column"=>"pidx_u_date","conv"=>"a","tags"=>false)		//更新日
						);
	/**
	 * コンストラクタ php4対応・・・
	 */
	function pageIdxDB()
	{
		$this->__construct();
	}
	function __construct()
	{
		Model::__construct();
		$this->db = new DataBase();
	}

	//フォームエレメントの作成
	function setElements()
	{
		$this->_form->addElement('hidden','token', null);
		$this->_form->addElement('hidden','pidx_code', $this->getrequest("pidx_code"));
		$this->_form->addElement('hidden','sidx_code', $this->getrequest("sidx_code"));
		$this->_form->addElement('hidden','pidx_cat_code', $this->getrequest("cat_code"));
		$this->_form->addElement('hidden','pidx_ptype', $this->getrequest("pidx_ptype"));
		$this->_form->addElement('hidden','pidx_extmodule_code', $this->getrequest("pidx_extmodule_code"));
		
		//v1.2からpidx_ptype:2は廃止
		//$this->_form->addElement('hidden','listflg',$this->_listflg);

		$this->_form->addElement('hidden','pidx_view', null);

		//if($this->_listflg&&$this->_form->getElementValue("pidx_ptype")==0) {
		//v1.2からpidx_ptype:2は廃止
		//追加ページなら期間設定可能にする
		if($this->_form->getElementValue("pidx_ptype")==0) {
			//リストページの存在するカテゴリで、通常ページを作成する場合のみ期間設定を入力させる
			$this->_form->addElement('text','pidx_date', null, array('size'=>20,'maxlength'=>'20','id'=>'pidx_date','style'=>'ime-mode:disabled'));
			$this->_form->addElement('text','pidx_edate', null, array('size'=>20,'maxlength'=>'20','id'=>'pidx_edate','style'=>'ime-mode:disabled'));
		} else {
			$this->_form->addElement('hidden','pidx_date', date('Y-m-d'));
			$this->_form->addElement('hidden','pidx_edate', null);
		}
		

		if($this->_form->getElementValue("pidx_ptype")>0) { //index以外はurlを設定させる
			$this->_form->addElement('hidden','pidx_url', null);
		} else {
			$this->_form->addElement('text','pidx_url', null, array('size'=>20,'maxlength'=>'40','id'=>'pidx_url','style'=>'ime-mode:disabled'));
			$this->_form->addRule('pidx_url','・「ファイル名」を入力してください','required',null,$this->erchk);
			$this->_form->addRule('pidx_url','・「ファイル名」は半角英数40文字以内で入力してください', 'regex', '/^[a-zA-Z0-9_-]{1,40}$/', $this->erchk);
			$this->_form->registerRule('pidxurl_valid', 'callback', 'check_page_url');
			$this->_form->addRule('pidx_url','・入力された「url」はすでに登録されています','pidxurl_valid',$_REQUEST,$this->erchk);
			//一度でも公開されたページurlに関しては変更させてはいけない
			//モジュールが生成したページ、かつ、専用ユニットがある場合はURL変更不可とする
			$unitDB = new unitDB();
			if($this->getCountPidx($this->getrequest("pidx_code"))>0||$unitDB->is_existPrivateExtUnit($this->getrequest("pidx_code"))>0){
				$el = $this->_form->getElement("pidx_url");
				$el->freeze();
			}
			
			$this->_form->addElement('text','pidx_directurl', null, array('size'=>40,'maxlength'=>'80','id'=>'pidx_directurl','style'=>'ime-mode:disabled'));
			$this->_form->addRule('pidx_directurl','・「RSS、一覧表示用ジャンプ先URL」は半角英数80文字以内で入力してください','maxlength',80,$this->erchk);
			
		}
		$this->_form->addElement('text','pidx_title', null, array('size'=>50,'maxlength'=>'50','id'=>'pidx_title'));
		$this->_form->addElement('textarea','pidx_comment', null, array('id'=>'pidx_comment','cols'=>60,'rows'=>4));
		//コメント
		//$item=array();
		//$item[]=&HTML_QuickForm::createElement('radio', null, null, '無効（非表示）', 0);
		//$item[]=&HTML_QuickForm::createElement('radio', null, null, '有効', 1);
		//$this->_form->addGroup($item,'pidx_comment_flg');
		$this->_form->addElement('hidden','pidx_comment_flg', 0); //βでは未使用、0とする

		$this->_form->addElement('text','pidx_keywords', null, array('id'=>'pidx_keywords','size'=>50,'maxlength' => 100));
		$this->_form->addElement('text','pidx_description', null, array('id'=>'pidx_description','size'=>100,'maxlength' => 200));
		$this->_form->addElement('textarea','pidx_analyticstags', null, array('id'=>'pidx_analyticstags','cols'=>60,'rows'=>4));

		//$this->_form->addElement('text','pidx_rev', null, array('size'=>20,'maxlength'=>'20','id'=>'pidx_rev','style'=>'ime-mode:disabled'));
		//$this->_form->getElement("pidx_rev")->freeze(); //βではRevは見せない
		$this->_form->addElement('hidden','pidx_rev', null);

		$this->_form->addElement('textarea','pidx_note', null, array('id'=>'pidx_note','cols'=>60,'rows'=>4));

		$this->_form->addElement('file', 'picture', '');//画像アップ用ボタン
		$this->_form->addElement('checkbox', 'pic_delflg', null,'この画像を削除する',null);//画像削除チェックボックス
		$this->_form->updateElementAttr('pic_delflg',array('value'=>'delete'));
		$this->_form->addElement('hidden','pidx_comment_pic', ''); //既存画像ファイルパス
	}
	//フォーム入力エラーチェックの設定
	function setRules()
	{

		$this->_form->applyFilter('__ALL__','trim');
		$this->_form->_submitValues = DataBase::ConvColumnVals($this->_form->_submitValues,$this->columns); //ルールに従った値変換、タグの除去
		$this->_form->setJsWarnings('下記の項目が不正です。','');
		$this->_form->registerRule('date_valid', 'callback', 'check_date_valid');
		$this->_form->registerRule('check_date_from_to', 'callback', 'check_date_from_to');

		$this->_form->addRule('sidx_code','・「セクションコード」が不明です。コンテンツ管理よりやり直してください','required',null,$this->erchk);
		$this->_form->addRule('pidx_view','・「ステータス」を入力してください。','required',null,$this->erchk);

		$this->_form->addRule('pidx_date','・「公開開始日」を入力してください','required',null,$this->erchk);
		$this->_form->addRule('pidx_date','・「公開開始日」を正しく入力してください','date_valid',null,$this->erchk);
		$this->_form->addRule('pidx_edate','・「公開終了日」を正しく入力してください','date_valid',null,$this->erchk);
		//if($this->_listflg&&$this->_form->getElementValue("pidx_ptype")==0) {
		//v1.2からptype=0なら期間OKとする
		if($this->_form->getElementValue("pidx_ptype")==0) {
			$this->_form->addRule(array('pidx_date','pidx_edate'),'・「公開期間」の開始時間が終了時間を超えています','check_date_from_to',null,$this->erchk);
		}
		
		$this->_form->addRule('pidx_title','・「ページタイトル」を入力してください','required',null,$this->erchk);
		$this->_form->addRule('pidx_title','・「ページタイトル」は全角50文字以内です','maxlength',150,$this->erchk);

		$this->_form->addRule('pidx_comment','・「RSS、一覧表示用ページ概要文章」は全角100文字以内です','maxlength',300,$this->erchk);

		//必須なら$this->_form->addRule('picture','・画像を選択してください。','uploadedfile',null,'server');
		$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"));

		$this->_form->addRule('pidx_keywords','・「サイト共通検索エンジン用ページキーワード」は全角50(半角100)文字以内です','maxlength',150,$this->erchk);
		$this->_form->addRule('pidx_description','・「サイト共通検索エンジン用ページ説明文」は全角100(半角200)文字以内です','maxlength',300,$this->erchk);
		//$this->_form->addRule('pidx_analyticstags','・「アクセス解析用タグ」は半角英数400文字以内です','maxlength',400,$this->erchk);


		//$this->_form->addRule('pidx_rev','・「Rev」を入力してください','required',null,$this->erchk);
		//$this->_form->addRule('pidx_rev','・「Rev」は半角数字で入力してください','numeric',null,$this->erchk);

		$this->_form->addRule('pidx_note','・「バージョン備考」は全角200文字以内です','maxlength',600,$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 setButtons($frozen = false) {
		$buttons = array();
		if($frozen) {
			$buttons[] = $this->_form->createElement('submit','BTNback',' 編集に戻る ',array('id'=>'BTNback','class'=>'bBtnBack'));
			$buttons[] = $this->_form->createElement('submit','BTNsaveandback',' 保存してページ一覧へ戻る ',array('id'=>'BTNsaveandback','class'=>'bBtnSaveBack'));
			$buttons[] = $this->_form->createElement('submit','BTNsave',' 保存してレイアウト設定へ進む ',array('id'=>'BTNsave','class'=>'bBtnSaveNext'));

		} else {
			$buttons[] = $this->_form->createElement('submit','BTNList',' 一覧に戻る ',array('id'=>'BTNList','class'=>'bBtnListBack'));
			$buttons[] = $this->_form->createElement('submit','BTNnext',' 次へ進む ',array('id'=>'BTNnext','class'=>'bBtnNext'));
			$unitDB = new unitDB();
			
			if($this->getRequest("pidx_code")>0 && $_SESSION['usr_info']["usr_kanri"]==1 && $this->_form->getElementValue("pidx_url")!=null && $unitDB->is_existPrivateExtUnit($this->getRequest("pidx_code"))==0) {
				//管理者であり、index.htmlページでない物だけ削除可能
				//v1.2　モジュールで生成されたページは削除不可
				$buttons[] = $this->_form->createElement('submit','BTNdelete',' 削除 ',array('id'=>'BTNdelete','class'=>'bBtnDelete','onClick'=>'return confirm(\'公開中の記事も削除されます。よろしいですか？\')'));
			}
		}
		$this->_form->addGroup($buttons,"buttons", null, '&nbsp;&nbsp;');
	}

	function getlist($sidx_code=null,$cat_code=null,$prev=true) {
		$table = ($prev) ? "tbl_page_idx_tmp" : "tbl_page_idx";
		$sql = "select * from ".$table." where pidx_active = 1 ";
		if(is_numeric($sidx_code)){
			 $whrsql[] = " pidx_sidx_code = ?";
			 $whrdata[] = $sidx_code;
		}
		if(is_numeric($cat_code)){
			 $whrsql[] = " pidx_cat_code = ?";
			 $whrdata[] = $cat_code;
		}
		$order .= " order by pidx_ptype desc";
		if(count($whrdata) > 0) {
			$sql .= "and ".implode(" and ", $whrsql);
			$result = $this->db->prepare($sql.$order,$whrdata);
		} else {
			$result = $this->db->query($sql.$order);
		}
		$rtn=array();
		if($result != null) {
			while ($row = $result->fetchRow(DB_FETCHMODE_ASSOC)){
				$rtn[] = $row;
			}
		}
		return $rtn;
	}

	//管理画面ページ一覧取得
	//tmp と本番outerでつないで全部とります
	function getlistAll($sidx_code=null,$cat_code=null) {
		if(is_numeric($sidx_code)){
			 $whrsql[] = " tbl_page_idx_tmp.pidx_sidx_code = ?";
			 $whrdata[] = $sidx_code;
		}
		if(is_numeric($cat_code)){
			 $whrsql[] = " tbl_page_idx_tmp.pidx_cat_code = ?";
			 $whrdata[] = $cat_code;
		}
		$order .= " order by tbl_page_idx_tmp.pidx_ptype desc, tbl_page_idx_tmp.pidx_date desc";

		$sql = "select
				tbl_page_idx_tmp.pidx_code 				as pidx_code_tmp,
				tbl_page_idx_tmp.pidx_sidx_code 		as pidx_sidx_code_tmp,
				tbl_page_idx_tmp.pidx_view				as pidx_view_tmp,
				tbl_page_idx_tmp.pidx_cat_code			as pidx_cat_code_tmp,
				tbl_page_idx_tmp.pidx_ptype				as pidx_ptype_tmp,
				tbl_page_idx_tmp.pidx_url				as pidx_url_tmp,
				tbl_page_idx_tmp.pidx_date				as pidx_date_tmp,
				tbl_page_idx_tmp.pidx_edate				as pidx_edate_tmp,
				tbl_page_idx_tmp.pidx_title				as pidx_title_tmp,
				tbl_page_idx_tmp.pidx_rev				as pidx_rev_tmp,
				tbl_page_idx_tmp.pidx_note				as pidx_note_tmp,
				tbl_page_idx_tmp.pidx_c_date			as pidx_c_date_tmp,
				tbl_page_idx_tmp.pidx_u_date			as pidx_u_date_tmp,
				tbl_page_idx.pidx_code,
				tbl_page_idx.pidx_sidx_code,
				tbl_page_idx.pidx_view,
				tbl_page_idx.pidx_cat_code,
				tbl_page_idx.pidx_ptype	,
				tbl_page_idx.pidx_url,
				tbl_page_idx.pidx_date,
				tbl_page_idx.pidx_edate,
				tbl_page_idx.pidx_title,
				tbl_page_idx.pidx_rev,
				tbl_page_idx.pidx_note,
				tbl_page_idx.pidx_c_date,
				tbl_page_idx.pidx_u_date
				FROM tbl_page_idx_tmp
				left outer join tbl_page_idx on tbl_page_idx_tmp.pidx_code = tbl_page_idx.pidx_code
				where tbl_page_idx_tmp.pidx_active = 1 ";
		if(count($whrdata) > 0) {
			$sql .= "and ".implode(" and ", $whrsql);
			$result = $this->db->prepare($sql.$order,$whrdata);
		} else {
			$result = $this->db->query($sql.$order);
		}
		$rtn=array();
		if($result != null) {
			while ($row = $result->fetchRow(DB_FETCHMODE_ASSOC)){
				$rtn[] = $row;
			}
		}
		return $rtn;
	}


	/**
	 * コードから下書きページ情報取得
	 * @param sidx_code
	 * @return	array
	 */
	function getTmpData($pidx_code)
	{
		if(isset($pidx_code)&&is_numeric($pidx_code)) {
			$sql = "select *
					from tbl_page_idx_tmp
					where pidx_code = ?";
			$result = $this->db->prepare($sql,$pidx_code);
			if($result != null) {
				return $result->fetchRow(DB_FETCHMODE_ASSOC);
			}
		}
		return null;
	}

	//データ保存
	function doSave($post)
	{
		if(isset($post["pidx_code"])&&is_numeric($post["pidx_code"])) {
			$rtn = $this->update($post);
			if($rtn == null) {
				//画像削除処理
				//if($post["pidx_comment_pic"]!=null && (isset($_SESSION["tmpImage"])||$post["pic_delflg"]!=null)) {
				//	$this->Delpic($post["pidx_comment_pic"]);
				//}公開されている画像を削除してしまうおそれがあるので削除しない。
			}
			return $rtn;
		} else {
			return $this->insert($post);
		}
	}

	/**
	 * 新規登録
	 * @return	null or err_str
	 */
	function insert( $post )
	{
		foreach($this->columns as $val) {
			if($post[$val["column"]]!=null){
				$record[$val["column"]] = $post[$val["column"]];
			} else {
				$record[$val["column"]] = null; //timestampがあるのでnullを入れてます
			}
		}
		$record["pidx_c_date"] = "now()";
		$record["pidx_u_date"] = "now()";
		$record["pidx_active"] = 1;
		$record["pidx_rev"] = 1;
		$record["pidx_sidx_code"] = $post["sidx_code"];
		$record["pidx_cusr_code"] = $_SESSION["usr_info"]["usr_code"];
		$record["pidx_uusr_code"] = $_SESSION["usr_info"]["usr_code"];

		$this->db->query('BEGIN');
		$record["pidx_code"] = $this->db->getKey("tbl_page_idx_pidx_code");//登録ID
		$this->_pidx_code = $record["pidx_code"];
		//新しい画像データがあるなら新ファイル名の決定
		if(isset($_SESSION["tmpImage"]['data'])&&$_SESSION["tmpImage"]['data']!=null){
			$record["pidx_comment_pic"] = $record["pidx_code"]."-".date("YmdHis").$_SESSION["tmpImage"]["ext"];
		}
		if($this->db->insert("tbl_page_idx_tmp",$record)) {
			if($this->setImages($record)) { //画像保存
				$this->db->query('COMMIT');
				return null;
			}
			$this->db->query('ROLLBACK');
			return "・画像データの保存に失敗しました";
		}

		$this->db->query('ROLLBACK');
		return "保存に失敗しました";
	}

	/**
	 * 更新内容の登録
	 * @return	null or err_str
	 */
	function update($post)
	{
	foreach($this->columns as $val) {
			if($post[$val["column"]]!=null){
				$record[$val["column"]] = $post[$val["column"]];
			} else {
				$record[$val["column"]] = null; //timestampがあるのでnullを入れてます
			}
		}
		if(isset($record["pidx_code"]) && is_numeric($record["pidx_code"])) {
			$this->_pidx_code = $record["pidx_code"];
			//カラム除外
			unset($record["pidx_sidx_code"]);
			unset($record["pidx_c_date"]);
			unset($record["pidx_active"]);
			$record["pidx_u_date"] = "now()";
			unset($record["pidx_cusr_code"]);
			$record["pidx_uusr_code"] = $_SESSION["usr_info"]["usr_code"];
			//画像削除フラグがあったら空白に
			if($post["pic_delflg"]!=null) {
				$record["pidx_comment_pic"]=null;
			}
			//新しい画像データがあるなら新ファイル名の決定
			if(isset($_SESSION["tmpImage"]['data'])&&$_SESSION["tmpImage"]['data']!=null){
				$record["pidx_comment_pic"] = $record["pidx_code"]."-".date("YmdHis").$_SESSION["tmpImage"]["ext"];
			}

			$this->db->query('BEGIN');
			if($this->db->update("tbl_page_idx_tmp", $record,"pidx_code=".$record["pidx_code"])) {
				if($this->setImages($record)) {//画像ファイルアップ
					$this->db->query('COMMIT');
					return null;
				}
				$this->db->query('ROLLBACK');
				return "・画像データの保存に失敗しました";
			}
			$this->db->query('ROLLBACK');
			return "・保存に失敗しました";
		}
		return "・コードが不明です";
	}

	/**
	 * ページ削除
	 * @return	null or err_str
	 */
	function delete($post) {
		if(isset($post["pidx_code"]) && is_numeric($post["pidx_code"])) {
			$this->db->query('BEGIN');
			//下書き削除
			if(!$this->db->update("tbl_page_idx_tmp", array("pidx_active"=>0,"pidx_u_date"=>"now()"),"pidx_code=".$post["pidx_code"])) {
				$this->db->query('ROLLBACK');
				return "・削除に失敗しました";
			}
			//本番削除
					if(!$this->db->update("tbl_page_idx", array("pidx_active"=>0,"pidx_u_date"=>"now()"),"pidx_code=".$post["pidx_code"])) {
				$this->db->query('ROLLBACK');
				return "・削除に失敗しました";
			}
			$this->db->query('COMMIT');
			return null;
		}
		return "・セクションコードが不明です";
	}

	function setPublicToEditData($pidx_code=null) {
		if(is_numeric($pidx_code)&&$pidx_code>0) {
			$this->db->query('BEGIN');
			//承認フラグアップデート
			if(!$this->db->update("tbl_page_idx_tmp", array("pidx_view"=>0),"pidx_code=".$pidx_code)) {
				$this->db->query('ROLLBACK');
				return false;
			} else {
				$this->db->query('COMMIT');
				return true;
			}
		}
		return false;
	}
	
	function setPidxView($pidx_code,$status=1) {
		if(is_numeric($pidx_code)&&is_numeric($status)) {
			$this->db->query('BEGIN');
			if($this->db->update("tbl_page_idx_tmp", array("pidx_view"=>$status),"pidx_code=".$pidx_code)) {
				$this->db->query('COMMIT');
				return true;
			} else {
				$this->db->query('ROLLBACK');
				return false;
			}
		}
		return false;
	}

	/*
	 * 画像保存
	 * 登録する画像($_SESSION["tmpImage"]['data'])が存在していれば過去の画像を削除し、書き出し
	 * 保存先は $targetPath."/".$record["PKEY"].(timestamp).jpg(.gif|.png)となります
	 * @return ファイル名
	 */
	function setImages($post) {
		$targetPath = BASE_PATH.PIDX_IMG_PATH; //保存先
		if(isset($post["pidx_code"]) && is_numeric($post["pidx_code"]) && isset($_SESSION["tmpImage"]['data']) && $_SESSION["tmpImage"]['data']!=null) {
			if(!is_dir($targetPath)) {
				if(!mkdir($targetPath)) {
					return false;
				}
			}
			return commonFile::putImage($_SESSION["tmpImage"],$targetPath,$post["pidx_comment_pic"]);
		}
		return true;
	}

	function Delpic($fname) {
		$targetPath = BASE_PATH.PIDX_IMG_PATH; //保存先
		if(isset($fname) && $fname!=null && file_exists($targetPath.$fname)) {
			@unlink($targetPath.$fname);
		}
	}

	//カテゴリに対してindexぺージが居るかどうかチェックする
	//居たらtrue,居なかったらfalseを返す
	function getPtype($sidx_code,$cat_code,$prev=true) {
		if(is_numeric($sidx_code) && is_numeric($cat_code)) {
			$table = ($prev) ? "tbl_page_idx_tmp" : "tbl_page_idx";
			$sql = "select count(*) as count from ".$table." where pidx_ptype > 0 and pidx_sidx_code = ? and pidx_cat_code = ? and pidx_active = 1";
			$result = $this->db->prepare($sql,array($sidx_code,$cat_code));
			if($result != null) {
				$row = $result->fetchRow(DB_FETCHMODE_ASSOC);
			}
			if(isset($row["count"]) && $row["count"]>0) {
				return true;
			}
		}
		return false;
	}
	//カテゴリに対してindexぺージが居るかどうかチェックする
	//居たらtrue,居なかったらfalseを返す
	function getPtypeList($sidx_code,$cat_code,$prev=true) {
		if(is_numeric($sidx_code) && is_numeric($cat_code)) {
			$table = ($prev) ? "tbl_page_idx_tmp" : "tbl_page_idx";
			$sql = "select count(*) as count from ".$table." where pidx_ptype = 1 and pidx_sidx_code = ? and pidx_cat_code = ? and pidx_active = 1";
			$result = $this->db->prepare($sql,array($sidx_code,$cat_code));
			if($result != null) {
				$row = $result->fetchRow(DB_FETCHMODE_ASSOC);
			}
			if(isset($row["count"]) && $row["count"]>0) {
				return true;
			}
		}
		return false;
	}
	//公開レコードにて指定されたpidx_codeのページ数をカウント
	function getCountPidx($pidx_code) {
		if(is_numeric($pidx_code)) {
			$sql = "select count(*) as count from tbl_page_idx where pidx_code = ? and pidx_active = 1";
			$result = $this->db->prepare($sql,array($pidx_code));
			if($result != null) {
				$row = $result->fetchRow(DB_FETCHMODE_ASSOC);
			}
			if(isset($row["count"]) && $row["count"]>0) {
				return $row["count"];
			}
		}
		return 0;
	}

}

/*
 * ページurlユニークチェック
 * @param $value
 */
function check_page_url($value,$sub_ar=null) {
	$dir = isset($sub_ar["pidx_url"]) ? $sub_ar["pidx_url"] : "";
	$pidx_code = isset($sub_ar["pidx_code"]) ? $sub_ar["pidx_code"] : "";
	$sidx_code = isset($sub_ar["sidx_code"]) ? $sub_ar["sidx_code"] : "";
	$cat_code = isset($sub_ar["pidx_cat_code"]) ? $sub_ar["pidx_cat_code"] : "";
	$db = null;
	$db = DB::connect(DSN);
	if(PEAR::isError($db)) {
		return false;
	}
	if($dir!=null&&is_numeric($sidx_code)&&is_numeric($cat_code)) {
		if($dir == "index") {
			$dir = "is null";
		} else {
			$dir = "like '{$dir}'";
		}
		$sql = "select count(*) from tbl_page_idx_tmp where pidx_url ".$dir." and pidx_active = 1 ";
		$sql .= " and pidx_sidx_code = ".$sidx_code." and pidx_cat_code = ".$cat_code." ";
		if(is_numeric($pidx_code)) {
			$sql .= " and pidx_code != '{$pidx_code}'";
		}
		$cnt = $db->getOne($sql);
		if($cnt == 0) {
			return true;
		} else {
			return false;
		}
	}
	return false;
}
?>