Changeset 21571 for branches/version-2_12-dev/data
- Timestamp:
- 2012/03/02 01:38:44 (12 years ago)
- Location:
- branches/version-2_12-dev/data
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_12-dev/data/Smarty/templates/default/shopping/payment.tpl
r21549 r21571 278 278 <ul> 279 279 <li> 280 <a href="<!--{$tpl_back_url|h}--> ?deliv_check=<!--{$deliv_check|h}-->" onmouseover="chgImg('<!--{$TPL_URLPATH}-->img/button/btn_back_on.jpg','back03')" onmouseout="chgImg('<!--{$TPL_URLPATH}-->img/button/btn_back.jpg','back03')">280 <a href="<!--{$tpl_back_url|h}-->" onmouseover="chgImg('<!--{$TPL_URLPATH}-->img/button/btn_back_on.jpg','back03')" onmouseout="chgImg('<!--{$TPL_URLPATH}-->img/button/btn_back.jpg','back03')"> 281 281 <img src="<!--{$TPL_URLPATH}-->img/button/btn_back.jpg" alt="戻る" border="0" name="back03" id="back03" /></a> 282 282 </li> -
branches/version-2_12-dev/data/class/SC_Customer.php
r21527 r21571 213 213 // $_SESSION['customer']の解放 214 214 unset($_SESSION['customer']); 215 // セッションの配送情報を全て破棄する 216 SC_Helper_Purchase_Ex::unsetAllShippingTemp(true); 215 217 // トランザクショントークンの破棄 216 218 SC_Helper_Session_Ex::destroyToken(); -
branches/version-2_12-dev/data/class/helper/SC_Helper_Purchase.php
r21570 r21571 34 34 class SC_Helper_Purchase { 35 35 36 var $arrShippingKey = array( 37 'name01', 'name02', 'kana01', 'kana02', 38 'sex', 'zip01', 'zip02', 'pref', 'addr01', 'addr02', 39 'tel01', 'tel02', 'tel03', 40 ); 41 36 42 /** 37 43 * 受注を完了する. … … 73 79 $orderTemp['status'] = $orderStatus; 74 80 $cartkey = $objCartSession->getKey(); 75 $orderId = $this->registerOrderComplete($orderTemp, $objCartSession, 76 $cartkey); 81 $orderId = $this->registerOrderComplete($orderTemp, $objCartSession, $cartkey); 77 82 $isMultiple = SC_Helper_Purchase::isMultiple(); 78 83 $shippingTemp =& $this->getShippingTemp($isMultiple); 79 84 foreach ($shippingTemp as $shippingId => $val) { 80 $this->registerShipmentItem($orderId, $shippingId, 81 $val['shipment_item']); 85 $this->registerShipmentItem($orderId, $shippingId, $val['shipment_item']); 82 86 } 83 87 … … 312 316 function clearShipmentItemTemp($shipping_id = null) { 313 317 if (is_null($shipping_id)) { 314 unset($_SESSION['shipping']); 318 if (!isset($_SESSION['shipping'][$shipping_id])) return; 319 if (!is_array($_SESSION['shipping'][$shipping_id])) return; 320 foreach (array_keys($_SESSION['shipping'][$shipping_id]) as $key) { 321 $this->clearShipmentItemTemp($key); 322 } 315 323 } else { 316 unset($_SESSION['shipping'][$shipping_id] );324 unset($_SESSION['shipping'][$shipping_id]['shipment_item']); 317 325 } 318 326 } … … 370 378 */ 371 379 function isMultiple() { 372 return count(SC_Helper_Purchase_Ex::getShippingTemp(true)) >= 1;380 return count(SC_Helper_Purchase_Ex::getShippingTemp(true)) >= 2; 373 381 } 374 382 … … 376 384 * 配送情報をセッションに保存する. 377 385 * 386 * XXX マージする理由が不明(なんとなく便利な気はするけど)。分かる方コメントに残してください。 378 387 * @param array $arrSrc 配送情報の連想配列 379 388 * @param integer $shipping_id 配送先ID … … 384 393 unset($arrSrc['shipment_item']); 385 394 386 if (empty($_SESSION['shipping'][$shipping_id])) { 387 $_SESSION['shipping'][$shipping_id] = $arrSrc; 388 $_SESSION['shipping'][$shipping_id]['shipping_id'] = $shipping_id; 389 } else { 390 $_SESSION['shipping'][$shipping_id] = array_merge($_SESSION['shipping'][$shipping_id], $arrSrc); 391 $_SESSION['shipping'][$shipping_id]['shipping_id'] = $shipping_id; 392 } 395 if (!isset($_SESSION['shipping'][$shipping_id])) { 396 $_SESSION['shipping'][$shipping_id] = array(); 397 } 398 $_SESSION['shipping'][$shipping_id] = array_merge($_SESSION['shipping'][$shipping_id], $arrSrc); 399 $_SESSION['shipping'][$shipping_id]['shipping_id'] = $shipping_id; 393 400 } 394 401 395 402 /** 396 403 * セッションの配送情報を破棄する. 404 * 405 * @deprecated 2.12.0 から EC-CUBE 本体では使用していない。 406 * @param integer $shipping_id 配送先ID 407 * @return void 397 408 */ 398 409 function unsetShippingTemp() { 410 $this->unsetAllShippingTemp(true); 411 } 412 413 /** 414 * セッションの配送情報を全て破棄する 415 * 416 * @param bool $multiple_temp 複数お届け先の画面戻り処理用の情報も破棄するか 417 * @return void 418 */ 419 function unsetAllShippingTemp($multiple_temp = false) { 399 420 unset($_SESSION['shipping']); 400 unset($_SESSION['multiple_temp']); 421 if ($multiple_temp) { 422 unset($_SESSION['multiple_temp']); 423 } 424 } 425 426 /** 427 * セッションの配送情報を個別に破棄する 428 * 429 * @param integer $shipping_id 配送先ID 430 * @return void 431 */ 432 function unsetOneShippingTemp($shipping_id) { 433 unset($_SESSION['shipping'][$shipping_id]); 401 434 } 402 435 … … 453 486 * @param array $dest コピー先の配列 454 487 * @param array $src コピー元の配列 455 * @param array $ keysコピー対象のキー488 * @param array $arrKey コピー対象のキー 456 489 * @param string $prefix コピー先の接頭辞. デフォルト shipping 457 490 * @param string $src_prefix コピー元の接頭辞. デフォルト order 458 491 * @return void 459 492 */ 460 function copyFromOrder(&$dest, $src, 461 $prefix = 'shipping', $src_prefix = 'order', 462 $keys = array( 463 'name01', 'name02', 'kana01', 'kana02', 464 'sex', 'zip01', 'zip02', 'pref', 'addr01', 'addr02', 465 'tel01', 'tel02', 'tel03', 466 ) 467 ) { 493 function copyFromOrder(&$dest, $src, $prefix = 'shipping', $src_prefix = 'order', $arrKey = null) { 494 if (is_null($arrKey)) { 495 $arrKey = $this->arrShippingKey; 496 } 468 497 if (!SC_Utils_Ex::isBlank($prefix)) { 469 498 $prefix = $prefix . '_'; … … 472 501 $src_prefix = $src_prefix . '_'; 473 502 } 474 foreach ($ keysas $key) {475 if (i n_array($key, $keys)) {503 foreach ($arrKey as $key) { 504 if (isset($src[$src_prefix . $key])) { 476 505 $dest[$prefix . $key] = $src[$src_prefix . $key]; 477 506 } 478 507 } 508 } 509 510 /** 511 * 配送情報のみ抜き出す。 512 * 513 * @param string $arrSrc 元となる配列 514 * @return void 515 */ 516 function extractShipping($arrSrc) { 517 $arrKey = array(); 518 foreach($this->arrShippingKey as $key) { 519 $arrKey[] = 'shipping_' . $key; 520 } 521 return SC_Utils_Ex::sfArrayIntersectKeys($arrSrc, $arrKey); 479 522 } 480 523 … … 1286 1329 1287 1330 // セッションの配送情報を破棄する. 1288 $this->unset ShippingTemp();1331 $this->unsetAllShippingTemp(true); 1289 1332 $objCustomer->updateSession(); 1290 1333 } 1334 1335 /** 1336 * 単一配送指定用に配送商品を設定する 1337 * 1338 * @param SC_CartSession $objCartSession カート情報のインスタンス 1339 * @param integer $shipping_id 配送先ID 1340 * @return void 1341 */ 1342 function setShipmentItemTempForSole(&$objCartSession, $shipping_id = 0) { 1343 $objCartSess = new SC_CartSession_Ex(); 1344 1345 $this->clearShipmentItemTemp(); 1346 1347 $arrCartList =& $objCartSession->getCartList($objCartSess->getKey()); 1348 foreach ($arrCartList as $arrCartRow) { 1349 if ($arrCartRow['quantity'] == 0) continue; 1350 $this->setShipmentItemTemp($shipping_id, $arrCartRow['id'], $arrCartRow['quantity']); 1351 } 1352 } 1291 1353 } -
branches/version-2_12-dev/data/class/pages/shopping/LC_Page_Shopping.php
r21527 r21571 179 179 180 180 if (SC_Utils_Ex::isBlank($this->arrErr)) { 181 $objPurchase->unsetShippingTemp(); 182 $this->lfRegistData($this->tpl_uniqid, $objPurchase, 183 $objCustomer, $objFormParam); 181 $this->lfRegistData($this->tpl_uniqid, $objPurchase, $objCustomer, $objFormParam); 182 $objPurchase->setShipmentItemTempForSole($objCartSess); 184 183 185 184 $objSiteSess->setRegistFlag(); … … 208 207 209 208 if (SC_Utils_Ex::isBlank($this->arrErr)) { 210 $objPurchase->unsetShippingTemp(); 211 $this->lfRegistData($this->tpl_uniqid, $objPurchase, 212 $objCustomer, $objFormParam, true); 209 $this->lfRegistData($this->tpl_uniqid, $objPurchase, $objCustomer, $objFormParam, true); 213 210 214 211 $objSiteSess->setRegistFlag(); … … 355 352 * データの一時登録を行う. 356 353 * 354 * 非会員向けの処理 357 355 * @param integer $uniqid 受注一時テーブルのユニークID 358 356 * @param SC_Helper_Purchase $objPurchase SC_Helper_Purchase インスタンス … … 363 361 function lfRegistData($uniqid, &$objPurchase, &$objCustomer, &$objFormParam, $isMultiple = false) { 364 362 $arrParams = $objFormParam->getHashArray(); 363 364 // 注文者をお届け先とする配列を取得 365 $arrShippingOwn = array(); 366 $objPurchase->copyFromOrder($arrShippingOwn, $arrParams); 367 368 // 都度入力されたお届け先 369 $arrShipping = $objPurchase->extractShipping($arrParams); 370 371 if ($isMultiple) { 372 $objPurchase->unsetShippingTemp(0); 373 $objPurchase->unsetShippingTemp(1); 374 $objPurchase->saveShippingTemp($arrShippingOwn, 0); 375 if ($arrParams['deliv_check'] == '1') { 376 $objPurchase->saveShippingTemp($arrShipping, 1); 377 } 378 } else { 379 $objPurchase->unsetShippingTemp(); 380 if ($arrParams['deliv_check'] == '1') { 381 $objPurchase->saveShippingTemp($arrShipping, 0); 382 } else { 383 $objPurchase->saveShippingTemp($arrShippingOwn, 0); 384 } 385 } 386 365 387 $arrValues = $objFormParam->getDbArray(); 388 366 389 // 登録データの作成 367 390 $arrValues['order_birth'] = SC_Utils_Ex::sfGetTimestamp($arrParams['year'], $arrParams['month'], $arrParams['day']); 368 391 $arrValues['update_date'] = 'CURRENT_TIMESTAMP'; 369 392 $arrValues['customer_id'] = '0'; 370 371 // お届け先を指定しない場合、372 if ($arrParams['deliv_check'] != '1') {373 // order_* を shipping_* へコピー374 $objPurchase->copyFromOrder($arrValues, $arrParams);375 }376 377 /*378 * order_* と shipping_* をそれぞれ $_SESSION['shipping'][$shipping_id]379 * に, shipping_* というキーで保存380 */381 foreach ($arrValues as $key => $val) {382 if (preg_match('/^order_/', $key)) {383 $arrOrder['shipping_' . str_replace('order_', '', $key)] = $val;384 } elseif (preg_match('/^shipping_/', $key)) {385 $arrShipping[$key] = $val;386 }387 }388 389 if ($isMultiple) {390 $objPurchase->saveShippingTemp($arrOrder, 0);391 if ($arrParams['deliv_check'] == '1') {392 $objPurchase->saveShippingTemp($arrShipping, 1);393 }394 } else {395 if ($arrParams['deliv_check'] == '1') {396 $objPurchase->saveShippingTemp($arrShipping, 0);397 } else {398 $objPurchase->saveShippingTemp($arrOrder, 0);399 }400 }401 393 $objPurchase->saveOrderTemp($uniqid, $arrValues, $objCustomer); 402 394 } -
branches/version-2_12-dev/data/class/pages/shopping/LC_Page_Shopping_Deliv.php
r21570 r21571 115 115 $objPurchase->unsetShippingTemp(); 116 116 117 if ($this->registerDeliv($arrForm['deliv_check'], $this->tpl_uniqid, 118 $objPurchase, $objCustomer)) { 119 $objSiteSess->setRegistFlag(); 120 SC_Response_Ex::sendRedirect(SHOPPING_PAYMENT_URLPATH); 121 exit; 122 123 } else { 117 $success = $this->registerDeliv($arrForm['deliv_check'], $this->tpl_uniqid, $objPurchase, $objCustomer); 118 if (!$success) { 124 119 SC_Utils_Ex::sfDispSiteError(PAGE_ERROR, '', true); 125 120 } 121 122 $objPurchase->setShipmentItemTempForSole($objCartSess); 123 $objSiteSess->setRegistFlag(); 124 SC_Response_Ex::sendRedirect(SHOPPING_PAYMENT_URLPATH); 125 exit; 126 126 break; 127 127
Note: See TracChangeset
for help on using the changeset viewer.