[Svn-src-all:1205] [version-2_5-dev 20093] #984([フロント]商品購入 リファクタリング)

nanasess admin @ mail.ec-cube.net
2011年 2月 4日 (金) 18:22:47 JST


Subversion committed to /home/svn/open 20093
http://svn.ec-cube.net/open_trac/changeset/20093
┌────────────────────────────┐
│更新者 :  nanasess                                     │
│更新日時:  2011-02-04 18:22:47 +0900 (金, 04  2月 2011)│
└────────────────────────────┘

Log:
--------------------------------------------------------
#984([フロント]商品購入 リファクタリング)
 * /shopping/deliv.php


Changed:                      [U:修正,A:追加,D:削除]
--------------------------------------------------------
U   branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping.php
U   branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Deliv.php

変更: branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping.php	2011-02-04 09:15:31 UTC (rev 20092)
+++ branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping.php	2011-02-04 09:22:47 UTC (rev 20093)
@@ -82,7 +82,6 @@
         $objPurchase = new SC_Helper_Purchase_Ex();
         $objFormParam = new SC_FormParam();
 
-
         $this->tpl_uniqid = $objSiteSess->getUniqId();
         $objPurchase->verifyChangeCart($this->tpl_uniqid, $objCartSess);
 

変更: branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Deliv.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Deliv.php	2011-02-04 09:15:31 UTC (rev 20092)
+++ branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Deliv.php	2011-02-04 09:22:47 UTC (rev 20093)
@@ -69,85 +69,66 @@
         $objCartSess = new SC_CartSession();
         $objCustomer = new SC_Customer();
         $objPurchase = new SC_Helper_Purchase_Ex();
-        $objQuery = SC_Query::getSingletonInstance();;
+        $objFormParam = new SC_FormParam();
         $objCookie = new SC_Cookie(COOKIE_EXPIRE);
+
         $this->tpl_uniqid = $objSiteSess->getUniqId();
         $objPurchase->verifyChangeCart($this->tpl_uniqid, $objCartSess);
 
         $this->cartKey = $objCartSess->getKey();
 
         // ログインチェック
