Changeset 22739


Ignore:
Timestamp:
2013/03/22 11:07:49 (8 years ago)
Author:
Seasoft
Message:

#1710 (SC_Helper_CSV#sfDownloadCsv 第4引数($order)が無効となるケースがある)

  • 個別処理の統合
Location:
branches/version-2_13-dev/data/class
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_13-dev/data/class/SC_CustomerList.php

    r22567 r22739  
    371371    function getWhere() 
    372372    { 
    373         return array($this->where, $this->arrVal); 
     373        return array(parent::getWhere(), $this->arrVal); 
    374374    } 
    375375} 
  • branches/version-2_13-dev/data/class/SC_SelectSql.php

    r22567 r22739  
    221221    } 
    222222 
     223    /** 
     224     * WHERE を取得する。 
     225     * 
     226     * ヘンテコセッター互換仕様。 
     227     * @param $with_where boolean 必要に応じて WHERE を前置するか 
     228     * @return string WHERE 
     229     */ 
     230    function getWhere($with_where = false) 
     231    { 
     232        $where = $this->where; 
     233 
     234        if (!$with_where) { 
     235            $where = preg_replace('/^\s*WHERE\s+/', '', $where); 
     236        } 
     237 
     238        return $where; 
     239    } 
     240 
    223241    function setWhere($where) 
    224242    { 
  • branches/version-2_13-dev/data/class/helper/SC_Helper_CSV.php

    r22738 r22739  
    7575    function sfDownloadCsv($csv_id, $where = '', $arrVal = array(), $order = '', $is_download = false) 
    7676    { 
     77        $objQuery =& SC_Query_Ex::getSingletonInstance(); 
     78 
    7779        // CSV出力タイトル行の作成 
    7880        $arrOutput = SC_Utils_Ex::sfSwapArray($this->sfGetCsvOutput($csv_id, 'status = ' . CSV_COLUMN_STATUS_FLG_ENABLE)); 
     
    8082        $arrOutputCols = $arrOutput['col']; 
    8183 
    82         $objQuery =& SC_Query_Ex::getSingletonInstance(); 
    83         $objQuery->setOrder($order); 
    8484        $cols = SC_Utils_Ex::sfGetCommaList($arrOutputCols, true); 
    8585 
    86         // TODO: 固有処理 なんかエレガントな処理にしたい 
    8786        // 商品の場合 
    8887        if ($csv_id == 1) { 
    89             $objProduct = new SC_Product_Ex(); 
    90             // このWhereを足さないと無効な規格も出力される。現行仕様と合わせる為追加。 
     88            // この WHERE 句を足さないと無効な規格も出力される。現行仕様と合わせる為追加。 
    9189            $inner_where = 'dtb_products_class.del_flg = 0'; 
    92             $from = $objProduct->prdclsSQL($inner_where); 
    93             $sql = $objQuery->getSql($cols, $from, $where); 
    94         } 
    95         // 商品以外の場合 
    96         else { 
    97             // 会員の場合 
    98             if ($csv_id == 2) { 
    99                 $from = 'dtb_customer'; 
    100             } 
    101             // 注文の場合 
    102             else if ($csv_id == 3) { 
    103                 $from = 'dtb_order'; 
    104             } 
    105             // レビューの場合 
    106             else if ($csv_id == 4) { 
    107                 $from = 'dtb_review AS A INNER JOIN dtb_products AS B on A.product_id = B.product_id'; 
    108             } 
    109             // カテゴリの場合 
    110             else if ($csv_id == 5) { 
    111                 $from = 'dtb_category'; 
    112             } 
    113  
    114             $sql = "SELECT $cols FROM $from $where"; 
    115             // 「getSqlを使っているcsv_id=1」以外で「order指定」がある場合は末尾に付与 
    116             // 全csv_idでgetSqlを使用して生成するよう統一する場合は当メソッドの呼び元も要修正 
    117             if ($csv_id != 1 && strlen($order) >= 1) { 
    118                 $sql .= " ORDER BY $order"; 
    119             } 
    120         } 
    121         // 固有処理ここまで 
     90            $from = SC_Product_Ex::prdclsSQL($inner_where); 
     91        } 
     92        // 会員の場合 
     93        else if ($csv_id == 2) { 
     94            $from = 'dtb_customer'; 
     95        } 
     96        // 注文の場合 
     97        else if ($csv_id == 3) { 
     98            $from = 'dtb_order'; 
     99        } 
     100        // レビューの場合 
     101        else if ($csv_id == 4) { 
     102            $from = 'dtb_review AS A INNER JOIN dtb_products AS B on A.product_id = B.product_id'; 
     103        } 
     104        // カテゴリの場合 
     105        else if ($csv_id == 5) { 
     106            $from = 'dtb_category'; 
     107        } 
     108 
     109        $objQuery->setOrder($order); 
     110        $sql = $objQuery->getSql($cols, $from, $where); 
    122111 
    123112        return $this->sfDownloadCsvFromSql($sql, $arrVal, $this->arrSubnavi[$csv_id], $arrOutput['disp_name'], $is_download); 
  • branches/version-2_13-dev/data/class/pages/admin/customer/LC_Page_Admin_Customer.php

    r22569 r22739  
    230230    { 
    231231        $objSelect = new SC_CustomerList_Ex($arrParam, 'customer'); 
     232        $objCSV = new SC_Helper_CSV_Ex(); 
     233 
    232234        $order = 'update_date DESC, customer_id DESC'; 
    233235 
    234         $objCSV = new SC_Helper_CSV_Ex(); 
    235236        list($where, $arrVal) = $objSelect->getWhere(); 
    236237        return $objCSV->sfDownloadCsv('2', $where, $arrVal, $order, true); 
  • branches/version-2_13-dev/data/class/pages/admin/order/LC_Page_Admin_Order.php

    r22567 r22739  
    440440    function doOutputCSV($where, $arrVal, $order) 
    441441    { 
    442         if ($where != '') { 
    443             $where = " WHERE $where "; 
    444         } 
    445  
    446442        $objCSV = new SC_Helper_CSV_Ex(); 
    447443        $objCSV->sfDownloadCsv('3', $where, $arrVal, $order, true); 
  • branches/version-2_13-dev/data/class/pages/admin/products/LC_Page_Admin_Products_Review.php

    r22567 r22739  
    250250    { 
    251251        $objCSV = new SC_Helper_CSV_Ex(); 
    252         if ($where != '') { 
    253             $where = 'WHERE ' . $where; 
    254         } 
    255252        $objCSV->sfDownloadCsv('4', $where, $arrWhereVal, '', true); 
    256253    } 
Note: See TracChangeset for help on using the changeset viewer.