Changeset 19950


Ignore:
Timestamp:
2011/01/18 06:06:11 (10 years ago)
Author:
AMUAMU
Message:

#704 (CSV出力で在庫無制限が0で出力されるパターンが存在する) の解決
#752 (商品登録CSV 最大カラム数($colmax)の比較の誤り) の解決

Location:
branches/version-2_5-dev
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_5-dev/data/class/helper/SC_Helper_CSV.php

    r19805 r19950  
    9393 
    9494        // CSV出力タイトル行の作成 
    95         $arrCsvOutput = SC_Utils_Ex::sfSwapArray($this->sfgetCsvOutput($csv_id, 'status = 1')); 
     95        $arrCsvOutput = SC_Utils_Ex::sfSwapArray($this->sfgetCsvOutput($csv_id, 'status = ' . CSV_COLUMN_STATUS_FLG_ENABLE)); 
    9696 
    9797        if (count($arrCsvOutput) <= 0) break; 
     
    113113        $result = true; 
    114114        foreach($arrCSVFrame as $key => $val) { 
    115             if($val['status'] != "1" 
    116                     and $val['rw_flg'] == "1" 
     115            if($val['status'] != CSV_COLUMN_STATUS_FLG_ENABLE 
     116                    and $val['rw_flg'] == CSV_COLUMN_RW_FLG_READ_WRITE 
    117117                    and $val['error_check_types'] != "" 
    118118                    and stripos($val['error_check_types'], "EXIST_CHECK") !== FALSE) { 
     
    133133        $result = true; 
    134134        foreach($arrCSVFrame as $key => $val) { 
    135             if($val['status'] != "1" 
    136                     and $val['rw_flg'] == "3") { 
     135            if($val['status'] != CSV_COLUMN_STATUS_FLG_ENABLE 
     136                    and $val['rw_flg'] == CSV_COLUMN_RW_FLG_KEY_FIELD) { 
    137137                //キーフィールド 
    138138                $result = false; 
     
    178178 
    179179        // CSV出力タイトル行の作成 
    180         $arrOutput = SC_Utils_Ex::sfSwapArray($this->sfgetCsvOutput(1, 'status = 1')); 
     180        $arrOutput = SC_Utils_Ex::sfSwapArray($this->sfgetCsvOutput(1, 'status = ' . CSV_COLUMN_STATUS_FLG_ENABLE)); 
    181181        if (count($arrOutput) <= 0) return false; // 失敗終了 
    182182        $arrOutputCols = $arrOutput['col']; 
     
    263263 
    264264        // CSV出力タイトル行の作成 
    265         $arrOutput = SC_Utils_Ex::sfSwapArray($this->sfgetCsvOutput(5, 'status = 1')); 
     265        $arrOutput = SC_Utils_Ex::sfSwapArray($this->sfgetCsvOutput(5, 'status = ' . CSV_COLUMN_STATUS_FLG_ENABLE)); 
    266266        if (count($arrOutput) <= 0) return false; // 失敗終了 
    267267        $arrOutputCols = $arrOutput['col']; 
  • branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_UploadCSV.php

    r19805 r19950  
    7878        $this->arrProductType = $masterData->getMasterData("mtb_product_type"); 
    7979        $this->arrMaker = SC_Helper_DB_Ex::sfGetIDValueList("dtb_maker", "maker_id", "name"); 
    80         $this->arrPayments = SC_Helper_DB_Ex::sfGetIDValueList("dtb_payment", "payment_id", "payment_method");            $this->arrAllowedTag = $masterData->getMasterData("mtb_allowed_tag"); 
     80        $this->arrPayments = SC_Helper_DB_Ex::sfGetIDValueList("dtb_payment", "payment_id", "payment_method"); 
     81        $this->arrAllowedTag = $masterData->getMasterData("mtb_allowed_tag"); 
    8182        $this->arrTagCheckItem = array(); 
    8283    } 
     
    129130        // パラメータ情報の初期化 
    130131        $this->lfInitParam($arrCSVFrame); 
    131          
    132         $colmax = $this->objFormParam->getCount(); 
     132        // 現在のフォーマットにおける列数を取得 
     133        $col_count = $this->objFormParam->getCount(); 
    133134        $this->objFormParam->setHtmlDispNameArray(); 
    134135        $this->arrTitle = $this->objFormParam->getHtmlDispNameArray(); 
     
    176177                } 
    177178 
    178                 // レコード数を得る 
    179                 $rec_count = $this->objCSV->sfGetCSVRecordCount($fp); 
    180                 if($rec_count === FALSE) { 
     179                // レコード行数を得る 
     180                $record_count = $this->objCSV->sfGetCSVRecordCount($fp); 
     181                // ファイルが無効な場合はエラー 
     182                if($record_count === FALSE) { 
    181183                    SC_Utils_Ex::sfDispError(""); 
    182184                } 
    183185 
    184                 $line = 0;      // 行数 
     186                $line = 0;      // 現在行数 
    185187                $regist = 0;    // 登録数 
    186188 
     
    192194                while(!feof($fp) && !$err) { 
    193195                    $arrCSV = fgetcsv($fp, CSV_LINE_MAX); 
    194  
    195196                    // 行カウント 
    196197                    $line++; 
    197  
    198198                    if($line <= 1) { 
    199199                        continue; 
    200200                    } 
    201  
    202                     // 項目数カウント 
    203                     $max = count($arrCSV); 
    204  
     201                    // 現在行の項目数カウント 
     202                    $line_col_count = count($arrCSV); 
    205203                    // 項目数が1以下の場合は無視する 
    206                     if($max <= 1) { 
     204                    if($line_col_count <= 1) { 
    207205                        continue; 
    208206                    } 
    209207 
    210208                    // 項目数チェック 
    211                     if($max != $colmax) { 
    212                         echo "※ 項目数が" . $max . "個検出されました。項目数は" . $colmax . "個になります。</br>\n"; 
     209                    if($line_col_count != $col_count) { 
     210                        echo "※ 項目数が" . $line_col_count . "個検出されました。項目数は" . $col_count . "個になります。</br>\n"; 
    213211                        $err = true; 
    214212                    } else { 
     
    225223                    // 入力エラーチェック 
    226224                    if(count($arrCSVErr) > 0) { 
    227                         echo "<font color=\"red\">■" . $line . "行目でエラーが発生しました。</font></br>\n"; 
     225                        echo "<font color=\"red\">■ $line / $record_count 行目でエラーが発生しました。</font></br>\n"; 
    228226                        foreach($arrCSVErr as $val) { 
    229227                            $this->printError($val); 
     
    238236                    $arrParam = $this->objFormParam->getHashArray(); 
    239237 
    240                     if(!$err) echo $line." / ".$rec_count. "行目 (商品ID:".$arrParam['product_id']." / 商品名:".$arrParam['name'].")\n<br />"; 
     238                    if(!$err) echo $line. "行目 (商品ID:".$arrParam['product_id']." / 商品名:".$arrParam['name'].")\n<br />"; 
    241239                    flush(); 
    242240                } 
     
    299297        // CSV項目毎の処理 
    300298        foreach($arrCSVFrame as $item) { 
    301             if($item['status'] == '2') continue; 
     299            if($item['status'] == CSV_COLUMN_STATUS_FLG_DISABLE) continue; 
    302300            //サブクエリ構造の場合は AS名 を使用 
    303301            if(preg_match_all('/\(.+\) as (.+)$/i', $item['col'], $match, PREG_SET_ORDER)) { 
     
    329327                    , $arrErrorCheckTypes 
    330328                    , $item['default'] 
    331                     , ($item['rw_flg'] != 2) ? true : false 
     329                    , ($item['rw_flg'] != CSV_COLUMN_RW_FLG_READ_ONLY) ? true : false 
    332330                    ); 
    333331        } 
     
    516514                    $arrCSVFrame[$key]['default'] = implode(',',array_keys($this->arrPayments)); 
    517515                    break; 
     516                case 'stock_unlimited': 
     517                    $arrCSVFrame[$key]['default'] = UNLIMITED_FLG_LIMITED; 
    518518                default: 
    519519                    break; 
     
    562562            } 
    563563            // TODO: 在庫数、無制限フラグの扱いについて仕様がぶれているので要調整 
    564             if($sqlval['stock'] == "" and $sqlval['stock_unlimited'] != '1') { 
     564            if($sqlval['stock'] == "" and $sqlval['stock_unlimited'] != UNLIMITED_FLG_UNLIMITED) { 
    565565                //在庫数設定がされておらず、かつ無制限フラグが設定されていない場合、強制無制限 
    566                 $sqlval['stock_unlimited'] = '1'; 
    567             }elseif($sqlval['stock'] != "" and $sqlval['stock_unlimited'] != '1') { 
     566                $sqlval['stock_unlimited'] = UNLIMITED_FLG_UNLIMITED; 
     567            }elseif($sqlval['stock'] != "" and $sqlval['stock_unlimited'] != UNLIMITED_FLG_UNLIMITED) { 
    568568                //在庫数設定時は在庫無制限フラグをクリア 
    569                 $sqlval['stock_unlimited'] = '0'; 
    570             }elseif($sqlval['stock'] != "" and $sqlval['stock_unlimited'] == '1') { 
     569                $sqlval['stock_unlimited'] = UNLIMITED_FLG_LIMITED; 
     570            }elseif($sqlval['stock'] != "" and $sqlval['stock_unlimited'] == UNLIMITED_FLG_UNLIMITED) { 
    571571                //在庫無制限フラグ設定時は在庫数をクリア 
    572572                $sqlval['stock'] = ''; 
     
    574574        }else{ 
    575575            //更新時のみ設定する項目 
    576             if(array_key_exists('stock_unlimited', $sqlval) and $sqlval['stock_unlimited'] == '1') { 
     576            if(array_key_exists('stock_unlimited', $sqlval) and $sqlval['stock_unlimited'] == UNLIMITED_FLG_UNLIMITED) { 
    577577                $sqlval['stock'] = ''; 
    578578            } 
     
    676676            if(array_search('stock_unlimited', $this->arrFormKeyList) === FALSE) { 
    677677                $arrErr['stock'] = "※ 在庫数は必須です(無制限フラグ項目がある場合のみ空欄許可)。"; 
    678             }else if($item['stock_unlimited'] != "1") { 
     678            }else if($item['stock_unlimited'] != UNLIMITED_FLG_UNLIMITED) { 
    679679                $arrErr['stock'] = "※ 在庫数または在庫無制限フラグのいずれかの入力が必須です。"; 
    680680            } 
  • branches/version-2_5-dev/data/mtb_constants_init.php

    r19943 r19950  
    603603/** 配置ID: HeaderInternalNavi */ 
    604604define('TARGET_ID_HEADER_INTERNAL', 10); 
     605/** CSV入出力列設定有効無効フラグ: 有効 */ 
     606define('CSV_COLUMN_STATUS_FLG_ENABLE', 1); 
     607/** CSV入出力列設定有効無効フラグ: 無効 */ 
     608define('CSV_COLUMN_STATUS_FLG_DISABLE', 2); 
     609/** CSV入出力列設定読み書きフラグ: 読み書き可能 */ 
     610define('CSV_COLUMN_RW_FLG_READ_WRITE', 1); 
     611/** CSV入出力列設定読み書きフラグ: 読み込みのみ可能 */ 
     612define('CSV_COLUMN_RW_FLG_READ_ONLY', 2); 
     613/** CSV入出力列設定読み書きフラグ: キー列 */ 
     614define('CSV_COLUMN_RW_FLG_KEY_FIELD', 3); 
     615/** 無制限フラグ: 無制限 */ 
     616define('UNLIMITED_FLG_UNLIMITED', "1"); 
     617/** 無制限フラグ: 制限有り */ 
     618define('UNLIMITED_FLG_LIMITED', "0"); 
    605619?> 
  • branches/version-2_5-dev/html/install/sql/insert_data.sql

    r19943 r19950  
    13321332INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('TARGET_ID_FOOTER_BOTTOM', '9', 1209, '配置ID: FooterBottomNavi'); 
    13331333INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('TARGET_ID_HEADER_INTERNAL', '10', 1210, '配置ID: HeaderInternalNavi'); 
     1334INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('CSV_COLUMN_STATUS_FLG_ENABLE', '1', 1211, 'CSV入出力列設定有効無効フラグ: 有効'); 
     1335INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('CSV_COLUMN_STATUS_FLG_DISABLE', '2', 1212, 'CSV入出力列設定有効無効フラグ: 無効'); 
     1336INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('CSV_COLUMN_RW_FLG_READ_WRITE', '1', 1213, 'CSV入出力列設定読み書きフラグ: 読み書き可能'); 
     1337INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('CSV_COLUMN_RW_FLG_READ_ONLY', '2', 1214, 'CSV入出力列設定読み書きフラグ: 読み込みのみ可能'); 
     1338INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('CSV_COLUMN_RW_FLG_KEY_FIELD', '3', 1215, 'CSV入出力列設定読み書きフラグ: キー列'); 
     1339INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('UNLIMITED_FLG_UNLIMITED', '"1"', 1216, '無制限フラグ: 無制限'); 
     1340INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('UNLIMITED_FLG_LIMITED', '"0"', 1217, '無制限フラグ: 制限有り'); 
    13341341 
    13351342INSERT INTO dtb_index_list (table_name, column_name, recommend_flg, recommend_comment) VALUES ('dtb_customer', 'email_mobile', 0, '会員数増加時のログイン処理速度を向上させたいときに試してみてください'); 
Note: See TracChangeset for help on using the changeset viewer.