[Svn-src-all:1306] [version-2_5-dev 20195] #982 ([フロント]商品)リファクタリング開発

kotani admin @ mail.ec-cube.net
2011年 2月 18日 (金) 16:53:46 JST


Subversion committed to /home/svn/open 20195
http://svn.ec-cube.net/open_trac/changeset/20195
┌────────────────────────────┐
│更新者 :  kotani                                       │
│更新日時:  2011-02-18 16:53:46 +0900 (金, 18  2月 2011)│
└────────────────────────────┘

Log:
--------------------------------------------------------
#982 ([フロント]商品)リファクタリング開発
* r20187 のコミットキャンセル

Changed:                      [U:修正,A:追加,D:削除]
--------------------------------------------------------
U   branches/version-2_5-dev/data/class/pages/products/LC_Page_Products_List.php

変更: branches/version-2_5-dev/data/class/pages/products/LC_Page_Products_List.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/products/LC_Page_Products_List.php	2011-02-18 06:15:56 UTC (rev 20194)
+++ branches/version-2_5-dev/data/class/pages/products/LC_Page_Products_List.php	2011-02-18 07:53:46 UTC (rev 20195)
@@ -94,43 +94,53 @@
      * @return void
      */
     function action() {
-        $this->arrForm = $_GET;
-        //modeの取得
-        $this->mode = $this->getMode();
-        
-        //表示条件の取得
-        $this->arrSearchData = array(
-            'category_id' => $this->lfGetCategoryId($this->arrForm['category_id']),
-            'maker_id'=>$this->arrForm['maker_id'],
-            'name'=>$this->arrForm['name']
-        );
-        $this->orderby = $this->arrForm['orderby'];
-        
-        //ページング設定
-        $this->tpl_pageno = $this->arrForm['pageno'];
-        $this->disp_number = $this->lfGetDisplayNum($this->arrForm['disp_number']);
-        
-        $objQuery = new SC_Query();//$this->queryにしたい
-        $objDb = new SC_Helper_DB_Ex();//$this->helperDBにしたい
+        $this->lfLoadParam();
+        $objQuery = new SC_Query();
+        $objDb = new SC_Helper_DB_Ex();
 
-        // 画面に表示するサブタイトルの設定
-        $this->tpl_subtitle = $this->lfGetPageTitle($this->mode,$this->arrSearchData['category_id'],$objDb);
+        // タイトル編集
+        if ($this->mode == 'search') {
+            $this->tpl_subtitle = "検索結果";
+        } elseif ($this->arrSearchData['category_id'] == 0) {
+            $this->tpl_subtitle = "全商品";
+        } else {
+            $arrCat = $objDb->sfGetCat($this->arrSearchData['category_id']);
+            $this->tpl_subtitle = $arrCat['name'];
+        }
 
-        // 画面に表示する検索条件を設定
-        $this->arrSearch = $this->lfGetSearchCondition($this->arrSearchData,$objQuery);
-        //この辺まではinit()に書いちゃダメなのかな?
-//2011-02-17 ここまでやった
+        $count = $objQuery->count("dtb_best_products", "category_id = ?", array($this->arrSearchData['category_id']));
 
         // 商品一覧の表示処理
-        $this->arrProducts = $this->lfGetProductsList($objDb);
+        $this->lfDispProductsList();
 
-        //onloadスクリプトを設定
+        // 検索条件を画面に表示
+        // カテゴリー検索条件
+        if ($this->arrSearchData['category_id'] == 0) {
+            $this->arrSearch['category'] = "指定なし";
+        } else {
+            $arrCat = $objQuery->getOne("SELECT category_name FROM dtb_category WHERE category_id = ?", array($this->arrSearchData['category_id']));
+            $this->arrSearch['category'] = $arrCat;
+        }
+
+        // メーカー検索条件
+        if (strlen($this->arrSearchData['maker_id']) == 0) {
+            $this->arrSearch['maker'] = "指定なし";
+        } else {
+            $this->arrSearch['maker'] = $objQuery->getOne("SELECT name FROM dtb_maker WHERE maker_id = ?", $this->arrSearchData['maker_id']);
+        }
+
+        // 商品名検索条件
+        if (strlen($this->arrSearchData['name']) == 0) {
+            $this->arrSearch['name'] = "指定なし";
+        } else {
+            $this->arrSearch['name'] = $this->arrSearchData['name'];
+        }
+
         foreach ($this->arrProducts as $arrProduct) {
             $js_fnOnLoad .= "fnSetClassCategories(document.product_form{$arrProduct['product_id']});\n";
-        }    
+        }
 
