Index: branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products.php	(revision 20202)
+++ branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products.php	(revision 20207)
@@ -139,14 +139,8 @@
                 // CSVを送信する。
                 case 'csv':
-                    require_once(CLASS_EX_REALDIR . "helper_extends/SC_Helper_CSV_Ex.php");
-
-                    $objCSV = new SC_Helper_CSV_Ex();
-
-                    // CSVを送信する。正常終了の場合、終了。
-                    $objCSV->sfDownloadProductsCsv($where, $arrval, $order, true);
-                    // FIXME: sendResponseに渡した方が良いのか？
-//                        $data = $objCSV->sfDownloadProductsCsv($where, $arrval, $order);
-//                        $this->sendResponseCSV($fime_name, $data);
+                    list($file_name, $data) = $this->getCSV($where, $arrval, $order, $objProduct);
+                    $this->sendResponseCSV($file_name, $data);
                     exit;
+                    
                 // 全件削除(ADMIN_MODE)
                 case 'delete_all':
@@ -358,4 +352,40 @@
 
     /**
+     * CSV データを構築して取得する.
+     *
+     * 構築に成功した場合は, ファイル名と出力内容を配列で返す.
+     * 構築に失敗した場合は, false を返す.
+     *
+     * @param string $where 検索条件の WHERE 句
+     * @param array $arrValues 検索条件のパラメータ
+     * @param string $order 検索結果の並び順
+     * @param SC_Product $objProduct SC_Product インスタンス
+     * @return array|boolean 構築に成功した場合, ファイルと出力内容の配列;
+     *                       失敗した場合 false
+     */
+    function getCSV($where, $arrValues, $order, &$objProduct) {
+        require_once(CLASS_EX_REALDIR . "helper_extends/SC_Helper_CSV_Ex.php");
+        $objCSV = new SC_Helper_CSV_Ex();
+
+        $option = "ORDER BY $order";
+
+        // CSV出力タイトル行の作成
+        $arrCsvOutput = SC_Utils_Ex::sfSwapArray($objCSV->sfGetCsvOutput(1, 'status = 1'));
+
+        if (count($arrCsvOutput) <= 0) {
+            return false;
+        }
+
+        $arrCsvOutputCols = $arrCsvOutput['col'];
+        $arrCsvOutputConvs = $arrCsvOutput['conv'];
+        $arrCsvOutputTitle = $arrCsvOutput['disp_name'];
+        $head = SC_Utils_Ex::sfGetCSVList($arrCsvOutputTitle);
+        $from = $objProduct->prdclsSQL();
+        $data = $objCSV->lfGetCSV($from, $where, $option, $arrValues,
+                                  $arrCsvOutputCols, $arrCsvOutputConvs);
+        return SC_Utils_Ex::sfGetCSVData($head . $data);
+    }
+
+    /**
      * 検索結果の行数を取得する.
      *
Index: branches/version-2_5-dev/data/class/helper/SC_Helper_CSV.php
===================================================================
--- branches/version-2_5-dev/data/class/helper/SC_Helper_CSV.php	(revision 19999)
+++ branches/version-2_5-dev/data/class/helper/SC_Helper_CSV.php	(revision 20207)
@@ -170,52 +170,4 @@
         fwrite($this->fpOutput, $line);
         return true;
-    }
-
-    // CSVを送信する。(商品)
-    function sfDownloadProductsCsv($where, $arrval, $order, $is_download = false) {
-        // 実行時間を制限しない
-        @set_time_limit(0);
-
-        // CSV出力タイトル行の作成
-        $arrOutput = SC_Utils_Ex::sfSwapArray($this->sfGetCsvOutput(1, 'status = ' . CSV_COLUMN_STATUS_FLG_ENABLE));
-        if (count($arrOutput) <= 0) return false; // 失敗終了
-        $arrOutputCols = $arrOutput['col'];
-
-        $objQuery =& SC_Query::getSingletonInstance();
-        $objQuery->setOrder($order);
-        
-        $objProduct = new SC_Product();
-        $cols = SC_Utils_Ex::sfGetCommaList($arrOutputCols, true);
-        // このWhereを足さないと無効な規格も出力される。現行仕様と合わせる為追加。
-        $inner_where = 'dtb_products_class.del_flg = 0';
-        $sql = $objQuery->getSql($cols, $objProduct->prdclsSQL($inner_where),$where);
-        $header = $this->sfArrayToCSV($arrOutput['disp_name']);
-        $header = mb_convert_encoding($header, 'SJIS-Win');
-        $header .= "\r\n";
-        
-        //テンポラリファイル作成
-        // TODO: パフォーマンス向上には、ストリームを使うようにすると良い
-        //  環境要件がバージョン5.1以上になったら使うように変えても良いかと
-        //  fopen('php://temp/maxmemory:'. (5*1024*1024), 'r+');
-        $tmp_filename = tempnam(CSV_TEMP_REALDIR, 'product_csv');
-        $this->fpOutput = fopen($tmp_filename, "w+");
-
-        fwrite($this->fpOutput, $header);
-
-        $objQuery->doCallbackAll(array(&$this, 'cbOutputProductCSV'), $sql, $arrval);
-
-        fclose($this->fpOutput);
-
-        if($is_download) {
-            // CSVを送信する。
-            $this->lfDownloadCSVFile($tmp_filename,"product_");
-            $res = true;
-        }else{
-            $res = SC_Utils_Ex::sfReadFile($tmp_filename);
-        }
-        
-        //テンポラリファイル削除
-        unlink($tmp_filename);
-        return $res;
     }
 
