Ignore:
Timestamp:
2014/05/29 18:54:58 (6 years ago)
Author:
pineray
Message:

#2560 pageクラスからdtb_reviewテーブルを直接指定している箇所をなくす

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_13-dev/data/class/pages/admin/products/LC_Page_Admin_Products_Review.php

    r23129 r23461  
    8686    public function action() 
    8787    { 
     88        $objReview = new SC_Helper_Review_Ex(); 
    8889        // パラメーター管理クラス 
    8990        $objFormParam = new SC_FormParam_Ex(); 
     
    105106        switch ($this->getMode()) { 
    106107            case 'delete': 
    107                 $this->lfDeleteReview($this->arrForm['review_id']); 
     108                $objReview->delete($this->arrForm['review_id']); 
    108109            case 'search': 
    109110            case 'csv': 
     
    112113                list($where, $arrWhereVal) = $this->lfGetWhere($this->arrForm); 
    113114                // 検索結果を取得 
    114                 $this->arrReview = $this->lfGetReview($this->arrForm, $where, $arrWhereVal); 
     115                $this->arrReview = $this->lfGetReview($objReview); 
    115116 
    116117                //CSVダウンロード 
    117118                if ($this->getMode() == 'csv') { 
     119                    // 検索条件を取得 
     120                    list($where, $arrWhereVal) = $this->lfGetWhere($this->arrForm); 
    118121                    $this->lfDoOutputCsv($where, $arrWhereVal); 
    119122 
     
    158161 
    159162        return $objErr->arrErr; 
    160     } 
    161  
    162     /** 
    163      * 商品レビューの削除 
    164      * 
    165      * @param  integer $review_id 商品レビューのID 
    166      * @return void 
    167      */ 
    168     public function lfDeleteReview($review_id) 
    169     { 
    170         $objQuery =& SC_Query_Ex::getSingletonInstance(); 
    171         $sqlval['del_flg'] = 1; 
    172         $objQuery->update('dtb_review', $sqlval, 'review_id = ?', array($review_id)); 
    173163    } 
    174164 
     
    334324     * レビュー検索結果の取得 
    335325     * 
    336      * @param  array  $arrForm     フォームデータ 
    337      * @param  string $where       WHERE文 
    338      * @param  array  $arrWhereVal WHERE文の判定値 
     326     * @param  SC_Helper_Review $objReview 
    339327     * @return array  レビュー一覧 
    340328     */ 
    341     public function lfGetReview($arrForm, $where, $arrWhereVal) 
    342     { 
    343         $objQuery =& SC_Query_Ex::getSingletonInstance(); 
    344  
    345         // ページ送りの処理 
     329    public function lfGetReview(SC_Helper_Review $objReview) 
     330    { 
     331        $arrForm = $this->arrForm; 
     332 
     333        $query = $this->makeQuery($arrForm); 
     334        $linemax = $objReview->count($query); 
     335 
     336        $this->tpl_linemax = $linemax; 
     337        $this->tpl_pageno = isset($arrForm['search_pageno']) ? $arrForm['search_pageno'] : ''; 
     338 
     339        // ページ送りの取得 
    346340        $page_max = SC_Utils_Ex::sfGetSearchPageMax($arrForm['search_page_max']); 
    347  
    348         if (!isset($arrWhereVal)) $arrWhereVal = array(); 
    349  
    350         $from = 'dtb_review AS A LEFT JOIN dtb_products AS B ON A.product_id = B.product_id '; 
    351         $linemax = $objQuery->count($from, $where, $arrWhereVal); 
    352         $this->tpl_linemax = $linemax; 
    353  
    354         $this->tpl_pageno = isset($arrForm['search_pageno']) ? $arrForm['search_pageno'] : ''; 
    355  
    356         // ページ送りの取得 
    357341        $objNavi = new SC_PageNavi_Ex($this->tpl_pageno, $linemax, $page_max, 
    358342                                      'eccube.moveNaviPage', NAVI_PMAX); 
     
    361345 
    362346        // 取得範囲の指定(開始行番号、行数のセット) 
    363         $objQuery->setLimitOffset($page_max, $startno); 
    364  
    365         // 表示順序 
    366         $order = 'A.create_date DESC'; 
    367         $objQuery->setOrder($order); 
    368         //検索結果の取得 
    369         //レビュー情報のカラムの取得 
    370         $col = 'review_id, A.product_id, reviewer_name, sex, recommend_level, '; 
    371         $col .= 'reviewer_url, title, comment, A.status, A.create_date, A.update_date, name'; 
    372         $from = 'dtb_review AS A LEFT JOIN dtb_products AS B ON A.product_id = B.product_id '; 
    373         $arrReview = $objQuery->select($col, $from, $where, $arrWhereVal); 
     347        $params = array( 
     348            'query' => $query, 
     349            'limit' => $page_max, 
     350            'offset' => $startno 
     351        ); 
     352        $arrReview = $objReview->find($params); 
    374353 
    375354        return $arrReview; 
    376355    } 
     356 
     357    /** 
     358     * SC_Helper_Reviewインスタンスへ渡す検索条件の配列を作成. 
     359     * 
     360     * @param array $data 
     361     * @return array 
     362     */ 
     363    private function makeQuery($data = array()) { 
     364        $query = array(); 
     365 
     366        foreach ($data AS $key => $val) { 
     367            if (empty($val)) continue; 
     368 
     369            switch ($key) { 
     370                case 'search_reviewer_name': 
     371                    $query['reviewer_name'] = $val; 
     372                    break; 
     373 
     374                case 'search_reviewer_url': 
     375                    $query['reviewer_url'] = $val; 
     376                    break; 
     377 
     378                case 'search_name': 
     379                    $query['product_name'] = $val; 
     380                    break; 
     381 
     382                case 'search_product_code': 
     383                    $query['product_code'] = $val; 
     384                    break; 
     385 
     386                case 'search_sex': 
     387                    $query['reviewer_sex'] = $val; 
     388                    break; 
     389 
     390                case 'search_recommend_level': 
     391                    $query['recommend_level'] = $val; 
     392                    break; 
     393 
     394                case 'search_startyear': 
     395                    if (isset($_POST['search_startyear']) && isset($_POST['search_startmonth']) && isset($_POST['search_startday'])) { 
     396                        $date = SC_Utils_Ex::sfGetTimestamp($_POST['search_startyear'], $_POST['search_startmonth'], $_POST['search_startday']); 
     397                        $query['date_from'] = $date; 
     398                    } 
     399                    break; 
     400 
     401                case 'search_endyear': 
     402                    if (isset($_POST['search_startyear']) && isset($_POST['search_startmonth']) && isset($_POST['search_startday'])) { 
     403                        $date = SC_Utils_Ex::sfGetTimestamp($_POST['search_endyear'], $_POST['search_endmonth'], $_POST['search_endday']); 
     404                        $end_date = date('Y/m/d',strtotime('1 day' ,strtotime($date))); 
     405                        $query['date_to'] = $end_date; 
     406                    } 
     407                    break; 
     408 
     409                default: 
     410                    break; 
     411            } 
     412 
     413        } 
     414 
     415        return $query; 
     416    } 
    377417} 
Note: See TracChangeset for help on using the changeset viewer.