Changeset 20207 for branches/version-2_5-dev/data
- Timestamp:
- 2011/02/19 20:24:28 (16 years ago)
- Location:
- branches/version-2_5-dev/data/class
- Files:
-
- 2 edited
-
helper/SC_Helper_CSV.php (modified) (1 diff)
-
pages/admin/products/LC_Page_Admin_Products.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_5-dev/data/class/helper/SC_Helper_CSV.php
r19999 r20207 170 170 fwrite($this->fpOutput, $line); 171 171 return true; 172 }173 174 // CSVを送信する。(商品)175 function sfDownloadProductsCsv($where, $arrval, $order, $is_download = false) {176 // 実行時間を制限しない177 @set_time_limit(0);178 179 // CSV出力タイトル行の作成180 $arrOutput = SC_Utils_Ex::sfSwapArray($this->sfGetCsvOutput(1, 'status = ' . CSV_COLUMN_STATUS_FLG_ENABLE));181 if (count($arrOutput) <= 0) return false; // 失敗終了182 $arrOutputCols = $arrOutput['col'];183 184 $objQuery =& SC_Query::getSingletonInstance();185 $objQuery->setOrder($order);186 187 $objProduct = new SC_Product();188 $cols = SC_Utils_Ex::sfGetCommaList($arrOutputCols, true);189 // このWhereを足さないと無効な規格も出力される。現行仕様と合わせる為追加。190 $inner_where = 'dtb_products_class.del_flg = 0';191 $sql = $objQuery->getSql($cols, $objProduct->prdclsSQL($inner_where),$where);192 $header = $this->sfArrayToCSV($arrOutput['disp_name']);193 $header = mb_convert_encoding($header, 'SJIS-Win');194 $header .= "\r\n";195 196 //テンポラリファイル作成197 // TODO: パフォーマンス向上には、ストリームを使うようにすると良い198 // 環境要件がバージョン5.1以上になったら使うように変えても良いかと199 // fopen('php://temp/maxmemory:'. (5*1024*1024), 'r+');200 $tmp_filename = tempnam(CSV_TEMP_REALDIR, 'product_csv');201 $this->fpOutput = fopen($tmp_filename, "w+");202 203 fwrite($this->fpOutput, $header);204 205 $objQuery->doCallbackAll(array(&$this, 'cbOutputProductCSV'), $sql, $arrval);206 207 fclose($this->fpOutput);208 209 if($is_download) {210 // CSVを送信する。211 $this->lfDownloadCSVFile($tmp_filename,"product_");212 $res = true;213 }else{214 $res = SC_Utils_Ex::sfReadFile($tmp_filename);215 }216 217 //テンポラリファイル削除218 unlink($tmp_filename);219 return $res;220 172 } 221 173 -
branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products.php
r20202 r20207 139 139 // CSVを送信する。 140 140 case 'csv': 141 require_once(CLASS_EX_REALDIR . "helper_extends/SC_Helper_CSV_Ex.php"); 142 143 $objCSV = new SC_Helper_CSV_Ex(); 144 145 // CSVを送信する。正常終了の場合、終了。 146 $objCSV->sfDownloadProductsCsv($where, $arrval, $order, true); 147 // FIXME: sendResponseに渡した方が良いのか? 148 // $data = $objCSV->sfDownloadProductsCsv($where, $arrval, $order); 149 // $this->sendResponseCSV($fime_name, $data); 141 list($file_name, $data) = $this->getCSV($where, $arrval, $order, $objProduct); 142 $this->sendResponseCSV($file_name, $data); 150 143 exit; 144 151 145 // 全件削除(ADMIN_MODE) 152 146 case 'delete_all': … … 358 352 359 353 /** 354 * CSV データを構築して取得する. 355 * 356 * 構築に成功した場合は, ファイル名と出力内容を配列で返す. 357 * 構築に失敗した場合は, false を返す. 358 * 359 * @param string $where 検索条件の WHERE 句 360 * @param array $arrValues 検索条件のパラメータ 361 * @param string $order 検索結果の並び順 362 * @param SC_Product $objProduct SC_Product インスタンス 363 * @return array|boolean 構築に成功した場合, ファイルと出力内容の配列; 364 * 失敗した場合 false 365 */ 366 function getCSV($where, $arrValues, $order, &$objProduct) { 367 require_once(CLASS_EX_REALDIR . "helper_extends/SC_Helper_CSV_Ex.php"); 368 $objCSV = new SC_Helper_CSV_Ex(); 369 370 $option = "ORDER BY $order"; 371 372 // CSV出力タイトル行の作成 373 $arrCsvOutput = SC_Utils_Ex::sfSwapArray($objCSV->sfGetCsvOutput(1, 'status = 1')); 374 375 if (count($arrCsvOutput) <= 0) { 376 return false; 377 } 378 379 $arrCsvOutputCols = $arrCsvOutput['col']; 380 $arrCsvOutputConvs = $arrCsvOutput['conv']; 381 $arrCsvOutputTitle = $arrCsvOutput['disp_name']; 382 $head = SC_Utils_Ex::sfGetCSVList($arrCsvOutputTitle); 383 $from = $objProduct->prdclsSQL(); 384 $data = $objCSV->lfGetCSV($from, $where, $option, $arrValues, 385 $arrCsvOutputCols, $arrCsvOutputConvs); 386 return SC_Utils_Ex::sfGetCSVData($head . $data); 387 } 388 389 /** 360 390 * 検索結果の行数を取得する. 361 391 *
Note: See TracChangeset
for help on using the changeset viewer.
