Changeset 15682
- Timestamp:
- 2007/09/12 11:32:15 (16 years ago)
- Location:
- branches/feature-module-update
- Files:
-
- 2 added
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/feature-module-update/html/admin/design/main_edit.php
r15532 r15682 5 5 * http://www.lockon.co.jp/ 6 6 */ 7 8 // {{{ requires 7 9 require_once("../../require.php"); 8 require_once( DATA_PATH . "include/page_layout.inc");10 require_once(CLASS_PATH . "page_extends/admin/design/LC_Page_Admin_Design_MainEdit_Ex.php"); 9 11 10 class LC_Page { 11 var $arrForm; 12 var $arrHidden; 12 // }}} 13 // {{{ generate page 13 14 14 function LC_Page() { 15 $this->tpl_mainpage = 'design/main_edit.tpl'; 16 $this->tpl_subnavi = 'design/subnavi.tpl'; 17 $this->user_URL = USER_URL; 18 $this->text_row = 13; 19 $this->tpl_subno = "main_edit"; 20 $this->tpl_mainno = "design"; 21 $this->tpl_subtitle = 'ページ詳細設定'; 22 } 23 } 24 $objPage = new LC_Page(); 25 $objView = new SC_AdminView(); 26 27 // 認証可否の判定 28 $objSess = new SC_Session(); 29 sfIsSuccess($objSess); 30 31 // ページ一覧を取得 32 $objPage->arrPageList = lfgetPageData(); 33 34 // ブロックIDを取得 35 if (isset($_POST['page_id'])) { 36 $page_id = $_POST['page_id']; 37 }else if ($_GET['page_id']){ 38 $page_id = $_GET['page_id']; 39 }else{ 40 $page_id = ''; 41 } 42 43 $objPage->page_id = $page_id; 44 45 // メッセージ表示 46 if ($_GET['msg'] == "on"){ 47 $objPage->tpl_onload="alert('登録が完了しました。');"; 48 } 49 50 // page_id が指定されている場合にはテンプレートデータの取得 51 if (is_numeric($page_id) and $page_id != '') { 52 $arrPageData = lfgetPageData(" page_id = ? " , array($page_id)); 53 54 if ($arrPageData[0]['tpl_dir'] === "") { 55 $objPage->arrErr['page_id_err'] = "※ 指定されたページは編集できません。"; 56 // 画面の表示 57 $objView->assignobj($objPage); 58 $objView->display(MAIN_FRAME); 59 exit; 60 } 61 62 // テンプレートファイルが存在していれば読み込む 63 $tpl_file = HTML_PATH . $arrPageData[0]['tpl_dir'] . $arrPageData[0]['filename'] . ".tpl"; 64 if (file_exists($tpl_file)){ 65 $arrPageData[0]['tpl_data'] = file_get_contents($tpl_file); 66 } 67 68 // チェックボックスの値変更 69 $arrPageData[0]['header_chk'] = sfChangeCheckBox($arrPageData[0]['header_chk'], true); 70 $arrPageData[0]['footer_chk'] = sfChangeCheckBox($arrPageData[0]['footer_chk'], true); 71 72 // ディレクトリを画面表示用に編集 73 $arrPageData[0]['directory'] = str_replace( USER_DIR,'', $arrPageData[0]['php_dir']); 74 75 $objPage->arrPageData = $arrPageData[0]; 76 } 77 78 // プレビュー処理 79 if ($_POST['mode'] == 'preview') { 80 81 $page_id_old = $page_id; 82 $page_id = "0"; 83 $url = uniqid(""); 84 85 $_POST['page_id'] = $page_id; 86 $_POST['url'] = $url; 87 88 $arrPreData = lfgetPageData(" page_id = ? " , array($page_id)); 89 90 // tplファイルの削除 91 $del_tpl = USER_PATH . "templates/" . $arrPreData[0]['filename'] . '.tpl'; 92 if (file_exists($del_tpl)){ 93 unlink($del_tpl); 94 } 95 96 // DBへデータを更新する 97 lfEntryPageData($_POST); 98 99 // TPLファイル作成 100 $cre_tpl = USER_PATH . "templates/" . $url . '.tpl'; 101 lfCreateFile($cre_tpl); 102 103 // blocposition を削除 104 $objDBConn = new SC_DbConn; // DB操作オブジェクト 105 $sql = 'delete from dtb_blocposition where page_id = 0'; 106 $ret = $objDBConn->query($sql); 107 108 if ($page_id_old != "") { 109 // 登録データを取得 110 $sql = "SELECT 0, target_id, bloc_id, bloc_row FROM dtb_blocposition WHERE page_id = ?"; 111 $ret = $objDBConn->getAll($sql,array($page_id_old)); 112 113 if (count($ret) > 0) { 114 115 // blocposition を複製 116 $sql = " insert into dtb_blocposition ("; 117 $sql .= " page_id,"; 118 $sql .= " target_id,"; 119 $sql .= " bloc_id,"; 120 $sql .= " bloc_row"; 121 $sql .= " )values(?, ?, ?, ?)"; 122 123 // 取得件数文INSERT実行 124 foreach($ret as $key => $val){ 125 $ret = $objDBConn->query($sql,$val); 126 } 127 } 128 129 } 130 131 $_SESSION['preview'] = "ON"; 132 133 header("location: " . URL_DIR . "preview/index.php"); 134 } 135 136 // データ登録処理 137 if ($_POST['mode'] == 'confirm') { 138 139 // エラーチェック 140 $objPage->arrErr = lfErrorCheck($_POST); 141 142 // エラーがなければ更新処理を行う 143 if (count($objPage->arrErr) == 0) { 144 145 // DBへデータを更新する 146 lfEntryPageData($_POST); 147 148 // ベースデータでなければファイルを削除し、PHPファイルを作成する 149 if (!lfCheckBaseData($page_id)) { 150 // ファイル削除 151 lfDelFile($arrPageData[0]); 152 153 // PHPファイル作成 154 $cre_php = USER_PATH . $_POST['url'] . ".php"; 155 lfCreatePHPFile($cre_php); 156 } 157 158 // TPLファイル作成 159 $cre_tpl = dirname(USER_PATH . "templates/" . $_POST['url']) . "/" . basename($_POST['url']) . '.tpl'; 160 161 lfCreateFile($cre_tpl); 162 163 // 編集可能ページの場合にのみ処理を行う 164 if ($arrPageData[0]['edit_flg'] != 2) { 165 // 新規作成した場合のために改にページIDを取得する 166 $arrPageData = lfgetPageData(" url = ? " , array(USER_URL.$_POST['url'].".php")); 167 $page_id = $arrPageData[0]['page_id']; 168 } 169 170 header("location: ./main_edit.php?page_id=$page_id&msg=on"); 171 }else{ 172 // エラーがあれば入力時のデータを表示する 173 $objPage->arrPageData = $_POST; 174 $objPage->arrPageData['header_chk'] = sfChangeCheckBox(sfChangeCheckBox($_POST['header_chk']), true); 175 $objPage->arrPageData['footer_chk'] = sfChangeCheckBox(sfChangeCheckBox($_POST['footer_chk']), true); 176 $objPage->arrPageData['directory'] = $_POST['url']; 177 $objPage->arrPageData['filename'] = ""; 178 } 179 } 180 181 // データ削除処理 ベースデータでなければファイルを削除 182 if ($_POST['mode'] == 'delete' and !lfCheckBaseData($page_id)) { 183 lfDelPageData($_POST['page_id']); 184 } 185 186 // 画面の表示 187 $objView->assignobj($objPage); 188 $objView->display(MAIN_FRAME); 189 190 //--------------------------------------------------------------------------------------------------------------------------------------------------------- 191 /************************************************************************************************************** 192 * 関数名 :lfEntryPageData 193 * 処理内容 :ブロック情報を更新する 194 * 引数1 :$arrData ・・・ 更新データ 195 * 戻り値 :更新結果 196 **************************************************************************************************************/ 197 function lfEntryPageData($arrData){ 198 $objDBConn = new SC_DbConn; // DB操作オブジェクト 199 $sql = ""; // データ更新SQL生成用 200 $ret = ""; // データ更新結果格納用 201 $arrUpdData = array(); // 更新データ生成用 202 $arrChk = array(); // 排他チェック用 203 204 // 更新データ生成 205 $arrUpdData = lfGetUpdData($arrData); 206 207 // データが存在しているかチェックを行う 208 if($arrData['page_id'] !== ''){ 209 $arrChk = lfgetPageData(" page_id = ?", array($arrData['page_id'])); 210 } 211 212 // page_id が空 若しくは データが存在していない場合にはINSERTを行う 213 if ($arrData['page_id'] === '' or !isset($arrChk[0])) { 214 // SQL生成 215 $sql = " INSERT INTO dtb_pagelayout "; 216 $sql .= " ( "; 217 $sql .= " page_name"; 218 $sql .= " ,url"; 219 $sql .= " ,php_dir"; 220 $sql .= " ,tpl_dir"; 221 $sql .= " ,filename"; 222 $sql .= " ,header_chk"; 223 $sql .= " ,footer_chk"; 224 $sql .= " ,update_url"; 225 $sql .= " ,create_date"; 226 $sql .= " ,update_date"; 227 $sql .= " ) VALUES ( ?,?,?,?,?,?,?,?,now(),now() )"; 228 $sql .= " "; 229 }else{ 230 // データが存在してる場合にはアップデートを行う 231 // SQL生成 232 $sql = " UPDATE dtb_pagelayout "; 233 $sql .= " SET"; 234 $sql .= " page_name = ? "; 235 $sql .= " ,url = ? "; 236 $sql .= " ,php_dir = ? "; 237 $sql .= " ,tpl_dir = ? "; 238 $sql .= " ,filename = ? "; 239 $sql .= " ,header_chk = ? "; 240 $sql .= " ,footer_chk = ? "; 241 $sql .= " ,update_url = ? "; 242 $sql .= " ,update_date = now() "; 243 $sql .= " WHERE page_id = ?"; 244 $sql .= " "; 245 246 // 更新データにブロックIDを追加 247 array_push($arrUpdData, $arrData['page_id']); 248 } 249 250 // SQL実行 251 $ret = $objDBConn->query($sql,$arrUpdData); 252 253 return $ret; 254 } 255 256 /************************************************************************************************************** 257 * 関数名 :lfGetUpdData 258 * 処理内容 :DBへ更新を行うデータを生成する 259 * 引数1 :$arrData ・・・ 更新データ 260 * 戻り値 :更新データ 261 **************************************************************************************************************/ 262 function lfGetUpdData($arrData){ 263 264 // ベースデータの場合には変更しない。 265 if (lfCheckBaseData($arrData['page_id'])) { 266 $arrPageData = lfgetPageData( ' page_id = ? ' , array($arrData['page_id'])); 267 268 $name = $arrPageData[0]['page_name'] ; 269 $url = $arrPageData[0]['url']; 270 $php_dir = $arrPageData[0]['php_dir']; 271 $tpl_dir = $arrPageData[0]['tpl_dir']; 272 $filename = $arrPageData[0]['filename']; 273 }else{ 274 $name = $arrData['page_name'] ; 275 $url = USER_URL.$arrData['url'].".php"; 276 $php_dir = dirname(USER_DIR.$arrData['url'])."/"; 277 $tpl_dir = dirname(USER_DIR."templates/".$arrData['url'])."/"; 278 $filename = basename($arrData['url']); 279 } 280 281 // 更新データ配列の作成 282 $arrUpdData = array( 283 $name // 名称 284 ,$url // URL 285 ,$php_dir // PHPディレクトリ 286 ,$tpl_dir // TPLディレクトリ 287 ,$filename // ファイル名 288 ,sfChangeCheckBox($arrData['header_chk']) // ヘッダー使用 289 ,sfChangeCheckBox($arrData['footer_chk']) // フッター使用 290 ,$_SERVER['HTTP_REFERER'] // 更新URL 291 ); 292 293 return $arrUpdData; 294 } 295 296 /************************************************************************************************************** 297 * 関数名 :lfErrorCheck 298 * 処理内容 :入力項目のエラーチェックを行う 299 * 引数1 :$arrData ・・・ 入力データ 300 * 戻り値 :エラー情報 301 **************************************************************************************************************/ 302 function lfErrorCheck($array) { 303 global $objPage; 304 305 $objErr = new SC_CheckError($array); 306 $objErr->doFunc(array("名称", "page_name", STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 307 $objErr->doFunc(array("URL", "url", STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 308 309 // URLチェック 310 if (substr(strrev(trim($array['url'])),0,1) == "/") { 311 $objErr->arrErr['url'] = "※ URLを正しく入力してください。<br />"; 312 } 313 314 $check_url = USER_URL . $array['url'] . ".php"; 315 if( strlen($array['url']) > 0 && !ereg( "^https?://+($|[a-zA-Z0-9_~=&\?\.\/-])+$", $check_url ) ) { 316 $objErr->arrErr['url'] = "※ URLを正しく入力してください。<br />"; 317 } 318 319 // 同一のURLが存在している場合にはエラー 320 if(!isset($objErr->arrErr['url']) and $array['url'] !== ''){ 321 $arrChk = lfgetPageData(" url = ? " , array(USER_URL . $array['url'].".php")); 322 323 if (count($arrChk[0]) >= 1 and $arrChk[0]['page_id'] != $array['page_id']) { 324 $objErr->arrErr['url'] = '※ 同じURLのデータが存在しています。別のURLを付けてください。'; 325 } 326 } 327 328 return $objErr->arrErr; 329 } 330 331 /************************************************************************************************************** 332 * 関数名 :lfCreateFile 333 * 処理内容 :ファイルを作成する 334 * 引数1 :$path・・・テンプレートファイルのパス 335 * 戻り値 :なし 336 **************************************************************************************************************/ 337 function lfCreateFile($path){ 338 339 // ディレクトリが存在していなければ作成する 340 if (!is_dir(dirname($path))) { 341 mkdir(dirname($path)); 342 } 343 344 // ファイル作成 345 $fp = fopen($path,"w"); 346 fwrite($fp, $_POST['tpl_data']); 347 fclose($fp); 348 } 349 350 /************************************************************************************************************** 351 * 関数名 :lfCreatePHPFile 352 * 処理内容 :PHPファイルを作成する 353 * 引数1 :$path・・・PHPファイルのパス 354 * 戻り値 :なし 355 **************************************************************************************************************/ 356 function lfCreatePHPFile($path){ 357 358 // php保存先ディレクトリが存在していなければ作成する 359 if (!is_dir(dirname($path))) { 360 mkdir(dirname($path)); 361 } 362 363 // ベースとなるPHPファイルの読み込み 364 if (file_exists(USER_DEF_PHP)){ 365 $php_data = file_get_contents(USER_DEF_PHP); 366 } 367 368 // require.phpの場所を書き換える 369 $php_data = str_replace("###require###", HTML_PATH . "require.php", $php_data); 370 371 // phpファイルの作成 372 $fp = fopen($path,"w"); 373 fwrite($fp, $php_data); 374 fclose($fp); 375 } 15 $objPage = new LC_Page_Admin_Design_MainEdit_Ex(); 16 $objPage->init(); 17 $objPage->process(); 18 register_shutdown_function(array($objPage, "destroy")); 19 ?>
Note: See TracChangeset
for help on using the changeset viewer.