Index: branches/feature-module-update/html/admin/design/main_edit.php
===================================================================
--- branches/feature-module-update/html/admin/design/main_edit.php	(revision 15532)
+++ branches/feature-module-update/html/admin/design/main_edit.php	(revision 15682)
@@ -5,371 +5,15 @@
  * http://www.lockon.co.jp/
  */
+
+// {{{ requires
 require_once("../../require.php");
-require_once(DATA_PATH . "include/page_layout.inc");
+require_once(CLASS_PATH . "page_extends/admin/design/LC_Page_Admin_Design_MainEdit_Ex.php");
 
-class LC_Page {
-	var $arrForm;
-	var $arrHidden;
+// }}}
+// {{{ generate page
 
-	function LC_Page() {
-		$this->tpl_mainpage = 'design/main_edit.tpl';
-		$this->tpl_subnavi 	= 'design/subnavi.tpl';
-		$this->user_URL	 	= USER_URL;
-		$this->text_row 	= 13;
-		$this->tpl_subno = "main_edit";
-		$this->tpl_mainno = "design";
-		$this->tpl_subtitle = 'ページ詳細設定';
-	}
-}
-$objPage = new LC_Page();
-$objView = new SC_AdminView();
-
-// 認証可否の判定
-$objSess = new SC_Session();
-sfIsSuccess($objSess);
-
-// ページ一覧を取得
-$objPage->arrPageList = lfgetPageData();
-
-// ブロックIDを取得
-if (isset($_POST['page_id'])) {
-	$page_id = $_POST['page_id'];
-}else if ($_GET['page_id']){
-	$page_id = $_GET['page_id'];
-}else{
-	$page_id = '';
-}
-
-$objPage->page_id = $page_id;
-
-// メッセージ表示
-if ($_GET['msg'] == "on"){
-	$objPage->tpl_onload="alert('登録が完了しました。');";
-}
-
-// page_id が指定されている場合にはテンプレートデータの取得
-if (is_numeric($page_id) and $page_id != '') {
-	$arrPageData = lfgetPageData(" page_id = ? " , array($page_id));
-
-	if ($arrPageData[0]['tpl_dir'] === "") {
-		$objPage->arrErr['page_id_err'] = "※ 指定されたページは編集できません。";
-		// 画面の表示
-		$objView->assignobj($objPage);
-		$objView->display(MAIN_FRAME);
-		exit;
-	}
-
-	// テンプレートファイルが存在していれば読み込む
-	$tpl_file = HTML_PATH . $arrPageData[0]['tpl_dir'] . $arrPageData[0]['filename'] . ".tpl";
-	if (file_exists($tpl_file)){
-		$arrPageData[0]['tpl_data'] = file_get_contents($tpl_file);		
-	}
-
-	// チェックボックスの値変更
-	$arrPageData[0]['header_chk'] = sfChangeCheckBox($arrPageData[0]['header_chk'], true);
-	$arrPageData[0]['footer_chk'] = sfChangeCheckBox($arrPageData[0]['footer_chk'], true);
-
-	// ディレクトリを画面表示用に編集
-	$arrPageData[0]['directory'] = str_replace( USER_DIR,'', $arrPageData[0]['php_dir']);
-	
-	$objPage->arrPageData = $arrPageData[0];
-}
-
-// プレビュー処理
-if ($_POST['mode'] == 'preview') {
-	
-	$page_id_old = $page_id;
-	$page_id = "0";
-	$url = uniqid("");
-
-	$_POST['page_id'] = $page_id;
-	$_POST['url'] = $url;
-	
-	$arrPreData = lfgetPageData(" page_id = ? " , array($page_id));
-
-	// tplファイルの削除
-	$del_tpl = USER_PATH . "templates/" . $arrPreData[0]['filename'] . '.tpl';
-	if (file_exists($del_tpl)){
-		unlink($del_tpl);	
-	}
-
-	// DBへデータを更新する
-	lfEntryPageData($_POST);
-
-	// TPLファイル作成
-	$cre_tpl = USER_PATH . "templates/" . $url . '.tpl';
-	lfCreateFile($cre_tpl);
-	
-	// blocposition を削除
-	$objDBConn = new SC_DbConn;		// DB操作オブジェクト
-	$sql = 'delete from dtb_blocposition where page_id = 0';
-	$ret = $objDBConn->query($sql);
-	
-	if ($page_id_old != "") {
-		// 登録データを取得
-		$sql = "SELECT 0, target_id, bloc_id, bloc_row FROM dtb_blocposition WHERE page_id = ?";
-		$ret = $objDBConn->getAll($sql,array($page_id_old));
-		
-		if (count($ret) > 0) {
-			
-			// blocposition を複製
-			$sql = " insert into dtb_blocposition (";
-			$sql .= "     page_id,";
-			$sql .= "     target_id,";
-			$sql .= "     bloc_id,";
-			$sql .= "     bloc_row";
-			$sql .= "     )values(?, ?, ?, ?)";
-			
-			// 取得件数文INSERT実行
-			foreach($ret as $key => $val){
-				$ret = $objDBConn->query($sql,$val);
-			}
-		}
-
-	}
-	
-	$_SESSION['preview'] = "ON";
-	
-	header("location: " . URL_DIR . "preview/index.php");
-}
-
-// データ登録処理
-if ($_POST['mode'] == 'confirm') {
-	
-	// エラーチェック
-	$objPage->arrErr = lfErrorCheck($_POST);
-
-	// エラーがなければ更新処理を行う	
-	if (count($objPage->arrErr) == 0) {
-
-		// DBへデータを更新する
-		lfEntryPageData($_POST);
-		
-		// ベースデータでなければファイルを削除し、PHPファイルを作成する
-		if (!lfCheckBaseData($page_id)) {
-			// ファイル削除
-			lfDelFile($arrPageData[0]);
-			
-			// PHPファイル作成
-			$cre_php = USER_PATH . $_POST['url'] . ".php";
-			lfCreatePHPFile($cre_php);
-		}
-
-		// TPLファイル作成
-		$cre_tpl = dirname(USER_PATH . "templates/" . $_POST['url']) . "/" . basename($_POST['url']) . '.tpl';
-
-		lfCreateFile($cre_tpl);
-
-		// 編集可能ページの場合にのみ処理を行う
-		if ($arrPageData[0]['edit_flg'] != 2) {
-			// 新規作成した場合のために改にページIDを取得する
-			$arrPageData = lfgetPageData(" url = ? " , array(USER_URL.$_POST['url'].".php"));
-			$page_id = $arrPageData[0]['page_id'];
-		}
-
-		header("location: ./main_edit.php?page_id=$page_id&msg=on");
-	}else{
-		// エラーがあれば入力時のデータを表示する
-		$objPage->arrPageData = $_POST;
-		$objPage->arrPageData['header_chk'] = sfChangeCheckBox(sfChangeCheckBox($_POST['header_chk']), true);
-		$objPage->arrPageData['footer_chk'] = sfChangeCheckBox(sfChangeCheckBox($_POST['footer_chk']), true);
-		$objPage->arrPageData['directory'] = $_POST['url'];
-		$objPage->arrPageData['filename'] = "";
-	}
-}
-
-// データ削除処理 ベースデータでなければファイルを削除
-if ($_POST['mode'] == 'delete' and 	!lfCheckBaseData($page_id)) {
-	lfDelPageData($_POST['page_id']);
-}
-
-// 画面の表示
-$objView->assignobj($objPage);
-$objView->display(MAIN_FRAME);
-
-//---------------------------------------------------------------------------------------------------------------------------------------------------------
-/**************************************************************************************************************
- * 関数名	：lfEntryPageData
- * 処理内容	：ブロック情報を更新する
- * 引数1	：$arrData  ･･･ 更新データ
- * 戻り値	：更新結果
- **************************************************************************************************************/
-function lfEntryPageData($arrData){
-	$objDBConn = new SC_DbConn;		// DB操作オブジェクト
-	$sql = "";						// データ更新SQL生成用
-	$ret = ""; 						// データ更新結果格納用
-	$arrUpdData = array();			// 更新データ生成用
-	$arrChk = array();				// 排他チェック用
-
-	// 更新データ生成
-	$arrUpdData = lfGetUpdData($arrData);
-	
-	// データが存在しているかチェックを行う
-	if($arrData['page_id'] !== ''){
-		$arrChk = lfgetPageData(" page_id = ?", array($arrData['page_id']));
-	}
-
-	// page_id が空 若しくは データが存在していない場合にはINSERTを行う
-	if ($arrData['page_id'] === '' or !isset($arrChk[0])) {
-		// SQL生成
-		$sql = " INSERT INTO dtb_pagelayout ";
-		$sql .= " ( ";
-		$sql .= " 	  page_name";
-		$sql .= "	  ,url";
-		$sql .= "	  ,php_dir";
-		$sql .= "	  ,tpl_dir";
-		$sql .= "	  ,filename";
-		$sql .= "	  ,header_chk";
-		$sql .= "	  ,footer_chk";
-		$sql .= "	  ,update_url";
-		$sql .= "	  ,create_date";
-		$sql .= "	  ,update_date";
-		$sql .= " ) VALUES ( ?,?,?,?,?,?,?,?,now(),now() )";
-		$sql .= " ";
-	}else{
-		// データが存在してる場合にはアップデートを行う
-		// SQL生成
-		$sql = " UPDATE dtb_pagelayout ";
-		$sql .= " SET";
-		$sql .= "	  page_name = ? ";
-		$sql .= "	  ,url = ? ";
-		$sql .= "	  ,php_dir = ? ";
-		$sql .= "	  ,tpl_dir = ? ";
-		$sql .= "	  ,filename = ? ";
-		$sql .= "	  ,header_chk = ? ";
-		$sql .= "	  ,footer_chk = ? ";
-		$sql .= "	  ,update_url = ? ";
-		$sql .= "     ,update_date = now() ";
-		$sql .= " WHERE page_id = ?";
-		$sql .= " ";
-
-		// 更新データにブロックIDを追加
-		array_push($arrUpdData, $arrData['page_id']);
-	}
-
-	// SQL実行
-	$ret = $objDBConn->query($sql,$arrUpdData);
-	
-	return $ret;
-}
-
-/**************************************************************************************************************
- * 関数名	：lfGetUpdData
- * 処理内容	：DBへ更新を行うデータを生成する
- * 引数1	：$arrData  ･･･ 更新データ
- * 戻り値	：更新データ
- **************************************************************************************************************/
-function lfGetUpdData($arrData){
-	
-	// ベースデータの場合には変更しない。
-	if (lfCheckBaseData($arrData['page_id'])) {
-		$arrPageData = lfgetPageData( ' page_id = ? ' , array($arrData['page_id']));
-
-		$name = $arrPageData[0]['page_name'] ;
-		$url = $arrPageData[0]['url'];
-		$php_dir = $arrPageData[0]['php_dir'];
-		$tpl_dir = $arrPageData[0]['tpl_dir'];
-		$filename = $arrPageData[0]['filename'];
-	}else{
-		$name = $arrData['page_name'] ;
-		$url = USER_URL.$arrData['url'].".php";
-		$php_dir = dirname(USER_DIR.$arrData['url'])."/";
-		$tpl_dir = dirname(USER_DIR."templates/".$arrData['url'])."/";
-		$filename = basename($arrData['url']);
-	}
-
-	// 更新データ配列の作成
-	$arrUpdData = array(
-					$name										// 名称	
-					,$url										// URL
-					,$php_dir									// PHPディレクトリ
-					,$tpl_dir									// TPLディレクトリ
-					,$filename									// ファイル名
-					,sfChangeCheckBox($arrData['header_chk'])	// ヘッダー使用
-					,sfChangeCheckBox($arrData['footer_chk'])	// フッター使用
-					,$_SERVER['HTTP_REFERER']					// 更新URL
-					);
-					
-	return $arrUpdData;
-}
-
-/**************************************************************************************************************
- * 関数名	：lfErrorCheck
- * 処理内容	：入力項目のエラーチェックを行う
- * 引数1	：$arrData  ･･･ 入力データ
- * 戻り値	：エラー情報
- **************************************************************************************************************/
-function lfErrorCheck($array) {
-	global $objPage;
-	
-	$objErr = new SC_CheckError($array);
-	$objErr->doFunc(array("名称", "page_name", STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
-	$objErr->doFunc(array("URL", "url", STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
-
-	// URLチェック
-	if (substr(strrev(trim($array['url'])),0,1) == "/") {
-		$objErr->arrErr['url'] = "※ URLを正しく入力してください。<br />";
-	}
-	
-	$check_url = USER_URL . $array['url'] . ".php";
-	if( strlen($array['url']) > 0 && !ereg( "^https?://+($|[a-zA-Z0-9_~=&\?\.\/-])+$", $check_url ) ) {
-		$objErr->arrErr['url'] = "※ URLを正しく入力してください。<br />";
-	}
-
-	// 同一のURLが存在している場合にはエラー
-	if(!isset($objErr->arrErr['url']) and $array['url'] !== ''){
-		$arrChk = lfgetPageData(" url = ? " , array(USER_URL . $array['url'].".php"));
-
-		if (count($arrChk[0]) >= 1 and $arrChk[0]['page_id'] != $array['page_id']) {
-			$objErr->arrErr['url'] = '※ 同じURLのデータが存在しています。別のURLを付けてください。';
-		}
-	}
-	
-	return $objErr->arrErr;
-}
-
-/**************************************************************************************************************
- * 関数名	：lfCreateFile
- * 処理内容	：ファイルを作成する
- * 引数1	：$path･･･テンプレートファイルのパス
- * 戻り値	：なし
- **************************************************************************************************************/
-function lfCreateFile($path){
-	
-	// ディレクトリが存在していなければ作成する		
-	if (!is_dir(dirname($path))) {
-		mkdir(dirname($path));
-	}
-
-	// ファイル作成
-	$fp = fopen($path,"w");
-	fwrite($fp, $_POST['tpl_data']);
-	fclose($fp);
-}
-
-/**************************************************************************************************************
- * 関数名	：lfCreatePHPFile
- * 処理内容	：PHPファイルを作成する
- * 引数1	：$path･･･PHPファイルのパス
- * 戻り値	：なし
- **************************************************************************************************************/
-function lfCreatePHPFile($path){
-
-	// php保存先ディレクトリが存在していなければ作成する
-	if (!is_dir(dirname($path))) {
-		mkdir(dirname($path));
-	}
-	
-	// ベースとなるPHPファイルの読み込み
-	if (file_exists(USER_DEF_PHP)){
-		$php_data = file_get_contents(USER_DEF_PHP);		
-	}
-	
-	// require.phpの場所を書き換える
-	$php_data = str_replace("###require###", HTML_PATH . "require.php", $php_data);
-	
-	// phpファイルの作成
-	$fp = fopen($path,"w");
-	fwrite($fp, $php_data);
-	fclose($fp);
-}
+$objPage = new LC_Page_Admin_Design_MainEdit_Ex();
+$objPage->init();
+$objPage->process();
+register_shutdown_function(array($objPage, "destroy"));
+?>
