Changeset 20410
- Timestamp:
- 2011/02/25 20:30:43 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_ProductClass.php
r20345 r20410 58 58 } 59 59 60 function lfInitDownFile() {61 $i = 1;62 while (isset($_POST['classcategory_id1:' . $i])) {63 //ファイル系処理64 $this->objDownFile->addFile("ダウンロード販売用ファイル", 'down_realfilename'. ":" . $i, explode(",", DOWNLOAD_EXTENSION),DOWN_SIZE, true, 0, 0);65 $i++;66 }67 }68 69 60 /** 70 61 * Page のプロセス. … … 83 74 */ 84 75 function action() { 85 $this->arrSearchHidden = $this->createSearchParams($_POST); 86 87 // FORMデータの引き継ぎ 88 $this->arrForm = $_POST; 89 90 $this->tpl_product_id = 91 isset($_POST['product_id']) ? $_POST['product_id'] : "" ; 92 $this->tpl_pageno = isset($_POST['pageno']) ? $_POST['pageno'] : ""; 93 94 // Downファイル管理クラス 76 // 商品マスタの検索条件パラメータを初期化 77 $objFormParam = new SC_FormParam(); 78 $this->initParam($objFormParam); 79 80 // 規格行のPOSTパラメータを初期化 81 $count = $this->getRowMax($_POST); 82 $this->initRowParam($count, $objFormParam); 83 $objFormParam->setParam($_POST); 84 $objFormParam->convParam(); 85 86 $this->arrSearchHidden = $objFormParam->getSearchArray(); 87 88 $this->tpl_product_id = $objFormParam->getValue('product_id'); 89 $this->tpl_pageno = $objFormParam->getValue('pageno'); 90 91 // Downファイル管理クラスを初期化 95 92 $this->objDownFile = new SC_UploadFile(DOWN_TEMP_REALDIR, DOWN_SAVE_REALDIR); 96 $this->lfInitDownFile(); 93 $this->initDownFile($count, $this->objDownFile); 94 95 $this->arrForm = $objFormParam->getHashArray(); 96 97 97 switch ($this->getMode()) { 98 99 // 編集実行 98 100 case 'edit': 99 // 入力値の変換100 $this->arrForm = $this->lfConvertParam($_POST);101 101 // エラーチェック 102 102 $this->arrErr = $this->lfProductClassError($this->arrForm); 103 103 if (empty($this->arrErr)){ 104 104 $this->tpl_mainpage = 'products/product_class_confirm.tpl'; 105 $this->lfProductConfirmPage( ); // 確認ページ表示105 $this->lfProductConfirmPage($this->arrForm); // 確認ページ表示 106 106 } else { 107 $this->doPreEdit( false ,true);108 107 $this->doPreEdit($objFormParam->getValue('product_id'), false ,true); 108 // Hiddenからのデータを引き継ぐ 109 109 $this->objDownFile->setHiddenFileList($_POST); 110 110 // HIDDEN用に配列を渡す。 … … 112 112 // Form用に配列を渡す。 113 113 $this->arrForm = array_merge((array)$this->arrForm, (array)$this->objDownFile->getFormKikakuDownFile()); 114 $this->doDisp(); 114 $this->doDisp($objFormParam->getValue('product_id'), 115 $objFormParam->getValue('select_class_id1'), 116 $objFormParam->getValue('select_class_id2')); 115 117 } 116 118 break; 117 119 120 // 削除 118 121 case 'delete': 119 $this->doDelete( );122 $this->doDelete($objFormParam->getValue('product_id')); 120 123 break; 121 124 125 // 初期表示 122 126 case 'pre_edit': 123 $this->doPreEdit( );127 $this->doPreEdit($objFormParam->getValue('product_id')); 124 128 // HIDDEN用に配列を渡す。 125 129 $this->arrHidden = array_merge((array)$this->arrHidden, (array)$this->objDownFile->getHiddenFileList()); 126 130 break; 127 131 132 // 「表示する」ボタン押下時 128 133 case 'disp': 129 $this->doDisp(); 134 $this->doDisp($objFormParam->getValue('product_id'), 135 $objFormParam->getValue('select_class_id1'), 136 $objFormParam->getValue('select_class_id2')); 130 137 break; 138 131 139 // ダウンロード商品ファイルアップロード 132 140 case 'upload_down': 133 $this->doPreEdit(true); 141 $product_id = $objFormParam->getValue('product_id'); 142 $down_key = $objFormParam->getValue('down_key'); 143 // 編集画面用パラメータをセット 144 $this->doPreEdit($product_id, true); 134 145 // Hiddenからのデータを引き継ぐ 135 146 $this->objDownFile->setHiddenKikakuFileList($_POST); 136 147 // ファイル存在チェック 137 $this->arrErr = array_merge((array)$this->arrErr, (array)$this->objDownFile->checkEXISTS($ _POST['down_key']));148 $this->arrErr = array_merge((array)$this->arrErr, (array)$this->objDownFile->checkEXISTS($down_key)); 138 149 // ファイル保存処理 139 $this->arrErr[$ _POST['down_key']] = $this->objDownFile->makeTempDownFile($_POST['down_key']);150 $this->arrErr[$down_key] = $this->objDownFile->makeTempDownFile($down_key); 140 151 // HIDDEN用に配列を渡す。 141 152 $this->arrHidden = array_merge((array)$this->arrHidden, (array)$this->objDownFile->getHiddenFileList()); 142 153 // Form用に配列を渡す。 143 154 $this->arrForm = array_merge((array)$this->arrForm, (array)$this->objDownFile->getFormKikakuDownFile()); 144 $this->doDisp(); 155 // 規格の組み合わせ一覧を表示 156 $this->doDisp($product_id, 157 $objFormParam->getValue('select_class_id1'), 158 $objFormParam->getValue('select_class_id2')); 145 159 break; 160 146 161 // ダウンロードファイルの削除 147 162 case 'delete_down': 148 $this->doPreEdit(true); 163 $product_id = $objFormParam->getValue('product_id'); 164 $down_key = $objFormParam->getValue('down_key'); 165 // 編集画面用パラメータをセット 166 $this->doPreEdit($product_id, true); 149 167 // Hiddenからのデータを引き継ぐ 150 168 $this->objDownFile->setHiddenKikakuFileList($_POST); 151 169 // ファイル削除処理 152 $this->objDownFile->deleteKikakuFile($ _POST['down_key']);170 $this->objDownFile->deleteKikakuFile($down_key); 153 171 // HIDDEN用に配列を渡す。 154 172 $this->arrHidden = array_merge((array)$this->arrHidden, (array)$this->objDownFile->getHiddenFileList()); 155 173 // Form用に配列を渡す。 156 174 $this->arrForm = array_merge((array)$this->arrForm, (array)$this->objDownFile->getFormKikakuDownFile()); 157 $this->doDisp(); 175 // 規格の組み合わせ一覧を表示 176 $this->doDisp($product_id, 177 $objFormParam->getValue('select_class_id1'), 178 $objFormParam->getValue('select_class_id2')); 158 179 break; 180 181 // 確認画面からの戻り 159 182 case 'confirm_return': 160 // フォームパラメータの引き継ぎ161 $this->arrForm = $_POST;162 183 // 規格の選択情報は引き継がない。 163 184 $this->arrForm['select_class_id1'] = ""; 164 185 $this->arrForm['select_class_id2'] = ""; 165 $this->doPreEdit( false,true);186 $this->doPreEdit($objFormParam->getValue('product_id'), false, true); 166 187 // Hiddenからのデータを引き継ぐ 167 188 $this->objDownFile->setHiddenFileList($_POST); … … 170 191 // Form用に配列を渡す。 171 192 $this->arrForm = array_merge((array)$this->arrForm, (array)$this->objDownFile->getFormKikakuDownFile()); 172 $this->doDisp(); 193 $this->doDisp($objFormParam->getValue('product_id'), 194 $objFormParam->getValue('select_class_id1'), 195 $objFormParam->getValue('select_class_id2')); 173 196 break; 174 197 case 'complete': … … 176 199 $this->tpl_mainpage = 'products/product_class_complete.tpl'; 177 200 // ファイル情報の初期化 178 $this->lfInitDownFile();179 201 // Hiddenからのデータを引き継ぐ 180 202 $this->objDownFile->setHiddenFileList($_POST); 181 203 // 商品規格の登録 182 $this->registerProductClass($_POST, $_POST['product_id']); 204 $arrList = $objFormParam->getHashArray(); 205 $this->registerProductClass($arrList, $objFormParam->getValue('product_id')); 183 206 // 一時ファイルを本番ディレクトリに移動する 184 207 $this->objDownFile->moveTempDownFile(); … … 187 210 default: 188 211 } 212 213 // 規格プルダウンのリストを取得 189 214 $this->arrClass = $this->getAllClass(); 190 $this->arrForm['product_name'] = $this->getProductName($_POST['product_id']); 215 // 登録対象の商品名を取得 216 $this->arrForm['product_name'] = $this->getProductName($objFormParam->getValue('product_id')); 191 217 } 192 218 … … 198 224 function destroy() { 199 225 parent::destroy(); 226 } 227 /** 228 * パラメータ初期化 229 * 230 * @param <type> $objFormParam 231 */ 232 function initParam(&$objFormParam) { 233 $objFormParam->addParam(); 234 // 商品マスタ検索パラメータ引き継ぎ 235 $objFormParam->addParam("商品ID", "product_id", INT_LEN, "n", array("NUM_CHECK", "MAX_LENGTH_CHECK")); 236 $objFormParam->addParam("カテゴリID", "category_id", STEXT_LEN, "n", array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 237 $objFormParam->addParam("ページ送り番号","search_pageno", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 238 $objFormParam->addParam("表示件数", "search_page_max", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 239 $objFormParam->addParam("商品ID", "search_product_id", INT_LEN, "n", array("NUM_CHECK", "MAX_LENGTH_CHECK")); 240 $objFormParam->addParam("商品コード", "search_product_code", STEXT_LEN, "KVna", array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 241 $objFormParam->addParam("商品名", "search_name", STEXT_LEN, "KVa", array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 242 $objFormParam->addParam("カテゴリ", "search_category_id", STEXT_LEN, "n", array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 243 $objFormParam->addParam("種別", "search_status", INT_LEN, "n", array("MAX_LENGTH_CHECK")); 244 $objFormParam->addParam("開始年", "search_startyear", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 245 $objFormParam->addParam("開始月", "search_startmonth", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 246 $objFormParam->addParam("開始日", "search_startday", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 247 $objFormParam->addParam("終了年", "search_endyear", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 248 $objFormParam->addParam("終了月", "search_endmonth", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 249 $objFormParam->addParam("終了日", "search_endday", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 250 $objFormParam->addParam("ステータス", "search_product_flag", INT_LEN, "n", array("MAX_LENGTH_CHECK")); 251 252 // 規格プルダウン 253 $objFormParam->addParam("規格1", "select_class_id1", null, null, array()); 254 $objFormParam->addParam("規格2", "select_class_id2", null, null, array()); 255 $objFormParam->addParam("規格1", "class_id1", null, null, array()); 256 $objFormParam->addParam("規格2", "class_id2", null, null, array()); 257 258 // ファイルアップロード用 259 $objFormParam->addParam("ファイルアップロード用キー", "down_key", null, null, array()); 260 } 261 262 /** 263 * 規格行ごとのパラメータを初期化する 264 * 265 * @param 行数 $count 266 * @param SC_FormParam $objFormParam 267 */ 268 function initRowParam($count, &$objFormParam) { 269 for ($i = 1; $i < $count; $i++) { 270 $objFormParam->addParam("規格ID1", "classcategory_id1:$i", null, null, array()); 271 $objFormParam->addParam("規格ID2", "classcategory_id2:$i", null, null, array()); 272 $objFormParam->addParam("規格名", "name1:$i", null, null, array()); 273 $objFormParam->addParam("企画名", "name2:$i", null, null, array()); 274 $objFormParam->addParam("product_class_id", "product_class_id:$i", null, null, array()); 275 $objFormParam->addParam("商品コード", "product_code:$i", STEXT_LEN, null, array("MAX_LENGTH_CHECK")); 276 $objFormParam->addParam("在庫数", "stock:$i", AMOUNT_LEN, null, array("EXIST_CHECK", "NUM_CHECK", "MAX_LENGTH_CHECK")); 277 $objFormParam->addParam("在庫数", "stock_unlimited:$i", null, null, array()); 278 $objFormParam->addParam(NORMAL_PRICE_TITLE, "price01:$i", PRICE_LEN, null, array("NUM_CHECK", "MAX_LENGTH_CHECK")); 279 $objFormParam->addParam(SALE_PRICE_TITLE, "price02:$i", PRICE_LEN, null, array("EXIST_CHECK", "NUM_CHECK", "MAX_LENGTH_CHECK")); 280 $objFormParam->addParam("商品種別", "product_type_id:$i", null, null, array()); 281 $objFormParam->addParam("DLファイル名", "down_filename:$i", null, null, array()); 282 $objFormParam->addParam("DLファイル名", "down_realfilename:$i", null, null, array()); 283 $objFormParam->addParam("チェックボックス", "check:$i", null, null, array()); 284 } 285 } 286 287 /** 288 * Downファイル管理クラスを初期化 289 * 290 * @param 行数 $count 291 * @param SC_FormParam $objDownFile 292 */ 293 function initDownFile($count, &$objDownFile) { 294 $i = 1; 295 for ($i = 1; $i < $count; $i++) { 296 $objDownFile->addFile("ダウンロード販売用ファイル", 'down_realfilename'. ":" . $i, explode(",", DOWNLOAD_EXTENSION), DOWN_SIZE, true, 0, 0); 297 } 298 } 299 300 /** 301 * 規格行の最大値を返す 302 * 303 * @param array $arrPost POSTパラメータ 304 * @return int 規格行の最大値 305 */ 306 function getRowMax($arrPost) { 307 $i = 1; 308 foreach ($arrPost as $key => $value) { 309 if ($key == "classcategory_id1:$i") { 310 $i++; 311 } 312 } 313 return $i; 200 314 } 201 315 … … 310 424 } 311 425 312 // 規格選択エラーチェック 426 /** 427 * 規格選択エラーチェックを行う 428 * 429 * ※SC_FormParamで対応していないエラーチェックのため, SC_CheckErrorを使用している. 430 * 431 * @return array エラーの配列 432 */ 313 433 function lfClassError() { 314 434 $objErr = new SC_CheckError(); … … 384 504 } 385 505 } 386 if (count($objErr->arrErr) > 0) {506 if (count($objErr->arrErr) > 0) { 387 507 $objErr->arrErr["error:".$no] = $objErr->arrErr["product_type_id:".$no]; 388 508 $objErr->arrErr["error:".$no] .= $objErr->arrErr["product_code:".$no]; … … 393 513 $objErr->arrErr["error:".$no] .= $objErr->arrErr["down_filename:".$no]; 394 514 $objErr->arrErr["error:".$no] .= $objErr->arrErr["down_realfilename:".$no]; 395 396 515 } 397 516 $no++; … … 400 519 } 401 520 402 /* 確認ページ表示用 */ 403 function lfProductConfirmPage() { 521 /** 522 * 確認ページを表示する 523 * 524 */ 525 function lfProductConfirmPage($arrPost) { 404 526 $objDb = new SC_Helper_DB_Ex(); 405 527 $this->arrForm['mode'] = 'complete'; … … 408 530 $check = 0; 409 531 $no = 1; 410 while ($_POST["classcategory_id1:".$no] != "") {411 if ($_POST["check:".$no] != "") {532 while ($arrPost["classcategory_id1:".$no] != "") { 533 if ($arrPost["check:".$no] != "") { 412 534 $check++; 413 535 } … … 426 548 * 該当商品の商品規格の内容を取得し, フォームに設定する. 427 549 */ 428 function doDisp( ) {429 $this->arrForm['select_class_id1'] = $ _POST['select_class_id1'];430 $this->arrForm['select_class_id2'] = $ _POST['select_class_id2'];550 function doDisp($product_id, $select_class_id1, $select_class_id2) { 551 $this->arrForm['select_class_id1'] = $select_class_id1; 552 $this->arrForm['select_class_id2'] = $select_class_id2; 431 553 $dispError = $this->lfClassError(); 432 554 if (SC_Utils_Ex::isBlank($dispError)) { 433 $this->arrClassCat = $this->getAllClassCategory($_POST['select_class_id1'], $_POST['select_class_id2']); 434 435 $productsClass = $this->getProductsClass($_POST['product_id']); 555 $this->arrClassCat = $this->getAllClassCategory($select_class_id1, $select_class_id2); 556 $productsClass = $this->getProductsClass($product_id); 436 557 437 558 $total = count($this->arrClassCat); … … 447 568 448 569 /** 449 * 規格編集画面を表示する. 450 */ 451 function doPreEdit($existsValue = true,$usepostValue = false) { 452 $existsProductsClass = $this->getProductsClassAndClasscategory($_POST['product_id']); 453 $productsClass = $this->getProductsClass($_POST['product_id']); 570 * 規格編集画面を表示する 571 * 572 * @param integer $product_id 商品ID 573 * @param bool $existsValue 574 * @param bool $usepostValue 575 */ 576 function doPreEdit($product_id, $existsValue = true, $usepostValue = false) { 577 $existsProductsClass = $this->getProductsClassAndClasscategory($product_id); 578 $productsClass = $this->getProductsClass($product_id); 454 579 $this->arrForm["class_id1"] = $existsProductsClass[0]['class_id1']; 455 580 $this->arrForm["class_id2"] = $existsProductsClass[0]['class_id2']; … … 457 582 $this->arrForm['select_class_id2'] = $this->arrForm["class_id2"]; 458 583 $this->arrClassCat = $this->getAllClassCategory($this->arrForm["class_id1"], $this->arrForm["class_id2"]); 459 $objProduct = new SC_Product(); 584 460 585 $total = count($this->arrClassCat); 461 // XXX $i = 1 にすれば ($i+1) は $i で良い? 586 $line = ''; 587 462 588 for ($i = 0; $i < $total; $i++) { 589 $no = $i + 1; 463 590 if ($existsValue) { 464 591 foreach ($productsClass as $key => $val) { 465 592 if(!$usepostValue){ 466 $this->arrForm[$key . ":" . ($i+1)] = $val;593 $this->arrForm[$key . ":" . $no] = $val; 467 594 } 468 595 } 469 596 } 470 597 foreach ($existsProductsClass[$i] as $key => $val) { 471 if(!$usepostValue){ 472 $this->arrForm[$key . ":" . ($i+1)] = $val; 473 } 474 598 if (!$usepostValue) { 599 $this->arrForm[$key . ":" . $no] = $val; 600 } 475 601 switch ($key) { 476 602 case 'down': 477 $this->objDownFile->addFile("ダウンロード販売用ファイル". ":" . ($i+1), 'down_realfilename'. ":" . ($i+1), explode(",", DOWNLOAD_EXTENSION),DOWN_SIZE, true, 0, 0);603 $this->objDownFile->addFile("ダウンロード販売用ファイル". ":" . $no, 'down_realfilename'. ":" . $no, explode(",", DOWNLOAD_EXTENSION),DOWN_SIZE, true, 0, 0); 478 604 break; 479 480 605 default: 481 606 } 482 607 } 483 if (!SC_Utils_Ex::isBlank($this->arrForm['product_id:' . ($i+1)])484 && $this->arrForm["del_flg:" . ($i+1)] == 0) {485 $line .= "'check:" . ($i+1). "',";608 if (!SC_Utils_Ex::isBlank($this->arrForm['product_id:' . $no]) 609 && $this->arrForm["del_flg:" . $no] == 0) { 610 $line .= "'check:" . $no . "',"; 486 611 } 487 612 } … … 495 620 $this->objDownFile->setDBFileList($this->arrForm); 496 621 // PostデータからダウンロードTempファイル名の読込 497 $this->objDownFile->setPostFileList($_POST,$this->arrForm); 498 } 499 500 function doDelete() { 622 $this->objDownFile->setPostFileList($_POST, $this->arrForm); 623 } 624 625 /** 626 * 規格の削除を実行する 627 * 628 * @param $product_id 629 * @return void 630 */ 631 function doDelete($product_id) { 501 632 $objQuery =& SC_Query::getSingletonInstance(); 502 633 503 634 $objQuery->begin(); 504 $val['del_flg'] = 0; 505 $objQuery->update("dtb_products_class", $val, "product_id = ? AND class_combination_id IS NULL", array($_POST['product_id'])); 506 507 $val['del_flg'] = 1; 508 $objQuery->update("dtb_products_class", $val, "product_id = ? AND class_combination_id IS NOT NULL", array($_POST['product_id'])); 635 636 $arrProductsClass = array(); 637 $arrProductsClass['del_flg'] = 0; 638 $objQuery->update("dtb_products_class", $arrProductsClass, "product_id = ? AND class_combination_id IS NULL", array($product_id)); 639 640 $arrProductsClass['del_flg'] = 1; 641 $objQuery->update("dtb_products_class", $arrProductsClass, "product_id = ? AND class_combination_id IS NOT NULL", array($product_id)); 509 642 510 643 $objQuery->commit(); … … 513 646 if (NOSTOCK_HIDDEN === true) { 514 647 // 件数カウントバッチ実行 648 $objDb = new SC_Helper_DB_Ex(); 515 649 $objDb->sfCountCategory($objQuery); 516 650 } … … 532 666 . " T1.rank AS rank1 "; 533 667 668 $table = ''; 669 $arrParams = array(); 534 670 if(SC_Utils_Ex::isBlank($class_id2)) { 535 671 $table = "dtb_classcategory T1 "; 536 672 $objQuery->setWhere("T1.class_id = ?"); 537 673 $objQuery->setOrder("T1.rank DESC"); 538 $ val= array($class_id1);674 $arrParams = array($class_id1); 539 675 } else { 540 676 $col .= "," … … 546 682 $objQuery->setWhere("T1.class_id = ? AND T2.class_id = ?"); 547 683 $objQuery->setOrder("T1.rank DESC, T2.rank DESC"); 548 $ val= array($class_id1, $class_id2);549 } 550 return $objQuery->select($col, $table, "", $ val);684 $arrParams = array($class_id1, $class_id2); 685 } 686 return $objQuery->select($col, $table, "", $arrParams); 551 687 } 552 688 … … 616 752 function getProductsClass($product_id) { 617 753 $objQuery =& SC_Query::getSingletonInstance(); 618 $col = <<< __EOS__ 619 product_id, product_code, price01, price02, stock, 620 stock_unlimited, point_rate 621 __EOS__; 754 $col = "product_id, product_code, price01, price02, stock, stock_unlimited, point_rate"; 622 755 return $objQuery->getRow($col, "dtb_products_class", "product_id = ?", array($product_id)); 623 756 } … … 634 767 } 635 768 } 636 ?>
Note: See TracChangeset
for help on using the changeset viewer.