Ignore:
Timestamp:
2010/07/20 13:25:33 (16 years ago)
Author:
kajiwara
Message:

EC-CUBE Ver2.4.4 分コミット。詳細はこちら( http://www.ec-cube.net/release/detail.php?release_id=223

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/data/class/helper/SC_Helper_PageLayout.php

    r18562 r18758  
    33 * This file is part of EC-CUBE 
    44 * 
    5  * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved. 
     5 * Copyright(c) 2000-2010 LOCKON CO.,LTD. All Rights Reserved. 
    66 * 
    77 * http://www.lockon.co.jp/ 
     
    4646    function sfGetPageLayout(&$objPage, $preview = false, $url = ""){ 
    4747        $debug_message = ""; 
    48         $arrPageLayout = array(); 
     48        $arrPageLayout = array(); 
    4949 
    5050        // 現在のURLの取得 
    5151        if ($preview === false) { 
    5252            if ($url == "") { 
    53                 $url = "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']; 
     53                // 従来互換(dtb_pagelayoutのurlが絶対URLだった時) 
     54                $url = SITE_URL . preg_replace('|^' . preg_quote(URL_DIR) . '|', '' , $_SERVER['PHP_SELF']); 
    5455            } 
     56 
     57            $url2 = preg_replace('|^http://[^/]+' . preg_quote(URL_DIR) . '|', '', $url); 
    5558            // URLを元にページデザインを取得 
    56             $arrPageData = $this->lfgetPageData(" url = ? " , array($url)); 
    57         }else{ 
    58             $arrPageData = $this->lfgetPageData(" page_id = ? " , array("0")); 
     59            $arrPageData = $this->lfgetPageData("url IN (?, ?) AND page_id <> 0" , array($url2, $url)); // $url は従来互換 
     60        } else { 
     61            $arrPageData = $this->lfgetPageData("page_id = 0"); 
    5962            $objPage->tpl_mainpage = USER_PATH . "templates/preview/" 
    6063                . TEMPLATE_NAME . "/" . $arrPageData[0]['filename'] . ".tpl"; 
     
    6265         
    6366        reset($arrPageData[0]); 
    64         while( list($key,$val) = each($arrPageData[0]) ){ 
    65             $debug_message.= "arrPageData[$key]:" . $val . "\n"; 
     67        while( list($key,$val) = each($arrPageData[0]) ){ 
     68            $debug_message.= "arrPageData[$key]:" . $val . "\n"; 
    6669        } 
    6770         
     
    97100 
    98101        // 全ナビデータを取得する 
    99         $arrNavi = $this->lfGetNaviData($url, $preview); 
    100  
    101         $arrPageLayout['LeftNavi']  = $this->lfGetNavi($arrNavi,1); // LEFT NAVI 
    102         $arrPageLayout['MainHead']  = $this->lfGetNavi($arrNavi,2); // メイン上部 
    103         $arrPageLayout['RightNavi'] = $this->lfGetNavi($arrNavi,3); // RIGHT NAVI 
    104         $arrPageLayout['MainFoot']  = $this->lfGetNavi($arrNavi,4); // メイン下部 
     102        $arrNavi = $this->lfGetNaviData($arrPageLayout['page_id']); 
     103 
     104        $arrPageLayout['LeftNavi']  = $this->lfGetNavi($arrNavi,1);    // LEFT NAVI 
     105        $arrPageLayout['MainHead']  = $this->lfGetNavi($arrNavi,2);    // メイン上部 
     106        $arrPageLayout['RightNavi'] = $this->lfGetNavi($arrNavi,3);    // RIGHT NAVI 
     107        $arrPageLayout['MainFoot']  = $this->lfGetNavi($arrNavi,4);    // メイン下部 
    105108 
    106109        GC_Utils::gfDebugLog($arrPageLayout); 
     
    121124     * @return array ページ情報を格納した配列 
    122125     */ 
    123     function lfgetPageData($addwhere = '', $sqlval = ''){ 
    124         $objQuery = new SC_Query;       // DB操作オブジェクト 
    125         $arrRet = array();              // データ取得用 
    126  
    127         // SQL文生成 
     126    function lfgetPageData($where = 'page_id <> 0', $where_vals = array()) { 
     127        $objQuery = new SC_Query;       // DB操作オブジェクト 
     128        $arrRet = array();              // データ取得用 
     129 
    128130        // 取得するカラム 
    129         $col  = " page_id";             // ページID 
    130         $col .= " ,page_name";          // 名称 
    131         $col .= " ,url";                // URL 
    132         $col .= " ,php_dir";            // php保存先ディレクトリ 
    133         $col .= " ,tpl_dir";            // tpl保存先ディレクトリ 
    134         $col .= " ,filename";           // ファイル名称 
    135         $col .= " ,header_chk ";        // ヘッダー使用FLG 
    136         $col .= " ,footer_chk ";        // フッター使用FLG 
    137         $col .= " ,edit_flg ";          // 編集可能FLG 
    138         $col .= " ,author";             // authorタグ 
    139         $col .= " ,description";        // descriptionタグ 
    140         $col .= " ,keyword";            // keywordタグ 
    141         $col .= " ,update_url";         // 更新URL 
    142         $col .= " ,create_date";        // データ作成日 
    143         $col .= " ,update_date";        // データ更新日 
     131        $col  = " page_id";             // ページID 
     132        $col .= " ,page_name";          // 名称 
     133        $col .= " ,url";                // URL 
     134        $col .= " ,php_dir";            // php保存先ディレクトリ 
     135        $col .= " ,tpl_dir";            // tpl保存先ディレクトリ 
     136        $col .= " ,filename";           // ファイル名称 
     137        $col .= " ,header_chk ";        // ヘッダー使用FLG 
     138        $col .= " ,footer_chk ";        // フッター使用FLG 
     139        $col .= " ,edit_flg ";          // 編集可能FLG 
     140        $col .= " ,author";             // authorタグ 
     141        $col .= " ,description";        // descriptionタグ 
     142        $col .= " ,keyword";            // keywordタグ 
     143        $col .= " ,update_url";         // 更新URL 
     144        $col .= " ,create_date";        // データ作成日 
     145        $col .= " ,update_date";        // データ更新日 
    144146         
    145147        // 取得するテーブル 
    146148        $table = "dtb_pagelayout"; 
    147149         
    148         // where句の指定があれば追加 
    149         $where = ($addwhere != '') ? $addwhere : "page_id <> 0"; 
    150          
    151150        // 並び変え 
    152151        $objQuery->setOrder('page_id'); 
    153152         
    154153        // SQL実行 
    155         $arrRet = $objQuery->select($col, $table, $where, $sqlval); 
     154        $arrRet = $objQuery->select($col, $table, $where, $where_vals); 
    156155         
    157156        // 結果を返す 
     
    163162     * 
    164163     * @param string $url ページのURL 
    165      * @param boolean $preview プレビュー表示の場合 true 
    166164     * @return array ナビ情報の配列 
    167165     */ 
    168     function lfGetNaviData($url, $preview=false){ 
    169         $objQuery = new SC_Query;       // DB操作オブジェクト 
    170         $sql = "";                      // データ取得SQL生成用 
    171         $arrRet = array();              // データ取得用 
    172         $arrData = array(); 
    173  
    174         // SQL文生成 
     166    function lfGetNaviData($page_id){ 
     167        $objQuery = new SC_Query;   // DB操作オブジェクト 
     168 
    175169        // 取得するカラム 
    176170        $col = "target_id, bloc_name, tpl_path, php_path"; 
    177171         
    178172        // 取得するテーブル 
    179         $table = "dtb_blocposition AS pos, dtb_bloc AS bloc"; 
     173        $table = "dtb_blocposition AS pos INNER JOIN dtb_bloc AS bloc ON bloc.bloc_id = pos.bloc_id"; 
    180174         
    181175        // where文生成 
    182         $where = "bloc.bloc_id = pos.bloc_id"; 
    183         if ($preview == true) { 
    184             $where .= " AND EXISTS (SELECT page_id FROM dtb_pagelayout AS lay WHERE page_id = '0' AND pos.page_id = lay.page_id)"; 
    185         }else{ 
    186             $where .= " AND EXISTS (SELECT page_id FROM dtb_pagelayout AS lay WHERE url = ? AND page_id <> '0' AND pos.page_id = lay.page_id)"; 
    187             $sqlval = array($url); 
    188         } 
     176        $where = "page_id = ?"; 
     177        $where_vals[] = $page_id; 
     178 
    189179        // 並び変え 
    190180        $objQuery->setOrder('target_id, bloc_row'); 
    191181         
    192182        // SQL実行 
    193         $arrRet = $objQuery->select($col, $table, $where, $sqlval); 
    194                                              
     183        $arrRet = $objQuery->select($col, $table, $where, $where_vals); 
     184         
    195185        // 結果を返す 
    196186        return $arrRet; 
     
    207197        $arrRet = array(); 
    208198        if(is_array($arrNavi) === true) { 
    209             reset($arrNavi); 
     199            reset($arrNavi); 
    210200            while( list($key,$val)= each($arrNavi) ){ 
    211                 // 指定された箇所と同じデータだけを取得する 
     201                // 指定された箇所と同じデータだけを取得する 
    212202                if ($target_id == $val['target_id']){ 
    213203                    if ($val['php_path'] != '') { 
    214204                        $arrNavi[$key]['php_path'] = HTML_PATH . $val['php_path']; 
    215                     }else{ 
    216                         $user_block_path = USER_TEMPLATE_PATH . TEMPLATE_NAME . "/" . $val['tpl_path']; 
    217                         if(is_file($user_block_path)) { 
    218                            $arrNavi[$key]['tpl_path'] = $user_block_path; 
    219                         } else { 
    220                            $arrNavi[$key]['tpl_path'] = TEMPLATE_DIR . $val['tpl_path']; 
    221                         } 
     205                    } else { 
     206                        $user_block_path = USER_TEMPLATE_PATH . TEMPLATE_NAME . "/" . $val['tpl_path']; 
     207                        if(is_file($user_block_path)) { 
     208                            $arrNavi[$key]['tpl_path'] = $user_block_path; 
     209                        } else { 
     210                            $arrNavi[$key]['tpl_path'] = TEMPLATE_DIR . $val['tpl_path']; 
     211                        } 
    222212                    } 
    223213                     
     
    258248     */ 
    259249    function lfDelPageData($page_id){ 
    260         // DBへデータを更新する 
    261         $objQuery = new SC_Query;       // DB操作オブジェクト 
    262         $sql = "";                      // データ更新SQL生成用 
    263         $ret = "";                      // データ更新結果格納用 
    264         $arrDelData = array();          // 更新データ生成用 
     250        // DBへデータを更新する 
     251        $objQuery = new SC_Query;   // DB操作オブジェクト 
     252        $ret = "";                  // 結果格納用 
     253        $arrDelData = array();      // 抽出データ用 
    265254 
    266255        // page_id が空でない場合にはdeleteを実行 
Note: See TracChangeset for help on using the changeset viewer.