[Svn-src-all:1386] [version-2_5-dev 20276] r20207 の取り消し。CSV関連がでぐれってるのと、支払い方法を出力しないようになっているため(仕様変更に伴うエラーは別途解決します)。

AMUAMU admin @ mail.ec-cube.net
2011年 2月 21日 (月) 01:11:35 JST


Subversion committed to /home/svn/open 20276
http://svn.ec-cube.net/open_trac/changeset/20276
┌────────────────────────────┐
│更新者 :  AMUAMU                                       │
│更新日時:  2011-02-21 01:11:35 +0900 (月, 21  2月 2011)│
└────────────────────────────┘

Log:
--------------------------------------------------------
r20207 の取り消し。CSV関連がでぐれってるのと、支払い方法を出力しないようになっているため(仕様変更に伴うエラーは別途解決します)。

Changed:                      [U:修正,A:追加,D:削除]
--------------------------------------------------------
U   branches/version-2_5-dev/data/class/helper/SC_Helper_CSV.php
U   branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products.php
U   branches/version-2_5-dev/html/install/sql/insert_data.sql

変更: branches/version-2_5-dev/data/class/helper/SC_Helper_CSV.php
===================================================================
--- branches/version-2_5-dev/data/class/helper/SC_Helper_CSV.php	2011-02-20 15:30:56 UTC (rev 20275)
+++ branches/version-2_5-dev/data/class/helper/SC_Helper_CSV.php	2011-02-20 16:11:35 UTC (rev 20276)
@@ -165,6 +165,54 @@
         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;
