Changeset 17416 for branches/comu-ver2/data/class/pages/admin/design/LC_Page_Admin_Design_MainEdit.php
- Timestamp:
- 2008/07/10 14:29:55 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/comu-ver2/data/class/pages/admin/design/LC_Page_Admin_Design_MainEdit.php
r16741 r17416 111 111 112 112 // ディレクトリを画面表示用に編集 113 $arrPageData[0]['directory'] = str_replace( USER_DIR,'', $arrPageData[0]['php_dir']);113 $arrPageData[0]['directory'] = str_replace(USER_DIR, '', $arrPageData[0]['php_dir']); 114 114 115 115 $this->arrPageData = $arrPageData[0]; … … 133 133 $arrPreData = $this->objLayout->lfgetPageData("page_id = ?" , array($page_id)); 134 134 135 // tplファイルの削除 135 // tplファイルの削除 (XXX: 処理の意図が不明。存在していると都合が悪いファイル?) 136 136 $del_tpl = USER_PATH . "templates/" . $arrPreData[0]['filename'] . '.tpl'; 137 137 if (file_exists($del_tpl)){ … … 192 192 $this->objLayout->lfDelFile($arrPageData[0]); 193 193 // PHPファイル作成 194 $cre_php = USER_PATH . $_POST['url'] . ".php"; 195 $this->lfCreatePHPFile($cre_php); 194 $this->lfCreatePHPFile($_POST['url']); 196 195 } 197 196 198 197 // TPLファイル作成 199 198 $cre_tpl = USER_TEMPLATE_PATH . "/" . TEMPLATE_NAME . "/" . basename($_POST['url']) . '.tpl'; 200 201 199 $this->lfCreateFile($cre_tpl); 202 200 203 // 編集可能ページの場合にのみ処理を行う204 if ($ arrPageData[0]['edit_flg'] != 2) {205 // 新規作成した場合のために改にページIDを取得する206 $arrPageData = $this->objLayout->lfgetPageData(" url = ? " , array(USER_URL.$_POST['url'].".php"));201 // 新規作成の場合、 202 if ($page_id == '') { 203 // ページIDを取得する 204 $arrPageData = $this->objLayout->lfgetPageData(" url = ? AND page_id <> 0" , array(USER_DIR . $_POST['url'] . '.php')); 207 205 $page_id = $arrPageData[0]['page_id']; 208 206 } … … 210 208 array("page_id" => $page_id, 211 209 "msg" => "on"))); 212 } else{210 } else { 213 211 // エラーがあれば入力時のデータを表示する 214 212 $this->arrPageData = $_POST; 215 213 $this->arrPageData['header_chk'] = SC_Utils_Ex::sfChangeCheckBox(SC_Utils_Ex::sfChangeCheckBox($_POST['header_chk']), true); 216 214 $this->arrPageData['footer_chk'] = SC_Utils_Ex::sfChangeCheckBox(SC_Utils_Ex::sfChangeCheckBox($_POST['footer_chk']), true); 217 $this->arrPageData['directory'] = $_POST['url'];218 $this->arrPageData['filename'] = "";215 $this->arrPageData['directory'] = ''; 216 $this->arrPageData['filename'] = $_POST['url']; 219 217 } 220 218 } 221 219 222 220 // データ削除処理 ベースデータでなければファイルを削除 223 if ($_POST['mode'] == 'delete' and 221 if ($_POST['mode'] == 'delete' and !$this->objLayout->lfCheckBaseData($page_id)) { 224 222 $this->objLayout->lfDelPageData($_POST['page_id']); 225 223 $this->sendRedirect($this->getLocation("./main_edit.php")); … … 278 276 $sql .= " ) VALUES ( ?,?,?,?,?,?,?,?,now(),now() )"; 279 277 $sql .= " "; 280 } else{278 } else { 281 279 // データが存在してる場合にはアップデートを行う 282 280 // SQL生成 … … 315 313 if ($this->objLayout->lfCheckBaseData($arrData['page_id'])) { 316 314 $arrPageData = $this->objLayout->lfgetPageData( ' page_id = ? ' , array($arrData['page_id'])); 315 317 316 $name = $arrPageData[0]['page_name'] ; 318 317 $url = $arrPageData[0]['url']; 318 $php_dir = $arrPageData[0]['php_dir']; 319 319 $filename = $arrPageData[0]['filename']; 320 } else{320 } else { 321 321 $name = $arrData['page_name'] ; 322 $url = USER_URL.$arrData['url'].".php"; 323 $filename = basename($arrData['url']); 322 $url = USER_DIR . $arrData['url'] . '.php'; 323 $php_dir = dirname($url); 324 if ($php_dir == '.') { 325 $php_dir = ''; 326 } else { 327 $php_dir .= '/'; 328 } 329 $filename = basename($arrData['url']); // 拡張子を付加しない 324 330 } 325 331 326 332 // 更新データ配列の作成 327 333 $arrUpdData = array( 328 $name// 名称329 ,$url// URL330 ,$php_dir// PHPディレクトリ331 ,$tpl_dir// TPLディレクトリ332 ,$filename// ファイル名333 ,SC_Utils_Ex::sfChangeCheckBox($arrData['header_chk'])// ヘッダー使用334 ,SC_Utils_Ex::sfChangeCheckBox($arrData['footer_chk'])// フッター使用335 ,$_SERVER['HTTP_REFERER']// 更新URL336 334 $name // 名称 335 ,$url // URL 336 ,$php_dir // PHPディレクトリ 337 ,$tpl_dir // TPLディレクトリ 338 ,$filename // ファイル名 339 ,SC_Utils_Ex::sfChangeCheckBox($arrData['header_chk']) // ヘッダー使用 340 ,SC_Utils_Ex::sfChangeCheckBox($arrData['footer_chk']) // フッター使用 341 ,$_SERVER['HTTP_REFERER'] // 更新URL 342 ); 337 343 338 344 return $arrUpdData; … … 349 355 $objErr->doFunc(array("名称", "page_name", STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 350 356 $objErr->doFunc(array("URL", "url", STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 351 357 352 358 // URLチェック 353 if (substr(strrev(trim($array['url'])),0,1) == "/") { 359 $okUrl = true; 360 foreach (explode('/', $array['url']) as $url_part) { 361 if (!ereg( '^[a-zA-Z0-9:_~\.-]+$', $url_part)) { 362 $okUrl = false; 363 } 364 if ($url_part == '.' || $url_part == '..') { 365 $okUrl = false; 366 } 367 } 368 if (!$okUrl) { 354 369 $objErr->arrErr['url'] = "※ URLを正しく入力してください。<br />"; 355 370 } 356 357 $check_url = USER_URL . $array['url'] . ".php"; 358 if( strlen($array['url']) > 0 && !ereg( "^https?://+($|[a-zA-Z0-9:_~=&\?\.\/-])+$", $check_url ) ) { 359 $objErr->arrErr['url'] = "※ URLを正しく入力してください。<br />"; 360 } 361 371 362 372 // 同一のURLが存在している場合にはエラー 363 if(!isset($objErr->arrErr['url']) and $array['url'] !== ''){ 364 // URLのチェック(プレビュー用のレコードは含まない) 365 $arrChk = $this->objLayout->lfgetPageData(" url = ? AND page_id <> 0" , array(USER_URL . $array['url'].".php")); 366 367 if (count($arrChk[0]) >= 1 and $arrChk[0]['page_id'] != $array['page_id']) { 368 $objErr->arrErr['url'] = '※ 同じURLのデータが存在しています。別のURLを付けてください。<br />'; 369 } 370 } 371 373 $sqlWhere = ''; 374 $params = array(); 375 376 $sqlWhere .= ' (url = ? OR url = ?)'; 377 $params[] = USER_DIR . $array['url'] . '.php'; 378 $params[] = USER_URL . $array['url'] . '.php'; // 従来形式 379 380 // プレビュー用のレコードは除外 381 $sqlWhere .= ' AND page_id <> 0'; 382 383 // 変更の場合、自身のレコードは除外 384 if (strlen($array['page_id']) != 0) { 385 $sqlWhere .= ' AND page_id <> ?'; 386 $params[] = $array['page_id']; 387 } 388 389 $arrChk = $this->objLayout->lfgetPageData($sqlWhere , $params); 390 391 if (count($arrChk) >= 1) { 392 $objErr->arrErr['url'] = '※ 同じURLのデータが存在しています。別のURLを付けてください。<br />'; 393 } 394 372 395 return $objErr->arrErr; 373 396 } … … 398 421 * @return void 399 422 */ 400 function lfCreatePHPFile($path){ 401 423 function lfCreatePHPFile($url){ 424 425 $path = USER_PATH . $url . ".php"; 426 402 427 // php保存先ディレクトリが存在していなければ作成する 403 428 if (!is_dir(dirname($path))) { … … 411 436 412 437 // require.phpの場所を書き換える 413 $php_data = str_replace("###require###", HTML_PATH . "require.php", $php_data);438 $php_data = str_replace("###require###", str_repeat('../', substr_count($url, '/')) . '../require.php', $php_data); 414 439 415 440 // phpファイルの作成
Note: See TracChangeset
for help on using the changeset viewer.