Ignore:
Timestamp:
2011/02/03 18:41:05 (13 years ago)
Author:
yomoro
Message:

#983 リファクタリング

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_5-dev/data/class/pages/rss/LC_Page_Rss_Products.php

    r20044 r20077  
    5555     */ 
    5656    function process() { 
    57         $objQuery = new SC_Query(); 
     57        $this->action(); 
     58    } 
     59 
     60    /** 
     61     * Page のアクション. 
     62     * 
     63     * @return void 
     64     */ 
     65    function action() { 
    5866        $objView = new SC_SiteView(); 
    5967        $objSiteInfo = new SC_SiteInfo(); 
    60  
     68         
    6169        //店舗情報をセット 
    6270        $this->arrSiteInfo = $objSiteInfo->data; 
    63  
     71         
    6472        //商品IDを取得 
    65         $product_id = $_GET['product_id']; 
    66         //TODO 要リファクタリング(MODE if利用) 
     73        if ( isset($_GET['product_id']) && $_GET['product_id'] != '' && is_numeric($_GET['product_id']) ) { 
     74            $product_id = $_GET['product_id']; 
     75        } else { 
     76            $product_id = ''; 
     77        } 
     78         
     79        // モードによって分岐 
    6780        $mode = $this->getMode(); 
    68         if(($product_id != "" and is_numeric($product_id)) or $mode == "all"){ 
    69             //商品詳細を取得 
    70             ($mode == "all") ? $arrProduct = $this->lfGetProductsDetail($objQuery, $mode) : $arrProduct = $this->lfGetProductsDetail($objQuery, $product_id); 
    71  
    72             // 値のセットし直し 
    73             foreach($arrProduct as $key => $val){ 
    74                 //販売価格を税込みに編集 
    75                 $arrProduct[$key]["price02"] = SC_Helper_DB_Ex::sfCalcIncTax($arrProduct[$key]["price02"]); 
    76  
    77                 // 画像ファイルのURLセット 
    78                 (file_exists(IMAGE_SAVE_REALDIR . $arrProduct[$key]["main_list_image"])) ? $dir = IMAGE_SAVE_RSS_URL : $dir = IMAGE_TEMP_RSS_URL; 
    79                 $arrProduct[$key]["main_list_image"] = $dir . $arrProduct[$key]["main_list_image"]; 
    80                 (file_exists(IMAGE_SAVE_REALDIR . $arrProduct[$key]["main_image"])) ? $dir = IMAGE_SAVE_RSS_URL : $dir = IMAGE_TEMP_RSS_URL; 
    81                 $arrProduct[$key]["main_image"] = $dir . $arrProduct[$key]["main_image"]; 
    82                 (file_exists(IMAGE_SAVE_REALDIR . $arrProduct[$key]["main_large_image"])) ? $dir = IMAGE_SAVE_RSS_URL : $dir = IMAGE_TEMP_RSS_URL; 
    83                 $arrProduct[$key]["main_large_image"] = $dir . $arrProduct[$key]["main_large_image"]; 
    84  
    85                 // ポイント計算 
    86                 $arrProduct[$key]["point"] = SC_Utils_Ex::sfPrePoint($arrProduct[$key]["price02"], $arrProduct[$key]["point_rate"], POINT_RULE, $arrProduct[$key]["product_id"]); 
    87  
    88                 // 在庫無制限 
    89                 $arrProduct[$key]["stock_unlimited"] = ($arrProduct[$key]["stock_unlimited"] == 1) ? "在庫無制限" : NULL; 
    90             } 
    91         }elseif($mode == "list"){ 
    92             //商品一覧を取得 
    93             $arrProduct = $objQuery->getAll("SELECT product_id, name AS product_name FROM dtb_products"); 
    94         }else{ 
    95             $arrProduct = $this->lfGetProductsAllclass($objQuery); 
    96  
    97             // 値のセットし直し 
    98             foreach($arrProduct as $key => $val){ 
    99                 //販売価格を税込みに編集 
    100                 $arrProduct[$key]["price02_max"] = SC_Helper_DB_Ex::sfCalcIncTax($arrProduct[$key]["price02_max"]); 
    101                 $arrProduct[$key]["price02_min"] = SC_Helper_DB_Ex::sfCalcIncTax($arrProduct[$key]["price02_min"]); 
    102  
    103                 // 画像ファイルのURLセット 
    104                 (file_exists(IMAGE_SAVE_REALDIR . $arrProduct[$key]["main_list_image"])) ? $dir = IMAGE_SAVE_RSS_URL : $dir = IMAGE_TEMP_RSS_URL; 
    105                 $arrProduct[$key]["main_list_image"] = $dir . $arrProduct[$key]["main_list_image"]; 
    106                 (file_exists(IMAGE_SAVE_REALDIR . $arrProduct[$key]["main_image"])) ? $dir = IMAGE_SAVE_RSS_URL : $dir = IMAGE_TEMP_RSS_URL; 
    107                 $arrProduct[$key]["main_image"] = $dir . $arrProduct[$key]["main_image"]; 
    108                 (file_exists(IMAGE_SAVE_REALDIR . $arrProduct[$key]["main_large_image"])) ? $dir = IMAGE_SAVE_RSS_URL : $dir = IMAGE_TEMP_RSS_URL; 
    109                 $arrProduct[$key]["main_large_image"] = $dir . $arrProduct[$key]["main_large_image"]; 
    110  
    111                 // ポイント計算 
    112                 $arrProduct[$key]["point_max"] = SC_Utils_Ex::sfPrePoint($arrProduct[$key]["price02_max"], $arrProduct[$key]["point_rate"], POINT_RULE, $arrProduct[$key]["product_id"]); 
    113                 $arrProduct[$key]["point_min"] = SC_Utils_Ex::sfPrePoint($arrProduct[$key]["price02_min"], $arrProduct[$key]["point_rate"], POINT_RULE, $arrProduct[$key]["product_id"]); 
    114             } 
    115         } 
    116  
    117         //商品情報をセット 
     81        switch ($mode) { 
     82        case 'all': 
     83            $arrProduct = $this->lfGetProductsDetailData($mode, $product_id); 
     84            break; 
     85        case 'list': 
     86            if ( $product_id != '' && is_numeric($product_id) ) { 
     87                $arrProduct = $this->lfGetProductsDetailData($mode, $product_id); 
     88            } else { 
     89                $arrProduct = $this->lfGetProductsListData(); 
     90            } 
     91            break; 
     92        default: 
     93            if ( $product_id != '' && is_numeric($product_id) ) { 
     94                $arrProduct = $this->lfGetProductsDetailData($mode, $product_id); 
     95            } else { 
     96                $arrProduct = $this->lfGetProductsAllData(); 
     97            } 
     98            break; 
     99        } 
     100         
     101        // 商品情報をセット 
    118102        $this->arrProduct = $arrProduct; 
    119         if(is_array(SC_Utils_Ex::sfswaparray($arrProduct))){ 
    120             $this->arrProductKeys = array_keys(SC_Utils_Ex::sfswaparray($arrProduct)); 
    121         } 
    122  
     103        $this->arrProductKeys = $this->lfGetProductKeys($arrProduct); 
     104         
    123105        //セットしたデータをテンプレートファイルに出力 
    124106        $objView->assignobj($this); 
    125  
     107         
    126108        //キャッシュしない(念のため) 
    127109        header("Pragma: no-cache"); 
    128  
     110         
    129111        //XMLテキスト(これがないと正常にRSSとして認識してくれないツールがあるため) 
    130112        header("Content-type: application/xml"); 
    131113        P_DETAIL_URLPATH; 
    132  
     114         
    133115        //画面表示 
    134116        $objView->display($this->tpl_mainpage, true); 
     
    142124    function destroy() { 
    143125        parent::destroy(); 
     126    } 
     127 
     128    /** 
     129     * lfGetProductsDetailData. 
     130     * 
     131     * @param str $mode モード 
     132     * @param str $product_id 商品ID 
     133     * @return array $arrProduct 商品情報の配列を返す 
     134     */ 
     135    function lfGetProductsDetailData($mode, $product_id) { 
     136        $objQuery = SC_Query::getSingletonInstance(); 
     137        //商品詳細を取得 
     138        if ( $mode == 'all' ) { 
     139            $arrProduct = $this->lfGetProductsDetail($objQuery, $mode); 
     140        } else { 
     141            $arrProduct = $this->lfGetProductsDetail($objQuery, $product_id); 
     142        } 
     143        // 値の整形 
     144        foreach ($arrProduct as $key => $val) { 
     145            //販売価格を税込みに編集 
     146            $arrProduct[$key]['price02'] = SC_Helper_DB_Ex::sfCalcIncTax($arrProduct[$key]['price02']); 
     147            // 画像ファイルのURLセット 
     148            if ( file_exists(IMAGE_SAVE_REALDIR . $arrProduct[$key]['main_list_image']) ) { 
     149                $dir = IMAGE_SAVE_RSS_URL; 
     150            } else { 
     151                $dir = IMAGE_TEMP_RSS_URL; 
     152            } 
     153            $arrProduct[$key]['main_list_image'] = $dir . $arrProduct[$key]['main_list_image']; 
     154            if ( file_exists(IMAGE_SAVE_REALDIR . $arrProduct[$key]['main_image']) ){ 
     155                $dir = IMAGE_SAVE_RSS_URL; 
     156            } else { 
     157                $dir = IMAGE_TEMP_RSS_URL; 
     158            } 
     159            $arrProduct[$key]['main_image'] = $dir . $arrProduct[$key]['main_image']; 
     160            if ( file_exists(IMAGE_SAVE_REALDIR . $arrProduct[$key]['main_large_image']) ) { 
     161                $dir = IMAGE_SAVE_RSS_URL; 
     162            } else { 
     163                $dir = IMAGE_TEMP_RSS_URL; 
     164            } 
     165            $arrProduct[$key]['main_large_image'] = $dir . $arrProduct[$key]['main_large_image']; 
     166            // ポイント計算 
     167            $arrProduct[$key]['point'] = SC_Utils_Ex::sfPrePoint( 
     168                $arrProduct[$key]['price02'], 
     169                $arrProduct[$key]['point_rate'], 
     170                POINT_RULE, 
     171                $arrProduct[$key]['product_id'] 
     172            ); 
     173            // 在庫無制限 
     174            if ( $arrProduct[$key]['stock_unlimited'] == 1 ) { 
     175                $arrProduct[$key]['stock_unlimited'] = '在庫無制限'; 
     176            } else { 
     177                $arrProduct[$key]['stock_unlimited'] = NULL; 
     178            } 
     179        } 
     180        return $arrProduct; 
     181    } 
     182 
     183    /** 
     184     * lfGetProductsListData. 
     185     * 
     186     * @return array $arrProduct 商品情報の配列を返す 
     187     */ 
     188    function lfGetProductsListData() { 
     189        $objQuery = SC_Query::getSingletonInstance(); 
     190        //商品一覧を取得 
     191        $arrProduct = $objQuery->getAll('SELECT product_id, name AS product_name FROM dtb_products'); 
     192        return $arrProduct; 
     193    } 
     194 
     195    /** 
     196     * lfGetProductsAllData. 
     197     * 
     198     * @return array $arrProduct 商品情報の配列を返す 
     199     */ 
     200    function lfGetProductsAllData() { 
     201        $objQuery = SC_Query::getSingletonInstance(); 
     202        //商品情報を取得 
     203        $arrProduct = $this->lfGetProductsAllclass($objQuery); 
     204        // 値の整形 
     205        foreach ($arrProduct as $key => $val) { 
     206            //販売価格を税込みに編集 
     207            $arrProduct[$key]['price02_max'] = SC_Helper_DB_Ex::sfCalcIncTax($arrProduct[$key]['price02_max']); 
     208            $arrProduct[$key]['price02_min'] = SC_Helper_DB_Ex::sfCalcIncTax($arrProduct[$key]['price02_min']); 
     209            // 画像ファイルのURLセット 
     210            if ( file_exists(IMAGE_SAVE_REALDIR . $arrProduct[$key]['main_list_image']) ) { 
     211                $dir = IMAGE_SAVE_RSS_URL; 
     212            } else { 
     213                $dir = IMAGE_TEMP_RSS_URL; 
     214            } 
     215            $arrProduct[$key]['main_list_image'] = $dir . $arrProduct[$key]['main_list_image']; 
     216            if ( file_exists(IMAGE_SAVE_REALDIR . $arrProduct[$key]['main_image']) ) { 
     217                $dir = IMAGE_SAVE_RSS_URL; 
     218            } else { 
     219                $dir = IMAGE_TEMP_RSS_URL; 
     220            } 
     221            $arrProduct[$key]['main_image'] = $dir . $arrProduct[$key]['main_image']; 
     222            if ( file_exists(IMAGE_SAVE_REALDIR . $arrProduct[$key]['main_large_image']) ) { 
     223                $dir = IMAGE_SAVE_RSS_URL; 
     224            } else { 
     225                $dir = IMAGE_TEMP_RSS_URL; 
     226            } 
     227            $arrProduct[$key]['main_large_image'] = $dir . $arrProduct[$key]['main_large_image']; 
     228            // ポイント計算 
     229            $arrProduct[$key]['point_max'] = SC_Utils_Ex::sfPrePoint( 
     230                $arrProduct[$key]['price02_max'], 
     231                $arrProduct[$key]['point_rate'], 
     232                POINT_RULE, 
     233                $arrProduct[$key]['product_id'] 
     234            ); 
     235            $arrProduct[$key]['point_min'] = SC_Utils_Ex::sfPrePoint( 
     236                $arrProduct[$key]['price02_min'], 
     237                $arrProduct[$key]['point_rate'], 
     238                POINT_RULE, 
     239                $arrProduct[$key]['product_id'] 
     240            ); 
     241        } 
     242        return $arrProduct; 
    144243    } 
    145244 
     
    151250     * @return array $arrProduct 取得結果を配列で返す 
    152251     */ 
    153     function lfGetProductsDetail(&$objQuery, $product_id = "all"){ 
    154         $sql = ""; 
    155         $sql .= "SELECT "; 
    156         $sql .= "   prod.product_id "; 
    157         $sql .= "   ,prod.name AS product_name "; 
    158         $sql .= "   ,prod.category_id "; 
    159         $sql .= "   ,prod.point_rate "; 
    160         $sql .= "   ,prod.comment3 "; 
    161         $sql .= "   ,prod.main_list_comment "; 
    162         $sql .= "   ,prod.main_list_image "; 
    163         $sql .= "   ,prod.main_comment "; 
    164         $sql .= "   ,prod.main_image "; 
    165         $sql .= "   ,prod.main_large_image "; 
    166         $sql .= "   ,cls.product_code "; 
    167         $sql .= "   ,cls.price01 "; 
    168         $sql .= "   ,cls.price02 "; 
    169         $sql .= "   ,cls.stock "; 
    170         $sql .= "   ,cls.stock_unlimited "; 
    171         $sql .= "   ,cls.classcategory_id1 "; 
    172         $sql .= "   ,cls.classcategory_id2 "; 
    173         $sql .= "   ,(SELECT name FROM dtb_classcategory AS clscat WHERE clscat.classcategory_id = cls.classcategory_id1) AS classcategory_name1 "; 
    174         $sql .= "   ,(SELECT name FROM dtb_classcategory AS clscat WHERE clscat.classcategory_id = cls.classcategory_id2) AS classcategory_name2 "; 
    175         $sql .= "   ,(SELECT category_name FROM dtb_category AS cat WHERE cat.category_id = prod.category_id) AS category_name"; 
    176         $sql .= "   ,prod.update_date "; 
    177         $sql .= " FROM dtb_products AS prod, dtb_products_class AS cls"; 
    178         $sql .= " WHERE prod.product_id = cls.product_id AND prod.del_flg = 0 AND prod.status = 1"; 
    179  
    180         if($product_id != "all"){ 
    181             $sql .= " AND prod.product_id = ?"; 
     252    function lfGetProductsDetail(&$objQuery, $product_id = 'all'){ 
     253        $sql = ''; 
     254        $sql .= 'SELECT '; 
     255        $sql .= '   prod.product_id '; 
     256        $sql .= '   ,prod.name AS product_name '; 
     257        $sql .= '   ,prod.category_id '; 
     258        $sql .= '   ,prod.point_rate '; 
     259        $sql .= '   ,prod.comment3 '; 
     260        $sql .= '   ,prod.main_list_comment '; 
     261        $sql .= '   ,prod.main_list_image '; 
     262        $sql .= '   ,prod.main_comment '; 
     263        $sql .= '   ,prod.main_image '; 
     264        $sql .= '   ,prod.main_large_image '; 
     265        $sql .= '   ,cls.product_code '; 
     266        $sql .= '   ,cls.price01 '; 
     267        $sql .= '   ,cls.price02 '; 
     268        $sql .= '   ,cls.stock '; 
     269        $sql .= '   ,cls.stock_unlimited '; 
     270        $sql .= '   ,cls.classcategory_id1 '; 
     271        $sql .= '   ,cls.classcategory_id2 '; 
     272        $sql .= '   ,( '; 
     273        $sql .= '     SELECT '; 
     274        $sql .= '        name '; 
     275        $sql .= '     FROM '; 
     276        $sql .= '        dtb_classcategory AS clscat '; 
     277        $sql .= '     WHERE '; 
     278        $sql .= '        clscat.classcategory_id = cls.classcategory_id1 '; 
     279        $sql .= '   ) AS classcategory_name1 '; 
     280        $sql .= '   ,( '; 
     281        $sql .= '     SELECT '; 
     282        $sql .= '        name '; 
     283        $sql .= '     FROM '; 
     284        $sql .= '        dtb_classcategory AS clscat '; 
     285        $sql .= '     WHERE '; 
     286        $sql .= '        clscat.classcategory_id = cls.classcategory_id2 '; 
     287        $sql .= '   ) AS classcategory_name2 '; 
     288        $sql .= '   ,( '; 
     289        $sql .= '     SELECT '; 
     290        $sql .= '        category_name '; 
     291        $sql .= '     FROM '; 
     292        $sql .= '        dtb_category AS cat '; 
     293        $sql .= '     WHERE '; 
     294        $sql .= '        cat.category_id = prod.category_id '; 
     295        $sql .= '   ) AS category_name '; 
     296        $sql .= '   ,prod.update_date '; 
     297        $sql .= ' FROM dtb_products AS prod, dtb_products_class AS cls'; 
     298        $sql .= ' WHERE prod.product_id = cls.product_id AND prod.del_flg = 0 AND prod.status = 1'; 
     299 
     300        if($product_id != 'all'){ 
     301            $sql .= ' AND prod.product_id = ?'; 
    182302            $arrval = array($product_id); 
    183303        } 
    184         $sql .= " ORDER BY prod.product_id, cls.classcategory_id1, cls.classcategory_id2"; 
     304        $sql .= ' ORDER BY prod.product_id, cls.classcategory_id1, cls.classcategory_id2'; 
    185305        $arrProduct = $objQuery->getAll($sql, $arrval); 
    186306        return $arrProduct; 
     
    195315    function lfGetProductsAllclass($objQuery){ 
    196316        // FIXME SC_Product クラスを使用した実装 
    197         $sql = ""; 
    198         $sql .= "SELECT 
    199                 product_id 
    200                 ,name as product_name 
    201                 ,category_id 
    202                 ,point_rate 
    203                 ,comment3 
    204                 ,main_list_comment 
    205                 ,main_image 
    206                 ,main_list_image 
    207                 ,product_code_min 
    208                 ,product_code_max 
    209                 ,price01_min 
    210                 ,price01_max 
    211                 ,price02_min 
    212                 ,price02_max 
    213                 ,(SELECT category_name FROM dtb_category AS cat WHERE cat.category_id = allcls.category_id) AS category_name 
    214                 ,(SELECT main_large_image FROM dtb_products AS prod WHERE prod.product_id = allcls.product_id) AS main_large_image 
    215             FROM  vw_products_allclass as allcls 
    216             WHERE allcls.del_flg = 0 AND allcls.status = 1"; 
     317        $sql = ''; 
     318        $sql .= ' SELECT '; 
     319        $sql .= '   product_id '; 
     320        $sql .= '   ,name as product_name '; 
     321        $sql .= '   ,category_id '; 
     322        $sql .= '   ,point_rate '; 
     323        $sql .= '   ,comment3 '; 
     324        $sql .= '   ,main_list_comment '; 
     325        $sql .= '   ,main_image '; 
     326        $sql .= '   ,main_list_image '; 
     327        $sql .= '   ,product_code_min '; 
     328        $sql .= '   ,product_code_max '; 
     329        $sql .= '   ,price01_min '; 
     330        $sql .= '   ,price01_max '; 
     331        $sql .= '   ,price02_min '; 
     332        $sql .= '   ,price02_max '; 
     333        $sql .= '   ,( '; 
     334        $sql .= '     SELECT '; 
     335        $sql .= '       category_name '; 
     336        $sql .= '     FROM '; 
     337        $sql .= '       dtb_category AS cat '; 
     338        $sql .= '     WHERE '; 
     339        $sql .= '       cat.category_id = allcls.category_id '; 
     340        $sql .= '   ) AS category_name '; 
     341        $sql .= '   ,( '; 
     342        $sql .= '     SELECT '; 
     343        $sql .= '       main_large_image '; 
     344        $sql .= '     FROM '; 
     345        $sql .= '       dtb_products AS prod '; 
     346        $sql .= '     WHERE '; 
     347        $sql .= '       prod.product_id = allcls.product_id '; 
     348        $sql .= '   ) AS main_large_image '; 
     349        $sql .= ' FROM '; 
     350        $sql .= '   vw_products_allclass as allcls '; 
     351        $sql .= ' WHERE '; 
     352        $sql .= '   allcls.del_flg = 0 AND allcls.status = 1 '; 
    217353 
    218354        // 在庫無し商品の非表示 
     
    221357        } 
    222358 
    223         $sql .= " ORDER BY allcls.product_id"; 
     359        $sql .= ' ORDER BY allcls.product_id'; 
    224360 
    225361        $arrProduct = $objQuery->getAll($sql); 
    226362        return $arrProduct; 
    227363    } 
     364 
     365    /** 
     366     * lfGetProductKeys. 
     367     * 
     368     * @param array $arrProduct 商品データ配列 
     369     * @return array $arrProductKeys 商品情報のkey配列を返す 
     370     */ 
     371    function lfGetProductKeys($arrProduct) { 
     372        $arrProductKeys = array(); 
     373        $arrProduct = SC_Utils_Ex::sfswaparray($arrProduct); 
     374        if ( is_array($arrProduct) ) { 
     375            $arrProductKeys = array_keys($arrProduct); 
     376        } 
     377        return $arrProductKeys; 
     378    } 
     379 
    228380} 
    229381?> 
Note: See TracChangeset for help on using the changeset viewer.