+    }
+
     // CSV出力データを作成する。(レビュー)
     function lfGetReviewCSV($where, $option, $arrval) {
 

変更: 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	2011-02-20 15:30:56 UTC (rev 20275)
+++ branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products.php	2011-02-20 16:11:35 UTC (rev 20276)
@@ -138,10 +138,16 @@
                 switch($this->getMode()) {
                 // CSVを送信する。
                 case 'csv':
-                    list($file_name, $data) = $this->getCSV($where, $arrval, $order, $objProduct);
-                    $this->sendResponseCSV($file_name, $data);
+                    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);
                     exit;
-                    
                 // 全件削除(ADMIN_MODE)
                 case 'delete_all':
                     $this->doDelete($where, $arrval);
@@ -351,42 +357,6 @@
     }
 
     /**
-     * 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);
-    }
-
-    /**
      * 検索結果の行数を取得する.
      *
      * @param string $where 検索条件の WHERE 句

変更: branches/version-2_5-dev/html/install/sql/insert_data.sql
===================================================================
--- branches/version-2_5-dev/html/install/sql/insert_data.sql	2011-02-20 15:30:56 UTC (rev 20275)
+++ branches/version-2_5-dev/html/install/sql/insert_data.sql	2011-02-20 16:11:35 UTC (rev 20276)
@@ -214,8 +214,10 @@
 INSERT INTO dtb_csv (no, csv_id, col, disp_name, rank, rw_flg, status, create_date, update_date, mb_convert_kana_option, size_const_type, error_check_types) VALUES (69, 1, '(SELECT comment FROM dtb_recommend_products WHERE prdcls.product_id = dtb_recommend_products.product_id ORDER BY rank DESC, recommend_product_id DESC limit 1 offset 5) AS recommend_comment6', '関連商品コメント(6)', 69, 1, 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'KVa', 'LLTEXT_LEN', 'SPTAB_CHECK,MAX_LENGTH_CHECK');
 INSERT INTO dtb_csv (no, csv_id, col, disp_name, rank, rw_flg, status, create_date, update_date, mb_convert_kana_option, size_const_type, error_check_types) VALUES (70, 1, '(SELECT ARRAY_TO_STRING(ARRAY(SELECT product_status_id FROM dtb_product_status WHERE dtb_product_status.product_id = prdcls.product_id and del_flg = 0 ORDER BY dtb_product_status.product_status_id), '','')) as product_statuses', '商品ステータス', 70, 1, 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'KVa', 'STEXT_LEN', 'SPTAB_CHECK,MAX_LENGTH_CHECK');
 INSERT INTO dtb_csv (no, csv_id, col, disp_name, rank, rw_flg, status, create_date, update_date, mb_convert_kana_option, size_const_type, error_check_types) VALUES (71, 1, '(SELECT ARRAY_TO_STRING(ARRAY(SELECT name FROM dtb_product_status LEFT JOIN mtb_status ON  dtb_product_status.product_status_id = mtb_status.id  WHERE dtb_product_status.product_id = prdcls.product_id and del_flg = 0 ORDER BY dtb_product_status.product_status_id), '','')) as product_status_names', '商品ステータス名', 71, 2, 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'KVa', 'LTEXT_LEN', 'SPTAB_CHECK,MAX_LENGTH_CHECK');
-INSERT INTO dtb_csv (no, csv_id, col, disp_name, rank, rw_flg, status, create_date, update_date, mb_convert_kana_option, size_const_type, error_check_types) VALUES (72, 1, '(SELECT ARRAY_TO_STRING(ARRAY(SELECT category_id FROM dtb_product_categories WHERE dtb_product_categories.product_id = prdcls.product_id ORDER BY dtb_product_categories.rank), '','')) as category_ids', 'カテゴリID', 72, 1, 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'KVa', 'STEXT_LEN', 'SPTAB_CHECK,MAX_LENGTH_CHECK');
-INSERT INTO dtb_csv (no, csv_id, col, disp_name, rank, rw_flg, status, create_date, update_date, mb_convert_kana_option, size_const_type, error_check_types) VALUES (73, 1, '(SELECT ARRAY_TO_STRING(ARRAY(SELECT category_name FROM dtb_product_categories LEFT JOIN dtb_category ON dtb_product_categories.category_id = dtb_category.category_id WHERE dtb_product_categories.product_id = prdcls.product_id ORDER BY dtb_product_categories.rank), '','')) as category_names', 'カテゴリ名', 73, 2, 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'KVa', 'LTEXT_LEN', 'SPTAB_CHECK,MAX_LENGTH_CHECK');
+INSERT INTO dtb_csv (no, csv_id, col, disp_name, rank, rw_flg, status, create_date, update_date, mb_convert_kana_option, size_const_type, error_check_types) VALUES (72, 1, '(SELECT ARRAY_TO_STRING(ARRAY(SELECT payment_id FROM dtb_payment_options WHERE dtb_payment_options.product_class_id = prdcls.product_class_id ORDER BY dtb_payment_options.rank), '','')) as product_payment_ids', '支払い方法フラグ', 72, 1, 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'KVa', 'STEXT_LEN', 'SPTAB_CHECK,MAX_LENGTH_CHECK');
+INSERT INTO dtb_csv (no, csv_id, col, disp_name, rank, rw_flg, status, create_date, update_date, mb_convert_kana_option, size_const_type, error_check_types) VALUES (73, 1, '(SELECT ARRAY_TO_STRING(ARRAY(SELECT payment_method FROM dtb_payment_options LEFT JOIN dtb_payment ON dtb_payment_options.payment_id = dtb_payment.payment_id WHERE dtb_payment_options.product_class_id = prdcls.product_class_id ORDER BY dtb_payment_options.rank), '','')) as product_payment_names', '支払い方法名', 73, 2, 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'KVa', 'LTEXT_LEN', 'SPTAB_CHECK,MAX_LENGTH_CHECK');
+INSERT INTO dtb_csv (no, csv_id, col, disp_name, rank, rw_flg, status, create_date, update_date, mb_convert_kana_option, size_const_type, error_check_types) VALUES (74, 1, '(SELECT ARRAY_TO_STRING(ARRAY(SELECT category_id FROM dtb_product_categories WHERE dtb_product_categories.product_id = prdcls.product_id ORDER BY dtb_product_categories.rank), '','')) as category_ids', 'カテゴリID', 74, 1, 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'KVa', 'STEXT_LEN', 'SPTAB_CHECK,MAX_LENGTH_CHECK');
+INSERT INTO dtb_csv (no, csv_id, col, disp_name, rank, rw_flg, status, create_date, update_date, mb_convert_kana_option, size_const_type, error_check_types) VALUES (75, 1, '(SELECT ARRAY_TO_STRING(ARRAY(SELECT category_name FROM dtb_product_categories LEFT JOIN dtb_category ON dtb_product_categories.category_id = dtb_category.category_id WHERE dtb_product_categories.product_id = prdcls.product_id ORDER BY dtb_product_categories.rank), '','')) as category_names', 'カテゴリ名', 75, 2, 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'KVa', 'LTEXT_LEN', 'SPTAB_CHECK,MAX_LENGTH_CHECK');
 INSERT INTO dtb_csv (no, csv_id, col, disp_name, rank, status, create_date, update_date) VALUES (76, 2, 'customer_id', '顧客ID', 1, 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);                                   
 INSERT INTO dtb_csv (no, csv_id, col, disp_name, rank, status, create_date, update_date) VALUES (77, 2, 'name01', 'お名前(姓)', 2, 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);                                    
 INSERT INTO dtb_csv (no, csv_id, col, disp_name, rank, status, create_date, update_date) VALUES (78, 2, 'name02', 'お名前(名)', 3, 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);                                    




Svn-src-all メーリングリストの案内