Changeset 20737


Ignore:
Timestamp:
2011/03/20 08:13:11 (10 years ago)
Author:
AMUAMU
Message:

#657 (CSVダウンロードの改善)
#627 (ソース整形・ソースコメントの改善)
#628(未使用処理・定義などの削除)

不要になった処理の削除、ソース整形、CSVダウンロード処理の改善

File:
1 edited

Legend:

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

    r20735 r20737  
    2323    var $arrSubnaviName; 
    2424 
    25     /** レビュー管理項目 */ 
    26     var $arrREVIEW_CVSCOL; 
    27  
    28     /** レビュータイトル */ 
    29     var $arrREVIEW_CVSTITLE; 
    30  
    3125    // }}} 
    3226    // {{{ constructor 
     
    3731    function SC_Helper_CSV() { 
    3832        $this->init(); 
    39  
    40         $masterData = new SC_DB_MasterData_Ex(); 
    41         $this->arrPref = $masterData->getMasterData('mtb_pref'); 
    42         $this->arrSex = $masterData->getMasterData("mtb_sex"); 
    43         $this->arrDISP = $masterData->getMasterData("mtb_disp"); 
    44         $this->arrRECOMMEND = $masterData->getMasterData("mtb_recommend"); 
    4533    } 
    4634 
     
    7058                                      5 => 'カテゴリ' 
    7159                                      ); 
    72     } 
    73  
    74     /** 
    75      * CSV 項目を出力する. 
    76      * 
    77      * @param integer $csv_id CSV ID 
    78      * @param string $where SQL の WHERE 句 
    79      * @param array $arrVal WHERE 句の要素 
    80      * @param array $order SQL の ORDER BY 句 
    81      * @return array CSV 項目の配列 
    82      */ 
    83     function sfGetCsvOutput($csv_id = "", $where = '', $arrVal = array(), $order = 'rank, no'){ 
    84         $objQuery =& SC_Query_Ex::getSingletonInstance(); 
    85  
    86         $cols = 'no, csv_id, col, disp_name, rank, status, rw_flg, mb_convert_kana_option, size_const_type, error_check_types'; 
    87         $table = 'dtb_csv'; 
    88  
    89         if(SC_Utils_Ex::sfIsInt($csv_id)){ 
    90             if($where == "") { 
    91                 $where = "csv_id = ?"; 
    92             }else{ 
    93                 $where = "$where AND csv_id = ?"; 
    94             } 
    95             $arrVal[] = $csv_id; 
    96         } 
    97         $objQuery->setOrder($order); 
    98  
    99         $arrRet = $objQuery->select($cols, $table, $where, $arrVal); 
    100         return $arrRet; 
    101     } 
    102  
    103     /** 
    104      * CSVが出力設定でインポート可能かのチェック 
    105      * 
    106      * @param array sfGetCsvOutputで取得した内容(またはそれと同等の配列) 
    107      * @return boolean true:インポート可能、false:インポート不可 
    108      */ 
    109     function sfIsImportCSVFrame(&$arrCSVFrame) { 
    110         $result = true; 
    111         foreach($arrCSVFrame as $key => $val) { 
    112             if($val['status'] != CSV_COLUMN_STATUS_FLG_ENABLE 
    113                     and $val['rw_flg'] == CSV_COLUMN_RW_FLG_READ_WRITE 
    114                     and $val['error_check_types'] != "" 
    115                     and strpos(strtoupper($val['error_check_types']), "EXIST_CHECK") !== FALSE) { 
    116                 //必須フィールド 
    117                 $result = false; 
    118             } 
    119         } 
    120         return $result; 
    121     } 
    122  
    123     /** 
    124      * CSVが出力設定で更新可能かのチェック 
    125      * 
    126      * @param array sfGetCsvOutputで取得した内容(またはそれと同等の配列) 
    127      * @return boolean true:更新可能、false:新規追加のみ不可 
    128      */ 
    129     function sfIsUpdateCSVFrame(&$arrCSVFrame) { 
    130         $result = true; 
    131         foreach($arrCSVFrame as $key => $val) { 
    132             if($val['status'] != CSV_COLUMN_STATUS_FLG_ENABLE 
    133                     and $val['rw_flg'] == CSV_COLUMN_RW_FLG_KEY_FIELD) { 
    134                 //キーフィールド 
    135                 $result = false; 
    136             } 
    137         } 
    138         return $result; 
    139     } 
    140  
    141     /** 
    142      * CSVファイルのカウント数を得る. 
    143      * 
    144      * @param resource $fp fopenを使用して作成したファイルポインタ 
    145      * @return integer CSV のカウント数 
    146      */ 
    147     function sfGetCSVRecordCount($fp) { 
    148         $count = 0; 
    149         while(!feof($fp)) { 
    150             $arrCSV = fgetcsv($fp, CSV_LINE_MAX); 
    151             $count++; 
    152         } 
    153         // ファイルポインタを戻す 
    154         if (rewind($fp)) { 
    155             return $count-1; 
    156         } else { 
    157             return FALSE; 
    158         } 
    159     } 
    160  
    161     /** 
    162      * CSV作成 テンポラリファイル出力 コールバック関数 
    163      * 
    164      * @param mixed $data 出力データ 
    165      * @return boolean true (true:固定 false:中断) 
    166      */ 
    167     function cbOutputCSV($data) { 
    168         $line = $this->sfArrayToCSV($data); 
    169         $line = mb_convert_encoding($line, 'SJIS-Win'); 
    170         $line .= "\r\n"; 
    171         fwrite($this->fpOutput, $line); 
    172         return true; 
    17360    } 
    17461 
     
    221108 
    222109    /** 
     110     * CSV 項目を出力する. 
     111     * 
     112     * @param integer $csv_id CSV ID 
     113     * @param string $where SQL の WHERE 句 
     114     * @param array $arrVal WHERE 句の要素 
     115     * @param array $order SQL の ORDER BY 句 
     116     * @return array CSV 項目の配列 
     117     */ 
     118    function sfGetCsvOutput($csv_id = "", $where = '', $arrVal = array(), $order = 'rank, no'){ 
     119        $objQuery =& SC_Query_Ex::getSingletonInstance(); 
     120 
     121        $cols = 'no, csv_id, col, disp_name, rank, status, rw_flg, mb_convert_kana_option, size_const_type, error_check_types'; 
     122        $table = 'dtb_csv'; 
     123 
     124        if(SC_Utils_Ex::sfIsInt($csv_id)){ 
     125            if($where == "") { 
     126                $where = "csv_id = ?"; 
     127            }else{ 
     128                $where = "$where AND csv_id = ?"; 
     129            } 
     130            $arrVal[] = $csv_id; 
     131        } 
     132        $objQuery->setOrder($order); 
     133 
     134        $arrRet = $objQuery->select($cols, $table, $where, $arrVal); 
     135        return $arrRet; 
     136    } 
     137 
     138    /** 
     139     * CSVが出力設定でインポート可能かのチェック 
     140     * 
     141     * @param array sfGetCsvOutputで取得した内容(またはそれと同等の配列) 
     142     * @return boolean true:インポート可能、false:インポート不可 
     143     */ 
     144    function sfIsImportCSVFrame(&$arrCSVFrame) { 
     145        $result = true; 
     146        foreach($arrCSVFrame as $key => $val) { 
     147            if($val['status'] != CSV_COLUMN_STATUS_FLG_ENABLE 
     148                    and $val['rw_flg'] == CSV_COLUMN_RW_FLG_READ_WRITE 
     149                    and $val['error_check_types'] != "" 
     150                    and strpos(strtoupper($val['error_check_types']), "EXIST_CHECK") !== FALSE) { 
     151                //必須フィールド 
     152                $result = false; 
     153            } 
     154        } 
     155        return $result; 
     156    } 
     157 
     158    /** 
     159     * CSVが出力設定で更新可能かのチェック 
     160     * 
     161     * @param array sfGetCsvOutputで取得した内容(またはそれと同等の配列) 
     162     * @return boolean true:更新可能、false:新規追加のみ不可 
     163     */ 
     164    function sfIsUpdateCSVFrame(&$arrCSVFrame) { 
     165        $result = true; 
     166        foreach($arrCSVFrame as $key => $val) { 
     167            if($val['status'] != CSV_COLUMN_STATUS_FLG_ENABLE 
     168                    and $val['rw_flg'] == CSV_COLUMN_RW_FLG_KEY_FIELD) { 
     169                //キーフィールド 
     170                $result = false; 
     171            } 
     172        } 
     173        return $result; 
     174    } 
     175 
     176    /** 
     177     * CSVファイルのカウント数を得る. 
     178     * 
     179     * @param resource $fp fopenを使用して作成したファイルポインタ 
     180     * @return integer CSV のカウント数 
     181     */ 
     182    function sfGetCSVRecordCount($fp) { 
     183        $count = 0; 
     184        while(!feof($fp)) { 
     185            $arrCSV = fgetcsv($fp, CSV_LINE_MAX); 
     186            $count++; 
     187        } 
     188        // ファイルポインタを戻す 
     189        if (rewind($fp)) { 
     190            return $count-1; 
     191        } else { 
     192            return FALSE; 
     193        } 
     194    } 
     195 
     196    /** 
     197     * CSV作成 テンポラリファイル出力 コールバック関数 
     198     * 
     199     * @param mixed $data 出力データ 
     200     * @return boolean true (true:固定 false:中断) 
     201     */ 
     202    function cbOutputCSV($data) { 
     203        $line = $this->sfArrayToCSV($data); 
     204        $line = mb_convert_encoding($line, 'SJIS-Win'); 
     205        $line .= "\r\n"; 
     206        fwrite($this->fpOutput, $line); 
     207        return true; 
     208    } 
     209 
     210    /** 
    223211     * SQL文からクエリ実行し CSVファイルを送信する 
    224212     * 
     
    266254    } 
    267255 
    268     // CSV出力データを作成する。 
    269     function lfGetCSV($from, $where, $option, $arrval, $arrCsvOutputCols = "", $arrCsvOutputConverts = array()) { 
    270  
    271         $cols = SC_Utils_Ex::sfGetCommaList($arrCsvOutputCols); 
    272  
    273         $objQuery =& SC_Query_Ex::getSingletonInstance(); 
    274         $objQuery->setOption($option); 
    275  
    276         $list_data = $objQuery->select($cols, $from, $where, $arrval, MDB2_FETCHMODE_ORDERED); 
    277  
    278         $csv = ''; 
    279         foreach ($list_data as $row) { 
    280             $row = SC_Utils_Ex::mbConvertKanaWithArray($row, $arrCsvOutputConverts); 
    281             // 各項目をCSV出力用に変換する。 
    282             $line = $this->sfArrayToCsv($row); 
    283             $csv .= "$line\r\n"; 
    284         } 
    285         return $csv; 
    286     } 
    287  
    288     // 各項目をCSV出力用に変換する。 
    289     function lfMakeCSV($list) { 
    290         $line = ""; 
    291  
    292         foreach($list as $key => $val) { 
    293             $tmp = ""; 
    294             switch($key) { 
    295                 case 'order_pref': 
    296                 case 'deliv_pref': 
    297                     $tmp = $this->arrPref[$val]; 
    298                     break; 
    299                 default: 
    300                     $tmp = $val; 
    301                     break; 
    302             } 
    303  
    304             $tmp = preg_replace('/[",]/', " ", $tmp); 
    305             $line .= "\"".$tmp."\","; 
    306         } 
    307         // 文末の","を変換 
    308         $line = $this->replaceLineSuffix($line); 
    309         return $line; 
    310     } 
    311  
    312     // 各項目をCSV出力用に変換する。(レビュー) 
    313     function lfMakeReviewCSV($list) { 
    314         $line = ""; 
    315  
    316         foreach($list as $key => $val) { 
    317             $tmp = ""; 
    318             switch($key) { 
    319             case 'sex': 
    320                 $tmp = isset($this->arrSex[$val]) ? $this->arrSex[$val] : ""; 
    321                 break; 
    322             case 'recommend_level': 
    323                 $tmp = isset($this->arrRECOMMEND[$val]) ? $this->arrRECOMMEND[$val] 
    324                                                         : ""; 
    325                 break; 
    326             case 'status': 
    327                 $tmp = isset($this->arrDISP[$val]) ? $this->arrDISP[$val] : ""; 
    328                 break; 
    329             default: 
    330                 $tmp = $val; 
    331                 break; 
    332             } 
    333  
    334             $tmp = preg_replace('/[",]/', " ", $tmp); 
    335             $line .= "\"".$tmp."\","; 
    336         } 
    337         // 文末の","を変換 
    338         $line = $this->replaceLineSuffix($line); 
    339         return $line; 
    340     } 
    341  
    342     /** 
    343      * 行末の ',' を CRLF へ変換する. 
    344      * 
    345      * @access private 
    346      * @param string $line CSV出力用の1行分の文字列 
    347      * @return string 行末の ',' を CRLF に変換した文字列 
    348      */ 
    349     function replaceLineSuffix($line) { 
    350         return preg_replace('/,$/',"\r\n",$line); 
    351     } 
    352  
    353256    /** 
    354257     * 1次元配列を1行のCSVとして返す 
    355258     * 参考: http://jp.php.net/fputcsv 
     259     * 
     260     * @param array $fields データ1次元配列 
     261     * @param string $delimiter 
     262     * @param string $enclosure 
     263     * @param string $arrayDelimiter 
     264     * @return string 結果行 
    356265     */ 
    357266    function sfArrayToCsv($fields, $delimiter = ',', $enclosure = '"', $arrayDelimiter = '|') { 
     
    387296 
    388297    /** 
    389      * CSVを送信する。 
    390      */ 
    391     function lfDownloadCsv($arrayData, $prefix = ""){ 
     298     * 配列データのCSVを送信する。 
     299     * 
     300     * @param array $fields データ配列 
     301     * @param string $prefix 
     302     * @return void 
     303     */ 
     304    function lfDownloadCsv($arrData, $prefix = ""){ 
    392305 
    393306        if($prefix == "") { 
     
    405318 
    406319        /* データを出力 */ 
    407         foreach ($arrayData as $lineArray) { 
     320        foreach ($arrData as $lineArray) { 
    408321            $lineString = $this->sfArrayToCsv($lineArray); 
    409322            $lineString = mb_convert_encoding($lineString, 'SJIS-Win'); 
     
    414327    /** 
    415328     * CSVファイルを送信する。 
     329     * 
     330     * @param string $filepath 送信するファイルのフルパス 
     331     * @param string $prefix 
     332     * @return void 
    416333     */ 
    417334    function lfDownloadCSVFile($filepath, $prefix = "") { 
     
    428345        echo file_get_contents($filepath); 
    429346    } 
    430  
    431     /** 
    432      * CSVデータを取得する。 
    433      */ 
    434     function lfGetCsv2($arrayData, $prefix = "") { 
    435  
    436         if($prefix == "") { 
    437             $dir_name = SC_Utils_Ex::sfUpDirName(); 
    438             $file_name = $dir_name . date('ymdHis') .".csv"; 
    439         } else { 
    440             $file_name = $prefix . date('ymdHis') .".csv"; 
    441         } 
    442  
    443         /* データを出力 */ 
    444         foreach ($arrayData as $lineArray) { 
    445             $lineString = $this->sfArrayToCsv($lineArray); 
    446             $lineString = mb_convert_encoding($lineString, 'SJIS-Win'); 
    447             $lineString .= "\r\n"; 
    448         } 
    449         return array($file_name, $lineString); 
    450     } 
    451347} 
    452348?> 
Note: See TracChangeset for help on using the changeset viewer.