Ignore:
Timestamp:
2011/02/22 10:47:25 (13 years ago)
Author:
AMUAMU
Message:

#476 (CSV出力項目設定(高度な設定)で、一部テーブルの項目一覧が表示されない) に伴う改修
#657 (CSVダウンロードの改善) の改修
#938 (CSV出力 高度な設定 SQL登録できない) の不具合修正
#939 (CSV出力 高度な設定 出力操作で「sfGetCSVData()に移行してね。」と表示) の不具合修正
#971 (リファクタリング [管理画面]コンテンツ管理(CSV出力項目設定)) の改修

File:
1 edited

Legend:

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

    r20285 r20318  
    232232        } 
    233233        // 固有処理ここまで 
    234  
     234        return $this->sfDownloadCsvFromSql($sql, $arrVal, $this->arrSubnavi[$csv_id], $arrOutput['disp_name'], $is_download); 
     235    } 
     236 
     237    /** 
     238     * SQL文からクエリ実行し CSVファイルを送信する 
     239     * 
     240     * @param integer $sql SQL文 
     241     * @param array $arrVal プリペアドステートメントの実行時に使用される配列。配列の要素数は、クエリ内のプレースホルダの数と同じでなければなりません。  
     242     * @param string $file_head ファイル名の頭に付ける文字列 
     243     * @param array $arrHeader ヘッダ出力列配列 
     244     * @param boolean $is_download true:ダウンロード用出力までさせる false:CSVの内容を返す(旧方式、メモリを食います。) 
     245     * @return mixed $is_download = true時 成功失敗フラグ(boolean) 、$is_downalod = false時 string 
     246     */ 
     247    function sfDownloadCsvFromSql($sql, $arrVal = array(), $file_head = 'csv', $arrHeader = array(), $is_download = false) { 
     248        $objQuery =& SC_Query::getSingletonInstance(); 
     249 
     250        // 実行時間を制限しない 
     251        @set_time_limit(0); 
    235252        // ヘッダ構築 
    236         $header = $this->sfArrayToCSV($arrOutput['disp_name']); 
    237         $header = mb_convert_encoding($header, 'SJIS-Win'); 
    238         $header .= "\r\n"; 
     253        if(is_array($arrHeader)) { 
     254            $header = $this->sfArrayToCSV($arrHeader); 
     255            $header = mb_convert_encoding($header, 'SJIS-Win'); 
     256            $header .= "\r\n"; 
     257        } 
    239258 
    240259        //テンポラリファイル作成 
    241260        // TODO: パフォーマンス向上には、ストリームを使うようにすると良い 
    242         //  環境要件がバージョン5.1以上になったら使うように変えても良いかと 
     261        //  環境要件がPHPバージョン5.1以上になったら使うように変えても良いかと 
    243262        //  fopen('php://temp/maxmemory:'. (5*1024*1024), 'r+'); 
    244         $tmp_filename = tempnam(CSV_TEMP_REALDIR, $this->arrSubnavi[$csv_id] . '_csv'); 
     263        $tmp_filename = tempnam(CSV_TEMP_REALDIR, $file_head . '_csv'); 
    245264        $this->fpOutput = fopen($tmp_filename, "w+"); 
    246265        fwrite($this->fpOutput, $header); 
     
    251270        if($is_download) { 
    252271            // CSVを送信する。 
    253             $this->lfDownloadCSVFile($tmp_filename,$this->arrSubnavi[$csv_id] . "_"); 
     272            $this->lfDownloadCSVFile($tmp_filename, $file_head . "_"); 
    254273            $res = true; 
    255274        }else{ 
    256275            $res = SC_Utils_Ex::sfReadFile($tmp_filename); 
    257276        } 
    258          
     277 
    259278        //テンポラリファイル削除 
    260279        unlink($tmp_filename); 
    261280        return $res; 
    262281    } 
     282 
    263283 
    264284    // CSV出力データを作成する。(レビュー) 
Note: See TracChangeset for help on using the changeset viewer.