- Timestamp:
- 2010/07/20 13:25:33 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/data/class/pages/admin/design/LC_Page_Admin_Design_MainEdit.php
r17653 r18758 3 3 * This file is part of EC-CUBE 4 4 * 5 * Copyright(c) 2000-20 07LOCKON CO.,LTD. All Rights Reserved.5 * Copyright(c) 2000-2010 LOCKON CO.,LTD. All Rights Reserved. 6 6 * 7 7 * http://www.lockon.co.jp/ … … 50 50 $this->tpl_subno = "main_edit"; 51 51 $this->tpl_mainno = "design"; 52 $this->tpl_subtitle = 'ページ詳細 設定';52 $this->tpl_subtitle = 'ページ詳細編集'; 53 53 } 54 54 … … 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)){ … … 193 193 $this->objLayout->lfDelFile($arrPageData[0]); 194 194 // PHPファイル作成 195 $cre_php = USER_PATH . $_POST['url'] . ".php"; 196 $this->lfCreatePHPFile($cre_php); 195 $this->lfCreatePHPFile($_POST['url']); 197 196 } 198 197 199 198 // TPLファイル作成 200 199 $cre_tpl = USER_TEMPLATE_PATH . "/" . TEMPLATE_NAME . "/" . basename($_POST['url']) . '.tpl'; 201 202 200 $this->lfCreateFile($cre_tpl); 203 201 204 // 編集可能ページの場合にのみ処理を行う205 if ($ arrPageData[0]['edit_flg'] != 2) {206 // 新規作成した場合のために改にページIDを取得する207 $arrPageData = $this->objLayout->lfgetPageData(" url = ? " , array(USER_URL.$_POST['url'].".php"));202 // 新規作成の場合、 203 if ($page_id == '') { 204 // ページIDを取得する 205 $arrPageData = $this->objLayout->lfgetPageData(" url = ? AND page_id <> 0" , array(USER_URL.$_POST['url'] . ".php")); 208 206 $page_id = $arrPageData[0]['page_id']; 209 207 } … … 212 210 "msg" => "on"))); 213 211 exit; 214 } else{212 } else { 215 213 // エラーがあれば入力時のデータを表示する 216 214 $this->arrPageData = $_POST; 217 215 $this->arrPageData['header_chk'] = SC_Utils_Ex::sfChangeCheckBox(SC_Utils_Ex::sfChangeCheckBox($_POST['header_chk']), true); 218 216 $this->arrPageData['footer_chk'] = SC_Utils_Ex::sfChangeCheckBox(SC_Utils_Ex::sfChangeCheckBox($_POST['footer_chk']), true); 219 $this->arrPageData['directory'] = $_POST['url'];220 $this->arrPageData['filename'] = "";217 $this->arrPageData['directory'] = ''; 218 $this->arrPageData['filename'] = $_POST['url']; 221 219 } 222 220 } 223 221 224 222 // データ削除処理 ベースデータでなければファイルを削除 225 if ($_POST['mode'] == 'delete' and 223 if ($_POST['mode'] == 'delete' and !$this->objLayout->lfCheckBaseData($page_id)) { 226 224 $this->objLayout->lfDelPageData($_POST['page_id']); 227 225 $this->sendRedirect($this->getLocation("./main_edit.php")); … … 281 279 $sql .= " ) VALUES ( ?,?,?,?,?,?,?,?,now(),now() )"; 282 280 $sql .= " "; 283 } else{281 } else { 284 282 // データが存在してる場合にはアップデートを行う 285 283 // SQL生成 … … 318 316 if ($this->objLayout->lfCheckBaseData($arrData['page_id'])) { 319 317 $arrPageData = $this->objLayout->lfgetPageData( ' page_id = ? ' , array($arrData['page_id'])); 318 320 319 $name = $arrPageData[0]['page_name'] ; 321 320 $url = $arrPageData[0]['url']; 321 $php_dir = $arrPageData[0]['php_dir']; 322 322 $filename = $arrPageData[0]['filename']; 323 } else{323 } else { 324 324 $name = $arrData['page_name'] ; 325 $url = USER_URL.$arrData['url'].".php"; 326 $filename = basename($arrData['url']); 325 $url = USER_DIR . $arrData['url'] . '.php'; 326 $php_dir = dirname($url); 327 if ($php_dir == '.') { 328 $php_dir = ''; 329 } else { 330 $php_dir .= '/'; 331 } 332 $tpl_dir = substr(TPL_DIR, strlen(URL_DIR)); 333 $filename = basename($arrData['url']); // 拡張子を付加しない 327 334 } 328 335 329 336 // 更新データ配列の作成 330 337 $arrUpdData = array( 331 $name// 名称332 ,$url// URL333 ,$php_dir// PHPディレクトリ334 ,$tpl_dir// TPLディレクトリ335 ,$filename// ファイル名336 ,SC_Utils_Ex::sfChangeCheckBox($arrData['header_chk'])// ヘッダー使用337 ,SC_Utils_Ex::sfChangeCheckBox($arrData['footer_chk'])// フッター使用338 ,$_SERVER['HTTP_REFERER']// 更新URL339 338 $name // 名称 339 ,$url // URL 340 ,$php_dir // PHPディレクトリ 341 ,$tpl_dir // TPLディレクトリ 342 ,$filename // ファイル名 343 ,SC_Utils_Ex::sfChangeCheckBox($arrData['header_chk']) // ヘッダー使用 344 ,SC_Utils_Ex::sfChangeCheckBox($arrData['footer_chk']) // フッター使用 345 ,$_SERVER['HTTP_REFERER'] // 更新URL 346 ); 340 347 341 348 return $arrUpdData; … … 354 361 355 362 // URLチェック 356 if (substr(strrev(trim($array['url'])),0,1) == "/") { 363 $okUrl = true; 364 foreach (explode('/', $array['url']) as $url_part) { 365 if (!ereg( '^[a-zA-Z0-9:_~\.-]+$', $url_part)) { 366 $okUrl = false; 367 } 368 if ($url_part == '.' || $url_part == '..') { 369 $okUrl = false; 370 } 371 } 372 if (!$okUrl) { 357 373 $objErr->arrErr['url'] = "※ URLを正しく入力してください。<br />"; 358 374 } 359 360 $check_url = USER_URL . $array['url'] . ".php"; 361 if( strlen($array['url']) > 0 && !ereg( "^https?://+($|[a-zA-Z0-9:_~=&\?\.\/-])+$", $check_url ) ) { 362 $objErr->arrErr['url'] = "※ URLを正しく入力してください。<br />"; 363 } 364 375 365 376 // 同一のURLが存在している場合にはエラー 366 if(!isset($objErr->arrErr['url']) and $array['url'] !== ''){ 367 // URLのチェック(プレビュー用のレコードは含まない) 368 $arrChk = $this->objLayout->lfgetPageData(" url = ? AND page_id <> 0" , array(USER_URL . $array['url'].".php")); 369 370 if (count($arrChk[0]) >= 1 and $arrChk[0]['page_id'] != $array['page_id']) { 371 $objErr->arrErr['url'] = '※ 同じURLのデータが存在しています。別のURLを付けてください。<br />'; 372 } 377 $sqlWhere = ''; 378 $params = array(); 379 380 $sqlWhere .= ' (url = ? OR url = ?)'; 381 $params[] = USER_DIR . $array['url'] . '.php'; 382 $params[] = USER_URL . $array['url'] . '.php'; // 従来形式 383 384 // プレビュー用のレコードは除外 385 $sqlWhere .= ' AND page_id <> 0'; 386 387 // 変更の場合、自身のレコードは除外 388 if (strlen($array['page_id']) != 0) { 389 $sqlWhere .= ' AND page_id <> ?'; 390 $params[] = $array['page_id']; 391 } 392 393 $arrChk = $this->objLayout->lfgetPageData($sqlWhere , $params); 394 395 if (count($arrChk) >= 1) { 396 $objErr->arrErr['url'] = '※ 同じURLのデータが存在しています。別のURを付けてください。<br />'; 373 397 } 374 398 … … 401 425 * @return void 402 426 */ 403 function lfCreatePHPFile($path){ 404 427 function lfCreatePHPFile($url){ 428 429 $path = USER_PATH . $url . ".php"; 430 405 431 // php保存先ディレクトリが存在していなければ作成する 406 432 if (!is_dir(dirname($path))) { … … 414 440 415 441 // require.phpの場所を書き換える 416 $php_data = str_replace("###require###", HTML_PATH . "require.php", $php_data);442 $php_data = str_replace("###require###", str_repeat('../', substr_count($url, '/')) . '../require.php', $php_data); 417 443 418 444 // phpファイルの作成
Note: See TracChangeset
for help on using the changeset viewer.