- Timestamp:
- 2011/02/21 01:11:35 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_5-dev/data/class/helper/SC_Helper_CSV.php
r20270 r20276 164 164 fwrite($this->fpOutput, $line); 165 165 return true; 166 } 167 168 // CSVを送信する。(商品) 169 function sfDownloadProductsCsv($where, $arrval, $order, $is_download = false) { 170 // 実行時間を制限しない 171 @set_time_limit(0); 172 173 // CSV出力タイトル行の作成 174 $arrOutput = SC_Utils_Ex::sfSwapArray($this->sfGetCsvOutput(1, 'status = ' . CSV_COLUMN_STATUS_FLG_ENABLE)); 175 if (count($arrOutput) <= 0) return false; // 失敗終了 176 $arrOutputCols = $arrOutput['col']; 177 178 $objQuery =& SC_Query::getSingletonInstance(); 179 $objQuery->setOrder($order); 180 181 $objProduct = new SC_Product(); 182 $cols = SC_Utils_Ex::sfGetCommaList($arrOutputCols, true); 183 // このWhereを足さないと無効な規格も出力される。現行仕様と合わせる為追加。 184 $inner_where = 'dtb_products_class.del_flg = 0'; 185 $sql = $objQuery->getSql($cols, $objProduct->prdclsSQL($inner_where),$where); 186 $header = $this->sfArrayToCSV($arrOutput['disp_name']); 187 $header = mb_convert_encoding($header, 'SJIS-Win'); 188 $header .= "\r\n"; 189 190 //テンポラリファイル作成 191 // TODO: パフォーマンス向上には、ストリームを使うようにすると良い 192 // 環境要件がバージョン5.1以上になったら使うように変えても良いかと 193 // fopen('php://temp/maxmemory:'. (5*1024*1024), 'r+'); 194 $tmp_filename = tempnam(CSV_TEMP_REALDIR, 'product_csv'); 195 $this->fpOutput = fopen($tmp_filename, "w+"); 196 197 fwrite($this->fpOutput, $header); 198 199 $objQuery->doCallbackAll(array(&$this, 'cbOutputProductCSV'), $sql, $arrval); 200 201 fclose($this->fpOutput); 202 203 if($is_download) { 204 // CSVを送信する。 205 $this->lfDownloadCSVFile($tmp_filename,"product_"); 206 $res = true; 207 }else{ 208 $res = SC_Utils_Ex::sfReadFile($tmp_filename); 209 } 210 211 //テンポラリファイル削除 212 unlink($tmp_filename); 213 return $res; 166 214 } 167 215
Note: See TracChangeset
for help on using the changeset viewer.