Changeset 19950 for branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_UploadCSV.php
- Timestamp:
- 2011/01/18 06:06:11 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_UploadCSV.php
r19805 r19950 78 78 $this->arrProductType = $masterData->getMasterData("mtb_product_type"); 79 79 $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"); 81 82 $this->arrTagCheckItem = array(); 82 83 } … … 129 130 // パラメータ情報の初期化 130 131 $this->lfInitParam($arrCSVFrame); 131 132 $col max= $this->objFormParam->getCount();132 // 現在のフォーマットにおける列数を取得 133 $col_count = $this->objFormParam->getCount(); 133 134 $this->objFormParam->setHtmlDispNameArray(); 134 135 $this->arrTitle = $this->objFormParam->getHtmlDispNameArray(); … … 176 177 } 177 178 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) { 181 183 SC_Utils_Ex::sfDispError(""); 182 184 } 183 185 184 $line = 0; // 行数186 $line = 0; // 現在行数 185 187 $regist = 0; // 登録数 186 188 … … 192 194 while(!feof($fp) && !$err) { 193 195 $arrCSV = fgetcsv($fp, CSV_LINE_MAX); 194 195 196 // 行カウント 196 197 $line++; 197 198 198 if($line <= 1) { 199 199 continue; 200 200 } 201 202 // 項目数カウント 203 $max = count($arrCSV); 204 201 // 現在行の項目数カウント 202 $line_col_count = count($arrCSV); 205 203 // 項目数が1以下の場合は無視する 206 if($ max<= 1) {204 if($line_col_count <= 1) { 207 205 continue; 208 206 } 209 207 210 208 // 項目数チェック 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"; 213 211 $err = true; 214 212 } else { … … 225 223 // 入力エラーチェック 226 224 if(count($arrCSVErr) > 0) { 227 echo "<font color=\"red\">■ " . $line . "行目でエラーが発生しました。</font></br>\n";225 echo "<font color=\"red\">■ $line / $record_count 行目でエラーが発生しました。</font></br>\n"; 228 226 foreach($arrCSVErr as $val) { 229 227 $this->printError($val); … … 238 236 $arrParam = $this->objFormParam->getHashArray(); 239 237 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 />"; 241 239 flush(); 242 240 } … … 299 297 // CSV項目毎の処理 300 298 foreach($arrCSVFrame as $item) { 301 if($item['status'] == '2') continue;299 if($item['status'] == CSV_COLUMN_STATUS_FLG_DISABLE) continue; 302 300 //サブクエリ構造の場合は AS名 を使用 303 301 if(preg_match_all('/\(.+\) as (.+)$/i', $item['col'], $match, PREG_SET_ORDER)) { … … 329 327 , $arrErrorCheckTypes 330 328 , $item['default'] 331 , ($item['rw_flg'] != 2) ? true : false329 , ($item['rw_flg'] != CSV_COLUMN_RW_FLG_READ_ONLY) ? true : false 332 330 ); 333 331 } … … 516 514 $arrCSVFrame[$key]['default'] = implode(',',array_keys($this->arrPayments)); 517 515 break; 516 case 'stock_unlimited': 517 $arrCSVFrame[$key]['default'] = UNLIMITED_FLG_LIMITED; 518 518 default: 519 519 break; … … 562 562 } 563 563 // TODO: 在庫数、無制限フラグの扱いについて仕様がぶれているので要調整 564 if($sqlval['stock'] == "" and $sqlval['stock_unlimited'] != '1') {564 if($sqlval['stock'] == "" and $sqlval['stock_unlimited'] != UNLIMITED_FLG_UNLIMITED) { 565 565 //在庫数設定がされておらず、かつ無制限フラグが設定されていない場合、強制無制限 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) { 568 568 //在庫数設定時は在庫無制限フラグをクリア 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) { 571 571 //在庫無制限フラグ設定時は在庫数をクリア 572 572 $sqlval['stock'] = ''; … … 574 574 }else{ 575 575 //更新時のみ設定する項目 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) { 577 577 $sqlval['stock'] = ''; 578 578 } … … 676 676 if(array_search('stock_unlimited', $this->arrFormKeyList) === FALSE) { 677 677 $arrErr['stock'] = "※ 在庫数は必須です(無制限フラグ項目がある場合のみ空欄許可)。"; 678 }else if($item['stock_unlimited'] != "1") {678 }else if($item['stock_unlimited'] != UNLIMITED_FLG_UNLIMITED) { 679 679 $arrErr['stock'] = "※ 在庫数または在庫無制限フラグのいずれかの入力が必須です。"; 680 680 }
Note: See TracChangeset
for help on using the changeset viewer.