Changeset 18606 for branches/version-2_4-dev/data/class/pages
- Timestamp:
- 2010/03/10 15:26:23 (16 years ago)
- Location:
- branches/version-2_4-dev/data/class/pages
- Files:
-
- 2 edited
-
LC_Page_Sitemap.php (modified) (7 diffs)
-
admin/design/LC_Page_Admin_Design_MainEdit.php (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_4-dev/data/class/pages/LC_Page_Sitemap.php
r18573 r18606 105 105 print("<urlset xmlns='http://www.sitemaps.org/schemas/sitemap/0.9'>\n"); 106 106 107 // 静的なページを処理108 foreach($this->staticURL as $url) {109 $this->createSitemap($url, '', 'daily', 1.0);110 }111 112 107 // TOPページを処理 113 108 $topPage = $this->getTopPage($this->arrPageList); … … 116 111 'daily', 1.0); 117 112 113 // 静的なページを処理 114 foreach ($this->staticURL as $url) { 115 $this->createSitemap($url, '', 'daily', 1.0); 116 } 117 118 118 // 編集可能ページを処理 119 119 $editablePages = $this->getEditablePage($this->arrPageList); 120 foreach ($editablePages as $editablePage) {120 foreach ($editablePages as $editablePage) { 121 121 $this->createSitemap($editablePage['url'], 122 122 $this->date2W3CDatetime($editablePage['update_date'])); … … 125 125 // 商品一覧ページを処理 126 126 $products = $this->getAllProducts(); 127 foreach ($products as $product) {127 foreach ($products as $product) { 128 128 $this->createSitemap($product['url'], '', 'daily'); 129 129 } 130 130 $mobileProducts = $this->getAllProducts(true); 131 foreach ($mobileProducts as $mobileProduct) {131 foreach ($mobileProducts as $mobileProduct) { 132 132 $this->createSitemap($mobileProduct['url'], '', 'daily'); 133 133 } … … 135 135 // 商品詳細ページを処理 136 136 $details = $this->getAllDetail(); 137 foreach ($details as $detail) {137 foreach ($details as $detail) { 138 138 $this->createSitemap($detail['url'], 139 139 $this->date2W3CDatetime($detail['update_date'])); 140 140 } 141 141 $mobileDetails = $this->getAllDetail(true); 142 foreach ($mobileDetails as $mobileDetail) {142 foreach ($mobileDetails as $mobileDetail) { 143 143 $this->createSitemap($mobileDetail['url'], 144 144 $this->date2W3CDatetime($mobileDetail['update_date'])); … … 192 192 function getTopPage($pageData) { 193 193 $arrRet = array(); 194 foreach ($pageData as $page) {194 foreach ($pageData as $page) { 195 195 if ($page['page_id'] == "1") { 196 $page['url'] = SITE_URL . $page['url'];197 196 $arrRet[0] = $page; 198 197 return $arrRet; … … 209 208 function getEditablePage($pageData) { 210 209 $arrRet = array(); 211 $i = 0; 212 foreach($pageData as $page) { 210 foreach ($pageData as $page) { 213 211 if ($page['page_id'] > 4) { 214 $arrRet[$i] = $page; 215 $i++; 212 $arrRet[] = $page; 216 213 } 217 214 } … … 310 307 $sql .= " ORDER BY page_id"; 311 308 312 return $objDBConn->getAll($sql, $arrVal); 309 $pageData = $objDBConn->getAll($sql, $arrVal); 310 // URL にプロトコルの記載が無い場合、SITE_URL を前置する。 311 foreach (array_keys($pageData) as $key) { 312 $page =& $pageData[$key]; 313 if (!preg_match('|^https?://|i', $page['url'])) { 314 $page['url'] = SITE_URL . $page['url']; 315 } 316 } 317 unset($page); 318 319 return $pageData; 313 320 } 314 321 -
branches/version-2_4-dev/data/class/pages/admin/design/LC_Page_Admin_Design_MainEdit.php
r18584 r18606 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 !$this->objLayout->lfCheckBaseData($page_id)) {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"; 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 } 326 332 $tpl_dir = substr(TPL_DIR, strlen(URL_DIR)); 327 $filename = basename($arrData['url']); 333 $filename = basename($arrData['url']); // 拡張子を付加しない 328 334 } 329 335 330 336 // 更新データ配列の作成 331 337 $arrUpdData = array( 332 $name// 名称333 ,$url// URL334 ,$php_dir// PHPディレクトリ335 ,$tpl_dir// TPLディレクトリ336 ,$filename// ファイル名337 ,SC_Utils_Ex::sfChangeCheckBox($arrData['header_chk'])// ヘッダー使用338 ,SC_Utils_Ex::sfChangeCheckBox($arrData['footer_chk'])// フッター使用339 ,$_SERVER['HTTP_REFERER']// 更新URL340 );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 ); 341 347 342 348 return $arrUpdData; … … 355 361 356 362 // URLチェック 357 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) { 358 373 $objErr->arrErr['url'] = "※ URLを正しく入力してください。<br />"; 359 374 } 360 361 $check_url = USER_URL . $array['url'] . ".php"; 362 if( strlen($array['url']) > 0 && !ereg( "^https?://+($|[a-zA-Z0-9:_~=&\?\.\/-])+$", $check_url ) ) { 363 $objErr->arrErr['url'] = "※ URLを正しく入力してください。<br />"; 364 } 365 375 366 376 // 同一のURLが存在している場合にはエラー 367 if(!isset($objErr->arrErr['url']) and $array['url'] !== ''){ 368 // URLのチェック(プレビュー用のレコードは含まない) 369 $arrChk = $this->objLayout->lfgetPageData(" url = ? AND page_id <> 0" , array(USER_URL . $array['url'].".php")); 370 371 if (count($arrChk[0]) >= 1 and $arrChk[0]['page_id'] != $array['page_id']) { 372 $objErr->arrErr['url'] = '※ 同じURLのデータが存在しています。別のURLを付けてください。<br />'; 373 } 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 />'; 374 397 } 375 398 … … 402 425 * @return void 403 426 */ 404 function lfCreatePHPFile($path){ 405 427 function lfCreatePHPFile($url){ 428 429 $path = USER_PATH . $url . ".php"; 430 406 431 // php保存先ディレクトリが存在していなければ作成する 407 432 if (!is_dir(dirname($path))) { … … 415 440 416 441 // require.phpの場所を書き換える 417 $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); 418 443 419 444 // phpファイルの作成
Note: See TracChangeset
for help on using the changeset viewer.