-        //カート処理
-        if (intval($this->arrForm['product_id']) > 0) {
+        if ($this->inCart) {
             // 商品IDの正当性チェック
             if (!SC_Utils_Ex::sfIsInt($this->arrForm['product_id']) || !$objDb->sfIsRecord("dtb_products", "product_id", $this->arrForm['product_id'], "del_flg = 0 AND status = 1")) {
                 SC_Utils_Ex::sfDispSiteError(PRODUCT_NOT_FOUND);
@@ -203,6 +213,7 @@
      * @return integer カテゴリID
      */
     function lfGetCategoryId($category_id) {
+        $objDb = new SC_Helper_DB_Ex();
 
         // 指定なしの場合、0 を返す
         if (
@@ -232,7 +243,8 @@
     }
 
     /* 商品一覧の表示 */
-    function lfGetProductsList($objDb) {
+    function lfDispProductsList() {
+        $objDb = new SC_Helper_DB_Ex();
         $arrval = array();
         $arrval_order = array();
         $arrval_category = array();
@@ -424,15 +436,26 @@
      *
      * @return void
      */
-    function lfGetDisplayNum($display_number) {
+    function lfLoadParam() {
+        $this->arrForm = $_GET;
+
+        $this->mode = $this->getMode();
+        $this->arrSearchData['category_id'] = $this->lfGetCategoryId($this->arrForm['category_id']);
+        $this->arrSearchData['maker_id'] = $this->arrForm['maker_id'];
+        $this->arrSearchData['name'] = $this->arrForm['name'];
+        $this->orderby = $this->arrForm['orderby'];
         // 表示件数
-        if (!isset($display_number)
-            OR !SC_Utils_Ex::sfIsInt($display_number)
+        if (
+            isset($this->arrForm['disp_number'])
+            && SC_Utils_Ex::sfIsInt($this->arrForm['disp_number'])
         ) {
+            $this->disp_number = $this->arrForm['disp_number'];
+        } else {
             //最小表示件数を選択
-            return current(array_keys($this->arrPRODUCTLISTMAX));
+            $this->disp_number = current(array_keys($this->arrPRODUCTLISTMAX));
         }
-        return $display_number;
+        $this->tpl_pageno = $this->arrForm['pageno'];
+        $this->inCart = strlen($this->arrForm['product_id']) >= 1;
     }
 
     /**
@@ -459,46 +482,5 @@
             $this->tpl_next_page = $objURL->path . '?' . $objURL->getQueryString();
         }
     }
-
-    /**
-     * ページタイトルの設定
-     *
-     * @return str
-     */    
-    function lfGetPageTitle($mode,$category_id = 0,$objDb){
-        if ($mode == 'search') {
-            return "検索結果";
-        } elseif ($category_id == 0) {
-            return "全商品";
-        } else {
-            $arrCat = $objDb->sfGetCat($category_id);
-            return $arrCat['name'];
-        }
-        return "";       
-    }
-
-    /**
-     * 検索条件の設定
-     *
-     * @return array
-     */    
-    function lfGetSearchCondition($arrSearchData,$objQuery){
-        $arrSearch = array('category'=>"指定なし",'maker'=>"指定なし",'name'=>"指定なし");
-        // カテゴリー検索条件
-        if ($arrSearchData['category_id'] > 0) {
-            $arrSearch['category'] = $objQuery->getOne("SELECT category_name FROM dtb_category WHERE category_id = ?", array($arrSearchData['category_id']));
-        }
-
-        // メーカー検索条件
-        if (strlen($arrSearchData['maker_id']) > 0) {
-            $arrSearch['maker'] = $objQuery->getOne("SELECT name FROM dtb_maker WHERE maker_id = ?", array($arrSearchData['maker_id']));
-        }
-
-        // 商品名検索条件
-        if (strlen($arrSearchData['name']) > 0) {
-            $arrSearch['name'] = $arrSearchData['name'];
-        }
-        return $arrSearch;
-    }
 }
 ?>




Svn-src-all メーリングリストの案内