Changeset 18616


Ignore:
Timestamp:
2010/04/16 12:02:27 (14 years ago)
Author:
Seasoft
Message:
  • #657(CSVダウンロードの改善)現状コミット
  • #148(CSV ダウンロード時の改行コードが LF になっている)修正
Location:
branches/comu-ver2
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • branches/comu-ver2/data/class/helper/SC_Helper_CSV.php

    r18611 r18616  
    6666    function sfgetCsvOutput($csv_id = "", $where = "", $arrVal = array()){ 
    6767        $objQuery = new SC_Query(); 
    68         $arrData = array(); 
    6968        $ret = array(); 
    7069 
    71         $sql = ""; 
    72         $sql .= " SELECT "; 
    73         $sql .= "     no, "; 
    74         $sql .= "     csv_id, "; 
    75         $sql .= "     col, "; 
    76         $sql .= "     disp_name, "; 
    77         $sql .= "     rank, "; 
    78         $sql .= "     status, "; 
    79         $sql .= "     create_date, "; 
    80         $sql .= "     update_date "; 
    81         $sql .= " FROM "; 
    82         $sql .= "     dtb_csv "; 
    83  
    84         if ($where != "") { 
    85             $sql .= $where; 
    86             $arrData = $arrVal; 
    87         }elseif($csv_id != ""){ 
    88             $sql .= " WHERE csv_id = ? "; 
    89             $arrData = array($csv_id); 
     70        $sql = <<< __EOS__ 
     71            SELECT 
     72                no, 
     73                csv_id, 
     74                col, 
     75                disp_name, 
     76                rank, 
     77                status, 
     78                create_date, 
     79                update_date, 
     80                "convert" 
     81            FROM 
     82                dtb_csv 
     83__EOS__; 
     84 
     85        if (strlen($csv_id) >= 1) { 
     86            $where = "($where) AND csv_id = ?"; 
     87            $arrVal[] = $csv_id; 
     88        } 
     89 
     90        if (strlen($where) >= 1) { 
     91            $sql .= " WHERE $where"; 
    9092        } 
    9193 
     
    9496        $sql .= " "; 
    9597 
    96         $ret = $objQuery->getall($sql, $arrData); 
     98        $ret = $objQuery->getall($sql, $arrVal); 
    9799 
    98100        return $ret; 
    99101    } 
    100102 
     103    // CSVを送信する。(共通。現状は受注のみ利用。) 
     104    function sfDownloadCsv($csv_id, $where, $arrval, $order) { 
     105        switch ($csv_id) { 
     106            case 3: // 受注 
     107                $from = 'dtb_order'; 
     108                break; 
     109        } 
     110 
     111        // CSV出力タイトル行の作成 
     112        $arrCsvOutput = SC_Utils_Ex::sfSwapArray($this->sfgetCsvOutput($csv_id, 'status = 1')); 
     113 
     114        if (count($arrCsvOutput) <= 0) break; 
     115 
     116        $arrCsvOutputCols = $arrCsvOutput['col']; 
     117        $arrCsvOutputConvs = $arrCsvOutput['conv']; 
     118        $arrCsvOutputTitle = $arrCsvOutput['disp_name']; 
     119        $head = SC_Utils_Ex::sfGetCSVList($arrCsvOutputTitle); 
     120        $data = $objCSV->lfGetCSV("dtb_order", $where, $option, $arrval, $arrCsvOutputCols, $arrCsvOutputConvs); 
     121    } 
    101122 
    102123    // CSVを送信する。(商品) 
     
    104125 
    105126        // CSV出力タイトル行の作成 
    106         $arrOutput = SC_Utils_Ex::sfSwapArray($this->sfgetCsvOutput(1, " WHERE csv_id = 1 AND status = 1")); 
     127        $arrOutput = SC_Utils_Ex::sfSwapArray($this->sfgetCsvOutput(1, 'status = 1')); 
    107128        if (count($arrOutput) <= 0) return false; // 失敗終了 
    108129        $arrOutputCols = $arrOutput['col']; 
     
    203224 
    204225        // CSV出力タイトル行の作成 
    205         $arrOutput = SC_Utils_Ex::sfSwapArray($this->sfgetCsvOutput(5, " WHERE csv_id = 5 AND status = 1")); 
     226        $arrOutput = SC_Utils_Ex::sfSwapArray($this->sfgetCsvOutput(5, 'status = 1')); 
    206227        if (count($arrOutput) <= 0) return false; // 失敗終了 
    207228        $arrOutputCols = $arrOutput['col']; 
     
    234255 
    235256    // CSV出力データを作成する。 
    236     function lfGetCSV($from, $where, $option, $arrval, $arrCsvOutputCols = "") { 
     257    function lfGetCSV($from, $where, $option, $arrval, $arrCsvOutputCols = "", $arrCsvOutputConverts = array()) { 
    237258 
    238259        $cols = SC_Utils_Ex::sfGetCommaList($arrCsvOutputCols); 
     
    241262        $objQuery->setoption($option); 
    242263 
    243         $list_data = $objQuery->select($cols, $from, $where, $arrval); 
    244  
    245         $max = count($list_data); 
    246         if (!isset($data)) $data = ""; 
    247         for($i = 0; $i < $max; $i++) { 
     264        $list_data = $objQuery->select($cols, $from, $where, $arrval, DB_FETCHMODE_ORDERED); 
     265 
     266        $csv = ''; 
     267        foreach ($list_data as $row) { 
     268            $row = SC_Utils_Ex::mbConvertKanaWithArray($row, $arrCsvOutputConverts); 
    248269            // 各項目をCSV出力用に変換する。 
    249             $data .= $this->lfMakeCSV($list_data[$i]); 
    250         } 
    251         return $data; 
     270            $line = $this->sfArrayToCsv($row); 
     271            $csv .= "$line\r\n"; 
     272        } 
     273        return $csv; 
    252274    } 
    253275 
     
    464486            $lineString = $this->sfArrayToCsv($lineArray); 
    465487            $lineString = mb_convert_encoding($lineString, 'SJIS-Win'); 
    466             echo $lineString . "\n"; 
     488            echo $lineString . "\r\n"; 
    467489        } 
    468490    } 
  • branches/comu-ver2/data/class/pages/admin/contents/LC_Page_Admin_Contents_CSV.php

    r18488 r18616  
    118118 
    119119        // 出力項目の取得 
    120         $arrOutput = SC_Utils_Ex::sfSwapArray($objCSV->sfgetCsvOutput($subno_csv, "WHERE csv_id = ? AND status = 1", array($subno_id))); 
     120        $arrOutput = SC_Utils_Ex::sfSwapArray($objCSV->sfgetCsvOutput($subno_csv, 'status = 1')); 
    121121        $arrOutput = SC_Utils_Ex::sfarrCombine($arrOutput['no'], $arrOutput['disp_name']); 
    122122 
    123123        // 非出力項目の取得 
    124         $arrChoice = SC_Utils_Ex::sfSwapArray($objCSV->sfgetCsvOutput($subno_csv, "WHERE csv_id = ? AND status = 2", array($subno_id))); 
     124        $arrChoice = SC_Utils_Ex::sfSwapArray($objCSV->sfgetCsvOutput($subno_csv, 'status = 2')); 
    125125 
    126126        if (!isset($arrChoice['no'])) $arrChoice['no'] = array(); 
  • branches/comu-ver2/data/class/pages/admin/contents/LC_Page_Admin_Contents_Campaign.php

    r18234 r18616  
    120120 
    121121            // CSV出力タイトル行の作成 
    122             $arrCsvOutput = SC_Utils_Ex::sfSwapArray($objCSV->sfgetCsvOutput(4, " WHERE csv_id = 4 AND status = 1")); 
     122            $arrCsvOutput = SC_Utils_Ex::sfSwapArray($objCSV->sfgetCsvOutput(4, 'status = 1')); 
    123123 
    124124            if (count($arrCsvOutput) <= 0) break; 
  • branches/comu-ver2/data/class/pages/admin/customer/LC_Page_Admin_Customer.php

    r18599 r18616  
    309309 
    310310                    // CSVカラム取得 
    311                     $arrCsvOutput = ($objCSV->sfgetCsvOutput(2, " WHERE csv_id = 2 AND status = 1")); 
     311                    $arrCsvOutput = ($objCSV->sfgetCsvOutput(2, 'status = 1')); 
    312312 
    313313                    if (count($arrCsvOutput) <= 0) break; 
  • branches/comu-ver2/data/class/pages/admin/order/LC_Page_Admin_Order.php

    r18234 r18616  
    288288 
    289289                            // CSV出力タイトル行の作成 
    290                             $arrCsvOutput = SC_Utils_Ex::sfSwapArray($objCSV->sfgetCsvOutput(3, " WHERE csv_id = 3 AND status = 1")); 
     290                            $arrCsvOutput = SC_Utils_Ex::sfSwapArray($objCSV->sfgetCsvOutput(3, 'status = 1')); 
    291291 
    292292                            if (count($arrCsvOutput) <= 0) break; 
    293293 
    294294                            $arrCsvOutputCols = $arrCsvOutput['col']; 
     295                            $arrCsvOutputConvs = $arrCsvOutput['conv']; 
    295296                            $arrCsvOutputTitle = $arrCsvOutput['disp_name']; 
    296297                            $head = SC_Utils_Ex::sfGetCSVList($arrCsvOutputTitle); 
    297                             $data = $objCSV->lfGetCSV("dtb_order", $where, $option, $arrval, $arrCsvOutputCols); 
     298                            $data = $objCSV->lfGetCSV("dtb_order", $where, $option, $arrval, $arrCsvOutputCols, $arrCsvOutputConvs); 
    298299 
    299300                            // CSVを送信する。 
  • branches/comu-ver2/html/install/sql/create_table_mysql.sql

    r18514 r18616  
    940940    create_date datetime NOT NULL, 
    941941    update_date datetime NOT NULL, 
     942    "convert" text, 
    942943    PRIMARY KEY (no) 
    943944) TYPE=InnoDB; 
  • branches/comu-ver2/html/install/sql/create_table_pgsql.sql

    r18514 r18616  
    941941    create_date timestamp NOT NULL DEFAULT now(), 
    942942    update_date timestamp NOT NULL DEFAULT now(), 
     943    convert text, 
    943944    PRIMARY KEY (no) 
    944945); 
  • branches/comu-ver2/html/install/sql/insert_data.sql

    r18579 r18616  
    139139INSERT INTO dtb_csv(csv_id,col,disp_name,rank,create_date,update_date) VALUES (3,'order_zip01','郵便番号1',15,now(),now()); 
    140140INSERT INTO dtb_csv(csv_id,col,disp_name,rank,create_date,update_date) VALUES (3,'order_zip02','郵便番号2',16,now(),now()); 
    141 INSERT INTO dtb_csv(csv_id,col,disp_name,rank,create_date,update_date) VALUES (3,'order_pref','都道府県',17,now(),now()); 
     141INSERT INTO dtb_csv(csv_id,col,disp_name,rank,create_date,update_date) VALUES (3,'(SELECT pref_name FROM mtb_pref WHERE pref_id = dtb_order.order_pref)','都道府県',17,now(),now()); 
    142142INSERT INTO dtb_csv(csv_id,col,disp_name,rank,create_date,update_date) VALUES (3,'order_addr01','住所1',18,now(),now()); 
    143143INSERT INTO dtb_csv(csv_id,col,disp_name,rank,create_date,update_date) VALUES (3,'order_addr02','住所2',19,now(),now()); 
     
    157157INSERT INTO dtb_csv(csv_id,col,disp_name,rank,create_date,update_date) VALUES (3,'deliv_zip01','郵便番号1',33,now(),now()); 
    158158INSERT INTO dtb_csv(csv_id,col,disp_name,rank,create_date,update_date) VALUES (3,'deliv_zip02','郵便番号2',34,now(),now()); 
    159 INSERT INTO dtb_csv(csv_id,col,disp_name,rank,create_date,update_date) VALUES (3,'deliv_pref','都道府県',35,now(),now()); 
     159INSERT INTO dtb_csv(csv_id,col,disp_name,rank,create_date,update_date) VALUES (3,'(SELECT pref_name FROM mtb_pref WHERE pref_id = dtb_order.deliv_pref)','都道府県',35,now(),now()); 
    160160INSERT INTO dtb_csv(csv_id,col,disp_name,rank,create_date,update_date) VALUES (3,'deliv_addr01','住所1',36,now(),now()); 
    161161INSERT INTO dtb_csv(csv_id,col,disp_name,rank,create_date,update_date) VALUES (3,'deliv_addr02','住所2',37,now(),now()); 
     
    193193INSERT INTO dtb_csv(csv_id,col,disp_name,rank,create_date,update_date) VALUES (4,'order_zip01','郵便番号1',16,now(),now()); 
    194194INSERT INTO dtb_csv(csv_id,col,disp_name,rank,create_date,update_date) VALUES (4,'order_zip02','郵便番号2',17,now(),now()); 
    195 INSERT INTO dtb_csv(csv_id,col,disp_name,rank,create_date,update_date) VALUES (4,'order_pref','都道府県',18,now(),now()); 
     195INSERT INTO dtb_csv(csv_id,col,disp_name,rank,create_date,update_date) VALUES (4,'(SELECT pref_name FROM mtb_pref WHERE pref_id = dtb_order.order_pref)','都道府県',18,now(),now()); 
    196196INSERT INTO dtb_csv(csv_id,col,disp_name,rank,create_date,update_date) VALUES (4,'order_addr01','住所1',19,now(),now()); 
    197197INSERT INTO dtb_csv(csv_id,col,disp_name,rank,create_date,update_date) VALUES (4,'order_addr02','住所2',20,now(),now()); 
     
    211211INSERT INTO dtb_csv(csv_id,col,disp_name,rank,create_date,update_date) VALUES (4,'deliv_zip01','郵便番号1',34,now(),now()); 
    212212INSERT INTO dtb_csv(csv_id,col,disp_name,rank,create_date,update_date) VALUES (4,'deliv_zip02','郵便番号2',35,now(),now()); 
    213 INSERT INTO dtb_csv(csv_id,col,disp_name,rank,create_date,update_date) VALUES (4,'deliv_pref','都道府県',36,now(),now()); 
     213INSERT INTO dtb_csv(csv_id,col,disp_name,rank,create_date,update_date) VALUES (4,'(SELECT pref_name FROM mtb_pref WHERE pref_id = dtb_order.deliv_pref)','都道府県',36,now(),now()); 
    214214INSERT INTO dtb_csv(csv_id,col,disp_name,rank,create_date,update_date) VALUES (4,'deliv_addr01','住所1',37,now(),now()); 
    215215INSERT INTO dtb_csv(csv_id,col,disp_name,rank,create_date,update_date) VALUES (4,'deliv_addr02','住所2',38,now(),now()); 
Note: See TracChangeset for help on using the changeset viewer.