Ignore:
Timestamp:
2010/12/20 08:53:26 (16 years ago)
Author:
AMUAMU
Message:

#781 (規格のデータベースを木構造に)により動作していなかった商品CSVアップロード機能を全面見直し修正。
#657 (CSVダウンロードの改善) の商品ダウンロードに関する部分の再修正。
#582 (#250(管理画面の商品CSV出力で規格名1、規格名2、カテゴリIDが強制出力される) による不具合) の修正
#850 (顧客CSV 列追加時にロジックの変更を不要に) の準備修正
#849 (LC_Page_Admin_Products_UploadCSV パラメータを無視) の解決

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_5-dev/data/class/helper/SC_Helper_CSV.php

    r19746 r19752  
    6262     * @param string $where SQL の WHERE 句 
    6363     * @param array $arrVal WHERE 句の要素 
     64     * @param array $order SQL の ORDER BY 句 
    6465     * @return array CSV 項目の配列 
    6566     */ 
    66     function sfgetCsvOutput($csv_id = "", $where = '0=0', $arrVal = array()){ 
    67         $objQuery = new SC_Query(); 
    68         $ret = array(); 
    69  
    70         $sql = <<< __EOS__ 
    71             SELECT 
    72                 no, 
    73                 csv_id, 
    74                 col, 
    75                 disp_name, 
    76                 rank, 
    77                 status, 
    78                 create_date, 
    79                 update_date, 
    80                 mb_convert_kana_option 
    81             FROM 
    82                 dtb_csv 
    83 __EOS__; 
    84  
    85         if (strlen($csv_id) >= 1) { 
    86             $where = "($where) AND csv_id = ?"; 
     67    function sfgetCsvOutput($csv_id = "", $where = '', $arrVal = array(), $order = 'rank, no'){ 
     68        $objQuery =& SC_Query::getSingletonInstance(); 
     69         
     70        $cols = 'no, csv_id, col, disp_name, rank, status, rw_flg, mb_convert_kana_option, size_const_type, error_check_types'; 
     71        $table = 'dtb_csv'; 
     72         
     73        if(SC_Utils_Ex::sfIsInt($csv_id)){ 
     74            if($where == "") { 
     75                $where = "csv_id = ?"; 
     76            }else{ 
     77                $where = "$where AND csv_id = ?"; 
     78            } 
    8779            $arrVal[] = $csv_id; 
    8880        } 
    89  
    90         if (strlen($where) >= 1) { 
    91             $sql .= " WHERE $where"; 
    92         } 
    93  
    94         $sql .= " ORDER BY "; 
    95         $sql .= "     rank , no"; 
    96         $sql .= " "; 
    97  
    98         $ret = $objQuery->getAll($sql, $arrVal); 
    99  
    100         return $ret; 
     81        $objQuery->setOrder($order); 
     82         
     83        $arrRet = $objQuery->select($cols, $table, $where, $arrVal); 
     84        return $arrRet; 
    10185    } 
    10286 
     
    121105    } 
    122106     
     107    /** 
     108     * CSVが出力設定でインポート可能かのチェック 
     109     * 
     110     * @param array sfgetCsvOutputで取得した内容(またはそれと同等の配列) 
     111     * @return boolean true:インポート可能、false:インポート不可 
     112     */ 
     113    function sfIsImportCSVFrame(&$arrCSVFrame) { 
     114        $result = true; 
     115        foreach($arrCSVFrame as $key => $val) { 
     116            if($val['status'] != "1" 
     117                    and $val['rw_flg'] == "1" 
     118                    and $val['error_check_types'] != "" 
     119                    and stripos($val['error_check_types'], "EXIST_CHECK") !== FALSE) { 
     120                //必須フィールド 
     121                $result = false; 
     122            } 
     123        } 
     124        return $result; 
     125    } 
     126     
     127    /** 
     128     * CSVが出力設定で更新可能かのチェック 
     129     * 
     130     * @param array sfgetCsvOutputで取得した内容(またはそれと同等の配列) 
     131     * @return boolean true:更新可能、false:新規追加のみ不可 
     132     */ 
     133    function sfIsUpdateCSVFrame(&$arrCSVFrame) { 
     134        $result = true; 
     135        foreach($arrCSVFrame as $key => $val) { 
     136            if($val['status'] != "1" 
     137                    and $val['rw_flg'] == "3") { 
     138                //キーフィールド 
     139                $result = false; 
     140            } 
     141        } 
     142        return $result; 
     143    } 
     144     
     145    /** 
     146     * CSVファイルのカウント数を得る. 
     147     * 
     148     * @param resource $fp fopenを使用して作成したファイルポインタ 
     149     * @return integer CSV のカウント数 
     150     */ 
     151    function sfGetCSVRecordCount($fp) { 
     152 
     153        $count = 0; 
     154        while(!feof($fp)) { 
     155            $arrCSV = fgetcsv($fp, CSV_LINE_MAX); 
     156            $count++; 
     157        } 
     158        // ファイルポインタを戻す 
     159        if (rewind($fp)) { 
     160            return $count-1; 
     161        } else { 
     162            return FALSE; 
     163        } 
     164    } 
     165 
    123166    //  CSV作成 コールバック関数 
    124167    function cbOutputProductCSV($data) { 
     
    140183        $arrOutputCols = $arrOutput['col']; 
    141184 
    142         $objQuery = new SC_Query(); 
     185        $objQuery =& SC_Query::getSingletonInstance(); 
    143186        $objQuery->setOrder($order); 
    144187         
    145188        $objProduct = new SC_Product(); 
    146189        $cols = SC_Utils_Ex::sfGetCommaList($arrOutputCols, true); 
    147         $sql = $objQuery->getSql($cols, $objProduct->prdclsSQL(),$where); 
     190        // このWhereを足さないと無効な規格も出力される。現行仕様と合わせる為追加。 
     191        $inner_where = 'dtb_products_class.del_flg = 0'; 
     192        $sql = $objQuery->getSql($cols, $objProduct->prdclsSQL($inner_where),$where); 
    148193        $header = $this->sfArrayToCSV($arrOutput['disp_name']); 
    149194        $header = mb_convert_encoding($header, 'SJIS-Win'); 
     
    182227        $cols = SC_Utils_Ex::sfGetCommaList($this->arrREVIEW_CVSCOL); 
    183228 
    184         $objQuery = new SC_Query(); 
     229        $objQuery =& SC_Query::getSingletonInstance(); 
    185230        $objQuery->setOption($option); 
    186231 
     
    201246        $cols = SC_Utils_Ex::sfGetCommaList($this->arrTRACKBACK_CVSCOL); 
    202247 
    203         $objQuery = new SC_Query(); 
     248        $objQuery =& SC_Query::getSingletonInstance(); 
    204249        $objQuery->setOption($option); 
    205250 
     
    223268        $arrOutputCols = $arrOutput['col']; 
    224269 
    225         $objQuery = new SC_Query(); 
     270        $objQuery =& SC_Query::getSingletonInstance(); 
    226271        $objQuery->setOrder('rank DESC'); 
    227272 
     
    254299        $cols = SC_Utils_Ex::sfGetCommaList($arrCsvOutputCols); 
    255300 
    256         $objQuery = new SC_Query(); 
     301        $objQuery =& SC_Query::getSingletonInstance(); 
    257302        $objQuery->setOption($option); 
    258303 
Note: See TracChangeset for help on using the changeset viewer.