-        if(!$objCustomer->isLoginSuccess(true)) {
+        if (!$objCustomer->isLoginSuccess(true)) {
             SC_Utils_Ex::sfDispSiteError(CUSTOMER_ERROR);
         }
 
-        if($this->cartKey == PRODUCT_TYPE_DOWNLOAD){
-            // 会員情報の住所を受注一時テーブルに書き込む
+        // ダウンロード商品の場合は、支払方法画面に転送
+        if ($this->cartKey == PRODUCT_TYPE_DOWNLOAD) {
             $objPurchase->copyFromCustomer($sqlval, $objCustomer, 'shipping');
             $objPurchase->saveShippingTemp($sqlval);
             $objPurchase->saveOrderTemp($this->tpl_uniqid, $sqlval, $objCustomer);
-            // 正常に登録されたことを記録しておく
             $objSiteSess->setRegistFlag();
-            // ダウンロード商品有りの場合は、支払方法画面に転送
             SC_Response_Ex::sendRedirect('payment.php');
             exit;
         }
 
+        $this->lfInitParam($objFormParam);
+        $objFormParam->setParam($_POST);
+        $objFormParam->convParam();
+        $arrErr = $objFormParam->checkError();
+        if (!SC_Utils_Ex::isBlank($arrErr)) {
+            SC_Utils_Ex::sfDispSiteError(PAGE_ERROR, "", true);
+            exit;
+        }
+
+        $arrForm = $objFormParam->getHashArray();
+
         switch($this->getMode()) {
         // 削除
         case 'delete':
-            if (SC_Utils_Ex::sfIsInt($_POST['other_deliv_id'])) {
-                $where = "other_deliv_id = ?";
-                $arrRet = $objQuery->delete("dtb_other_deliv", $where, array($_POST['other_deliv_id']));
-            }
+            $this->doDelete($arrForm['other_deliv_id']);
             break;
+
         // 会員登録住所に送る
         case 'customer_addr':
-            $sqlval = array();
-            $arrDeliv = $objPurchase->getDeliv($this->cartKey);
-            $sqlval['deliv_id'] = $arrDeliv[0]['deliv_id'];
-            // 会員登録住所がチェックされている場合
-            if ($_POST['deliv_check'] == '-1') {
-                // 会員情報の住所を受注一時テーブルに書き込む
-                $objPurchase->copyFromCustomer($sqlval, $objCustomer, 'shipping');
-                $objPurchase->saveShippingTemp($sqlval);
-                $objPurchase->saveOrderTemp($this->tpl_uniqid, $sqlval, $objCustomer);
-
-                // 正常に登録されたことを記録しておく
+            if ($this->registerDeliv($arrForm['deliv_check'], $this->tpl_uniqid,
+                                     $objPurchase, $objCustomer)) {
                 $objSiteSess->setRegistFlag();
-                // お支払い方法選択ページへ移動
                 SC_Response_Ex::sendRedirect(SHOPPING_PAYMENT_URLPATH);
                 exit;
-            // 別のお届け先がチェックされている場合
-            } elseif($_POST['deliv_check'] >= 1) {
-                if (SC_Utils_Ex::sfIsInt($_POST['deliv_check'])) {
-                    $otherDeliv = $objQuery->getRow("*", "dtb_other_deliv","customer_id = ? AND other_deliv_id = ?"
-                                                    ,array($objCustomer->getValue('customer_id'), $_POST['deliv_check']));
-                    if (SC_Utils_Ex::isBlank($otherDeliv)) {
-                        SC_Utils_Ex::sfDispSiteError(CUSTOMER_ERROR);
-                    }
 
-                    $objPurchase->copyFromOrder($sqlval, $otherDeliv, 'shipping', '');;
-                    $objPurchase->saveShippingTemp($sqlval);
-                    $objPurchase->saveOrderTemp($this->tpl_uniqid, $sqlval, $objCustomer);
-
-                    // 正常に登録されたことを記録しておく
-                    $objSiteSess->setRegistFlag();
-                    // お支払い方法選択ページへ移動
-                    SC_Response_Ex::sendRedirect(SHOPPING_PAYMENT_URLPATH);
-                    exit;
-                }
-            }else{
-                // エラーを返す
-                $arrErr['deli'] = '※ お届け先を選択してください。';
+            } else {
+                SC_Utils_Ex::sfDispSiteError(PAGE_ERROR, "", true);
             }
             break;
+
         // 前のページに戻る
         case 'return':
             // 確認ページへ移動
             SC_Response_Ex::sendRedirect(CART_URLPATH);
             exit;
             break;
+
         // お届け先複数指定
         case 'multiple':
             SC_Response_Ex::sendRedirect('multiple.php');
@@ -156,15 +137,11 @@
 
         default:
             $objPurchase->unsetShippingTemp();
-
             break;
         }
 
         // 登録済み住所を取得
-        $this->arrAddr = $objCustomer->getCustomerAddress($_SESSION['customer']['customer_id']);
-        // 入力値の取得
-        if (!isset($arrErr)) $arrErr = array();
-        $this->arrErr = $arrErr;
+        $this->arrAddr = $objCustomer->getCustomerAddress($objCustomer->getValue('customer_id'));
     }
 
     /**
@@ -175,5 +152,71 @@
     function destroy() {
         parent::destroy();
     }
+
+    /**
+     * パラメータ情報の初期化を行う.
+     *
+     * @param SC_FormParam $objFormParam SC_FormParam インスタンス
+     * @return void
+     */
+    function lfInitParam(&$objFormParam) {
+        $objFormParam->addParam("その他のお届け先ID", "other_deliv_id", INT_LEN, "n", array("NUM_CHECK", "MAX_LENGTH_CHECK"));
+        $objFormParam->addParam("お届け先チェック", "deliv_check", INT_LEN, "n", array("MAX_LENGTH_CHECK"));
+    }
+
+    /**
+     * その他のお届け先情報を削除する.
+     *
+     * @param integer $other_deliv_id その他のお届け先ID
+     * @return void
+     */
+    function doDelete($other_deliv_id) {
+        $objQuery =& SC_Query::getSingletonInstance();
+        $where = "other_deliv_id = ?";
+        $objQuery->delete("dtb_other_deliv", $where, array($other_deliv_id));
+    }
+
+    /**
+     * お届け先チェックの値に応じて, お届け先情報を保存する.
+     *
+     * 会員住所がチェックされている場合は, 会員情報からお届け先を取得する.
+     * その他のお届け先がチェックされている場合は, その他のお届け先からお届け先を取得する.
+     * お届け先チェックの値が不正な場合は false を返す.
+     *
+     * @param integer $deliv_check お届け先チェック
+     * @param string $uniqid 受注一時テーブルのユニークID
+     * @param SC_Helper_Purchase $objPurchase SC_Helper_Purchase インスタンス
+     * @param SC_Customer $objCustomer SC_Customer インスタンス
+     * @return boolean お届け先チェックの値が妥当な場合 true
+     */
+    function registerDeliv($deliv_check, $uniqid, &$objPurchase, &$objCustomer) {
+        $arrValues = array();
+        // 会員登録住所がチェックされている場合
+        if ($deliv_check == '-1') {
+            $objPurchase->copyFromCustomer($arrValues, $objCustomer, 'shipping');
+            $objPurchase->saveShippingTemp($arrValues);
+            $objPurchase->saveOrderTemp($uniqid, $arrValues, $objCustomer);
+            return true;
+        }
+        // 別のお届け先がチェックされている場合
+        elseif ($deliv_check >= 1) {
+            $objQuery =& SC_Query::getSingletonInstance();
+            $arrOtherDeliv = $objQuery->getRow("*", "dtb_other_deliv",
+                                               "customer_id = ? AND other_deliv_id = ?",
+                                               array($objCustomer->getValue('customer_id'), $deliv_check));
+            if (SC_Utils_Ex::isBlank($arrOtherDeliv)) {
+                return false;
+            }
+
+            $objPurchase->copyFromOrder($arrValues, $arrOtherDeliv, 'shipping', '');;
+            $objPurchase->saveShippingTemp($arrValues);
+            $objPurchase->saveOrderTemp($uniqid, $arrValues, $objCustomer);
+            return true;
+        }
+        // お届け先チェックが不正な場合
+        else {
+            return false;
+        }
+    }
 }
 ?>




Svn-src-all メーリングリストの案内