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

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

  • 個別処理の統合
File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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); 
Note: See TracChangeset for help on using the changeset viewer.