- Timestamp:
- 2013/09/19 11:49:03 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_13-dev/data/class/helper/SC_Helper_PageLayout.php
r23124 r23230 23 23 24 24 /** 25 * Webãã¼ã¸ã®ã¬ã¤ã¢ã¦ãæ 26 å ±ãå¶å¾¡ãããã«ãã¼ã¯ã©ã¹. 25 * Webページのレイアウト情報を制御するヘルパークラス. 27 26 * 28 27 * @package Helper … … 33 32 { 34 33 /** 35 * ãã¼ã¸ã®ã¬ã¤ã¢ã¦ãæ 36 å ±ãåå¾ã, è¨å®ãã. 37 * 38 * ç¾å¨ã® URL ã«å¿ãããã¼ã¸ã®ã¬ã¤ã¢ã¦ãæ 39 å ±ãåå¾ã, LC_Page ã¤ã³ã¹ã¿ã³ã¹ã« 40 * è¨å®ãã. 41 * 42 * @access public 43 * @param LC_Page $objPage LC_Page ã¤ã³ã¹ã¿ã³ã¹ 44 * @param boolean $preview ãã¬ãã¥ã¼è¡¨ç¤ºã®å ´å true 45 * @param string $url ãã¼ã¸ã®URL($_SERVER['SCRIPT_NAME'] ã®æ 46 å ±) 47 * @param integer $device_type_id 端æ«ç¨®å¥ID 34 * ページのレイアウト情報を取得し, 設定する. 35 * 36 * 現在の URL に応じたページのレイアウト情報を取得し, LC_Page インスタンスに 37 * 設定する. 38 * 39 * @access public 40 * @param LC_Page $objPage LC_Page インスタンス 41 * @param boolean $preview プレビュー表示の場合 true 42 * @param string $url ページのURL($_SERVER['SCRIPT_NAME'] の情報) 43 * @param integer $device_type_id 端末種別ID 48 44 * @return void 49 45 */ 50 46 public function sfGetPageLayout(&$objPage, $preview = false, $url = '', $device_type_id = DEVICE_TYPE_PC) 51 47 { 52 // URLãå 53 ã«ãã¼ã¸æ 54 å ±ãåå¾ 48 // URLを元にページ情報を取得 55 49 if ($preview === false) { 56 50 $url = preg_replace('|^' . preg_quote(ROOT_URLPATH) . '|', '', $url); 57 51 $arrPageData = $this->getPageProperties($device_type_id, null, 'url = ?', array($url)); 58 52 } 59 // ãã¬ãã¥ã¼ã®å ´åã¯, ãã¬ãã¥ã¼ç¨ã®ãã¼ã¿ãåå¾53 // プレビューの場合は, プレビュー用のデータを取得 60 54 else { 61 55 $arrPageData = $this->getPageProperties($device_type_id, 0); … … 63 57 64 58 if (empty($arrPageData[0])) { 65 trigger_error('ãã¼ã¸æ 66 å ±ãåå¾ã§ãã¾ããã§ããã', E_USER_ERROR); 59 trigger_error('ページ情報を取得できませんでした。', E_USER_WARNING); 67 60 } 68 61 … … 70 63 71 64 if (!file_exists($objPage->tpl_mainpage)) { 72 $msg = ' ã¡ã¤ã³é¨ã®ãã³ãã¬ã¼ããåå¨ãã¾ããã[' . $objPage->tpl_mainpage . ']';73 trigger_error($msg, E_USER_ ERROR);65 $msg = 'メイン部のテンプレートが存在しません。[' . $objPage->tpl_mainpage . ']'; 66 trigger_error($msg, E_USER_WARNING); 74 67 } 75 68 … … 80 73 } 81 74 82 // ãã¼ã¸ã¿ã¤ãã«ãè¨å®75 // ページタイトルを設定 83 76 if (SC_Utils_Ex::isBlank($objPage->tpl_title)) { 84 77 $objPage->tpl_title = $objPage->arrPageLayout['page_name']; 85 78 } 86 79 87 // 該å½ãã¼ã¸ã®ãããã¯ãåå¾ã, é 88 ç½®ãã 80 // 該当ページのブロックを取得し, 配置する 89 81 $masterData = new SC_DB_MasterData_Ex(); 90 82 $arrTarget = $masterData->getMasterData('mtb_target'); 91 83 $arrBlocs = $this->getBlocPositions($device_type_id, $objPage->arrPageLayout['page_id']); 92 // ç¡å¹ãªãã©ã°ã¤ã³ã®ãããã¯ãåãé¤ã.84 // 無効なプラグインのブロックを取り除く. 93 85 $objPlugin = SC_Helper_Plugin_Ex::getSingletonInstance(); 94 86 $arrBlocs = $objPlugin->getEnableBlocs($arrBlocs); 95 // php_path, tpl_path ãåå¨ãããã®ã, åã¿ã¼ã²ããã«é 96 ç½® 87 // php_path, tpl_path が存在するものを, 各ターゲットに配置 97 88 foreach ($arrTarget as $target_id => $value) { 98 89 foreach ($arrBlocs as $arrBloc) { … … 104 95 $objPage->arrPageLayout[$arrTarget[$target_id]][] = $arrBloc; 105 96 } else { 106 $error = " ãããã¯ãè¦ã¤ããã¾ãã\n"97 $error = "ブロックが見つかりません\n" 107 98 . 'tpl_path: ' . $arrBloc['tpl_path'] . "\n" 108 99 . 'php_path: ' . $arrBloc['php_path']; … … 111 102 } 112 103 } 113 // ã«ã©ã æ°ãåå¾ãã104 // カラム数を取得する 114 105 $objPage->tpl_column_num = $this->getColumnNum($objPage->arrPageLayout); 115 106 } 116 107 117 108 /** 118 * ãã¼ã¸ã®å±æ§ãåå¾ãã. 119 * 120 * ãã®é¢æ°ã¯, dtb_pagelayout ã®æ 121 å ±ãæ¤ç´¢ãã. 122 * $device_type_id ã¯å¿ 123 é . ããã©ã«ãå¤ã¯ DEVICE_TYPE_PC. 124 * $page_id ã null ã®å ´åã¯, $page_id ã 0 以å¤ã®ãã®ãæ¤ç´¢ãã. 125 * 126 * @access public 127 * @param integer $device_type_id 端æ«ç¨®å¥ID 128 * @param integer $page_id ãã¼ã¸ID; null ã®å ´åã¯, 0 以å¤ãæ¤ç´¢ãã. 129 * @param string $where 追å ã®æ¤ç´¢æ¡ä»¶ 130 * @param array $arrParams 追å ã®æ¤ç´¢ãã©ã¡ã¼ã¿ã¼ 131 * @return array ãã¼ã¸å±æ§ã®é 132 å 109 * ページの属性を取得する. 110 * 111 * この関数は, dtb_pagelayout の情報を検索する. 112 * $device_type_id は必須. デフォルト値は DEVICE_TYPE_PC. 113 * $page_id が null の場合は, $page_id が 0 以外のものを検索する. 114 * 115 * @access public 116 * @param integer $device_type_id 端末種別ID 117 * @param integer $page_id ページID; null の場合は, 0 以外を検索する. 118 * @param string $where 追加の検索条件 119 * @param array $arrParams 追加の検索パラメーター 120 * @return array ページ属性の配列 133 121 */ 134 122 public function getPageProperties($device_type_id = DEVICE_TYPE_PC, $page_id = null, $where = '', $arrParams = array()) … … 149 137 150 138 /** 151 * ãããã¯æ 152 å ±ãåå¾ãã. 153 * 154 * @access public 155 * @param integer $device_type_id 端æ«ç¨®å¥ID 156 * @param string $where 追å ã®æ¤ç´¢æ¡ä»¶ 157 * @param array $arrParams 追å ã®æ¤ç´¢ãã©ã¡ã¼ã¿ã¼ 158 * @param boolean $has_realpath php_path, tpl_path ã®çµ¶å¯¾ãã¹ãå«ããå ´å true 159 * @return array ãããã¯æ 160 å ±ã®é 161 å 139 * ブロック情報を取得する. 140 * 141 * @access public 142 * @param integer $device_type_id 端末種別ID 143 * @param string $where 追加の検索条件 144 * @param array $arrParams 追加の検索パラメーター 145 * @param boolean $has_realpath php_path, tpl_path の絶対パスを含める場合 true 146 * @return array ブロック情報の配列 162 147 */ 163 148 public function getBlocs($device_type_id = DEVICE_TYPE_PC, $where = '', $arrParams = array(), $has_realpath = true) … … 173 158 174 159 /** 175 * ãããã¯é 176 ç½®æ 177 å ±ãåå¾ãã. 178 * 179 * @access public 180 * @param integer $device_type_id 端æ«ç¨®å¥ID 181 * @param integer $page_id ãã¼ã¸ID 182 * @param boolean $has_realpath php_path, tpl_path ã®çµ¶å¯¾ãã¹ãå«ããå ´å true 183 * @return array é 184 ç½®æ 185 å ±ãå«ãããããã¯ã®é 186 å 160 * ブロック配置情報を取得する. 161 * 162 * @access public 163 * @param integer $device_type_id 端末種別ID 164 * @param integer $page_id ページID 165 * @param boolean $has_realpath php_path, tpl_path の絶対パスを含める場合 true 166 * @return array 配置情報を含めたブロックの配列 187 167 */ 188 168 public function getBlocPositions($device_type_id, $page_id, $has_realpath = true) … … 203 183 } 204 184 205 //å 206 ¨ãã¼ã¸è¨å®ã¨åãã¼ã¸ã®ãããã¯ã®éè¤ãåé¤ 185 //全ページ設定と各ページのブロックの重複を削除 207 186 $arrUniqBlocIds = array(); 208 187 foreach ($arrBlocs as $index => $arrBloc) { … … 221 200 222 201 /** 223 * ãã¼ã¸æ 224 å ±ãåé¤ãã. 225 * 226 * XXX ãã¡ã¤ã«ã確å®ã«åé¤ãããã©ããã®ãã§ã㯠227 * 228 * @access public 229 * @param integer $page_id ãã¼ã¸ID 230 * @param integer $device_type_id 端æ«ç¨®å¥ID 231 * @return integer å餿° 202 * ページ情報を削除する. 203 * 204 * XXX ファイルを確実に削除したかどうかのチェック 205 * 206 * @access public 207 * @param integer $page_id ページID 208 * @param integer $device_type_id 端末種別ID 209 * @return integer 削除数 232 210 */ 233 211 public function lfDelPageData($page_id, $device_type_id = DEVICE_TYPE_PC) 234 212 { 235 213 $objQuery =& SC_Query_Ex::getSingletonInstance(); 236 // page_id ã空ã§ãªãå ´åã«ã¯deleteãå®è¡214 // page_id が空でない場合にはdeleteを実行 237 215 if ($page_id != '') { 238 216 $arrPageData = $this->getPageProperties($device_type_id, $page_id); 239 217 $ret = $objQuery->delete('dtb_pagelayout', 'page_id = ? AND device_type_id = ?', array($page_id, $device_type_id)); 240 // ãã¡ã¤ã«ã®åé¤218 // ファイルの削除 241 219 $this->lfDelFile($arrPageData[0]['filename'], $device_type_id); 242 220 } … … 246 224 247 225 /** 248 * ãã¼ã¸ã®ãã¡ã¤ã«ãåé¤ãã.249 * 250 * dtb_pagelayout ã®åé¤å¾ã«å¼ã³åºããã¨ã226 * ページのファイルを削除する. 227 * 228 * dtb_pagelayout の削除後に呼び出すこと。 251 229 * 252 230 * @access private 253 231 * @param string $filename 254 * @param integer $device_type_id 端æ«ç¨®å¥ID255 * @return void // TODO boolean ã«ããã¹ã?232 * @param integer $device_type_id 端末種別ID 233 * @return void // TODO boolean にするべき? 256 234 */ 257 235 public function lfDelFile($filename, $device_type_id) … … 260 238 261 239 /* 262 * ååãã¡ã¤ã«ã®ä½¿ç¨ä»¶æ° 263 * PHP ãã¡ã¤ã«ã¯, è¤æ°ã®ããã¤ã¹ã§å 264 ±æãããã, device_type_id ãæ¡ä»¶ã«å 265 ¥ããªã 240 * 同名ファイルの使用件数 241 * PHP ファイルは, 複数のデバイスで共有するため, device_type_id を条件に入れない 266 242 */ 267 243 $exists = $objQuery->exists('dtb_pagelayout', 'filename = ?', array($filename)); 268 244 269 245 if (!$exists) { 270 // php ãã¡ã¤ã«ã®åé¤246 // phpファイルの削除 271 247 $del_php = HTML_REALDIR . $filename . '.php'; 272 248 if (file_exists($del_php)) { … … 275 251 } 276 252 277 // tpl ãã¡ã¤ã«ã®åé¤253 // tplファイルの削除 278 254 $del_tpl = $this->getTemplatePath($device_type_id) . $filename . '.tpl'; 279 255 if (file_exists($del_tpl)) { … … 283 259 284 260 /** 285 * ç·¨éå¯è½ãã¼ã¸ãã©ãã.286 * 287 * @access public 288 * @param integer $device_type_id 端æ«ç¨®å¥ID289 * @param integer $page_id ãã¼ã¸ID290 * @return ç·¨éå¯è½ãã¼ã¸ã®å ´åtrue261 * 編集可能ページかどうか. 262 * 263 * @access public 264 * @param integer $device_type_id 端末種別ID 265 * @param integer $page_id ページID 266 * @return 編集可能ページの� �合 true 291 267 */ 292 268 public function isEditablePage($device_type_id, $page_id) … … 304 280 305 281 /** 306 * ãã³ãã¬ã¼ãã®ãã¹ãåå¾ãã.307 * 308 * @access public 309 * @param integer $device_type_id 端æ«ç¨®å¥ID310 * @param boolean $isUser USER_REALDIR 以ä¸ã®ãã¹ãè¿ãå ´åtrue311 * @return string ãã³ãã¬ã¼ãã®ãã¹282 * テンプレートのパスを取得する. 283 * 284 * @access public 285 * @param integer $device_type_id 端末種別ID 286 * @param boolean $isUser USER_REALDIR 以下のパスを返す場合 true 287 * @return string テンプレートのパス 312 288 */ 313 289 public function getTemplatePath($device_type_id = DEVICE_TYPE_PC, $isUser = false) … … 340 316 341 317 /** 342 * DocumentRoot ãã user_data ã®ãã¹ãåå¾ãã.343 * 344 * 弿° $hasPackage ã true ã«ããå ´åã¯, user_data/packages/template_name345 * ãåå¾ãã.346 * 347 * @access public 348 * @param integer $device_type_id 端æ«ç¨®å¥ID349 * @param boolean $hasPackage ããã±ã¼ã¸ã®ãã¹ãå«ããå ´åtrue350 * @return string 端æ«ã«å¿ãã DocumentRoot ãã user_data ã¾ã§ã®ãã¹318 * DocumentRoot から user_data のパスを取得する. 319 * 320 * 引数 $hasPackage を true にした場合は, user_data/packages/template_name 321 * を取得する. 322 * 323 * @access public 324 * @param integer $device_type_id 端末種別ID 325 * @param boolean $hasPackage パッケージのパスも含める場合 true 326 * @return string 端末に応じた DocumentRoot から user_data までのパス 351 327 */ 352 328 public function getUserDir($device_type_id = DEVICE_TYPE_PC, $hasPackage = false) … … 374 350 375 351 /** 376 * ãããã¯ã® php_path, tpl_path ãè¨å®ãã.352 * ブロックの php_path, tpl_path を設定する. 377 353 * 378 354 * @access private 379 * @param integer $device_type_id 端æ«ç¨®å¥ID 380 * @param array $arrBlocs è¨å®ãããããã¯ã®é 381 å 355 * @param integer $device_type_id 端末種別ID 356 * @param array $arrBlocs 設定するブロックの配列 382 357 * @return void 383 358 */ … … 393 368 394 369 /** 395 * ã«ã©ã æ°ãåå¾ãã.370 * カラム数を取得する. 396 371 * 397 372 * @access private 398 * @param array $arrPageLayout ã¬ã¤ã¢ã¦ãæ 399 å ±ã®é 400 å 401 * @return integer $col_num ã«ã©ã æ° 373 * @param array $arrPageLayout レイアウト情報の配列 374 * @return integer $col_num カラム数 402 375 */ 403 376 public function getColumnNum($arrPageLayout) 404 377 { 405 // ã¡ã¤ã³ã¯ç¢ºå®378 // メインは確定 406 379 $col_num = 1; 407 380 // LEFT NAVI
Note: See TracChangeset
for help on using the changeset viewer.
