[Svn-src-all:1197] [version-2_5-dev 20085] 会員登録リファクタリング #979

kimoto admin @ mail.ec-cube.net
2011年 2月 4日 (金) 12:08:45 JST


Subversion committed to /home/svn/open 20085
http://svn.ec-cube.net/open_trac/changeset/20085
┌────────────────────────────┐
│更新者 :  kimoto                                       │
│更新日時:  2011-02-04 12:08:44 +0900 (金, 04  2月 2011)│
└────────────────────────────┘

Log:
--------------------------------------------------------
会員登録リファクタリング #979
sfCheckRegisterUserFromEmailを有効活用させていただきました


Changed:                      [U:修正,A:追加,D:削除]
--------------------------------------------------------
U   branches/version-2_5-dev/data/class/SC_CheckError.php
U   branches/version-2_5-dev/data/class/helper/SC_Helper_Customer.php
U   branches/version-2_5-dev/data/class/pages/entry/LC_Page_Entry.php
U   branches/version-2_5-dev/data/class/pages/entry/LC_Page_Entry_EmailMobile.php

変更: branches/version-2_5-dev/data/class/SC_CheckError.php
===================================================================
--- branches/version-2_5-dev/data/class/SC_CheckError.php	2011-02-04 02:52:48 UTC (rev 20084)
+++ branches/version-2_5-dev/data/class/SC_CheckError.php	2011-02-04 03:08:44 UTC (rev 20085)
@@ -794,14 +794,14 @@
         $this->createParam($value);
         // 年が入力されている。
         if ($this->arrParam[$value[1]] > 0) {
-            
+
             // 年の数字チェック、最小数値制限チェック
             $this->doFunc(array($value[0].'(年)', $value[1], START_BIRTH_YEAR), array("NUM_CHECK", "MIN_CHECK"));
             // 上のチェックでエラーある場合、中断する。
             if (isset($this->arrErr[$value[1]])) {
                 return;
             }
-            
+
             // 年の最大数値制限チェック
             $this->doFunc(array($value[0].'(年)', $value[1], date("Y",strtotime("now"))), array("MAX_CHECK"));
             // 上のチェックでエラーある場合、中断する。
@@ -809,7 +809,7 @@
                 return;
             }
         }
-        
+
         // XXX createParam() が二重に呼ばれる問題を抱える
         $this->CHECK_DATE($value);
     }
@@ -984,6 +984,27 @@
             $this->arrErr[$value[1]] = "※ " . $value[0] . "は携帯電話のものではありません。<br />";
         }
     }
+
+    function CHECK_REGIST_CUSTOMER_EMAIL ($value) {
+        if(isset($this->arrErr[$value[1]])) {
+            return;
+        }
+        $this->createParam($value);
+
+        $register_user_flg =  SC_Helper_Customer_Ex::sfCheckRegisterUserFromEmail($this->arrParam[$value[1]]);
+        switch($register_user_flg) {
+            case 1:
+                $this->arrErr[$value[1]] .= "※ すでに会員登録で使用されている" . $value[0] . "です。<br />";
+                break;
+            case 2:
+                $this->arrErr[$value[1]] .= "※ 退会から一定期間の間は、同じ" . $value[0] . "を使用することはできません。<br />";
+                break;
+            default:
+                break;
+        }
+    }
+
+
     /**
      * 禁止文字列のチェック
      * value[0] = 項目名 value[1] = 判定対象文字列

変更: branches/version-2_5-dev/data/class/helper/SC_Helper_Customer.php
===================================================================
--- branches/version-2_5-dev/data/class/helper/SC_Helper_Customer.php	2011-02-04 02:52:48 UTC (rev 20084)
+++ branches/version-2_5-dev/data/class/helper/SC_Helper_Customer.php	2011-02-04 03:08:44 UTC (rev 20085)
@@ -172,29 +172,26 @@
     function sfCheckRegisterUserFromEmail($email){
         $return = 0;
 
-        $objCustomer = new SC_Customer();
-        $objQuery =& SC_Query::getSingletonInstance();
+        $objCustomer    = new SC_Customer();
+        $objQuery       =& SC_Query::getSingletonInstance();
 
-        $arrRet = $objQuery->select("email, update_date, del_flg"
-                                    ,"dtb_customer"
-                                    ,"email = ? OR email_mobile = ? ORDER BY del_flg"
-                                    ,array($email, $email)
-                                    );
+        $arrRet         = $objQuery->select("email, update_date, del_flg",
+                                            "dtb_customer",
+                                            "email = ? OR email_mobile = ? ORDER BY del_flg",
+                                            array($email, $email));
 
         if(count($arrRet) > 0) {
             if($arrRet[0]['del_flg'] != '1') {
                 // 会員である場合
-                if (!isset($objErr->arrErr['email'])) $objErr->arrErr['email'] = "";
                 $return = 1;
             } else {
                 // 退会した会員である場合
                 $leave_time = SC_Utils_Ex::sfDBDatetoTime($arrRet[0]['update_date']);
-                $now_time = time();
-                $pass_time = $now_time - $leave_time;
+                $now_time   = time();
+                $pass_time  = $now_time - $leave_time;
                 // 退会から何時間-経過しているか判定する。
                 $limit_time = ENTRY_LIMIT_HOUR * 3600;
                 if($pass_time < $limit_time) {
-                    if (!isset($objErr->arrErr['email'])) $objErr->arrErr['email'] = "";
                     $return = 2;
                 }
             }
@@ -202,15 +199,14 @@
 
         // ログインしている場合、すでに登録している自分のemailの場合はエラーを返さない
         if ($objCustomer->getValue('customer_id')){
-            $arrRet = $objQuery->select("email, email_mobile"
-                            ,"dtb_customer"
-                            ,"customer_id = ? ORDER BY del_flg"
-                            ,array($objCustomer->getValue('customer_id'))
-                            );
-            if ($email == $arrRet[0]["email"]
-                || $email == $arrRet[0]["email_mobile"]){
-                    $return = 3;
-                }
+            $arrRet = $objQuery->select("email, email_mobile",
+                                        "dtb_customer",
+                                        "customer_id = ? ORDER BY del_flg",
+                                        array($objCustomer->getValue('customer_id')));
+
+            if ($email == $arrRet[0]["email"] || $email == $arrRet[0]["email_mobile"]) {
+                $return = 3;
+            }
         }
         return $return;
     }

変更: branches/version-2_5-dev/data/class/pages/entry/LC_Page_Entry.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/entry/LC_Page_Entry.php	2011-02-04 02:52:48 UTC (rev 20084)
+++ branches/version-2_5-dev/data/class/pages/entry/LC_Page_Entry.php	2011-02-04 03:08:44 UTC (rev 20085)
@@ -328,17 +328,8 @@
         }
 
         // 現会員の判定 → 現会員もしくは仮登録中は、メアド一意が前提になってるので同じメアドで登録不可
-        $register_user_flg =  SC_Helper_Customer_Ex::sfCheckRegisterUserFromEmail($arrRet["email"]);
-        switch($register_user_flg) {
-            case 1:
-                $objErr->arrErr["email"] .= "※ すでに会員登録で使用されているメールアドレスです。<br />";
-                break;
-            case 2:
-                $objErr->arrErr["email"] .= "※ 退会から一定期間の間は、同じメールアドレスを使用することはできません。<br />";
-                break;
-            default:
-                break;
-        }
+        $objErr->doFunc(array("メールアドレス", "email"), array("CHECK_REGIST_CUSTOMER_EMAIL"));
+
         return $objErr->arrErr;
     }
 

変更: branches/version-2_5-dev/data/class/pages/entry/LC_Page_Entry_EmailMobile.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/entry/LC_Page_Entry_EmailMobile.php	2011-02-04 02:52:48 UTC (rev 20084)
+++ branches/version-2_5-dev/data/class/pages/entry/LC_Page_Entry_EmailMobile.php	2011-02-04 03:08:44 UTC (rev 20085)
@@ -43,6 +43,9 @@
      */
     function init() {
         parent::init();
+
+        $this->objFormParam = new SC_FormParam();
+        $this->lfInitParam();
     }
 
     /**
@@ -61,25 +64,22 @@
      * @return void
      */
     function action() {
-        $objCustomer = new SC_Customer;
-        $objFormParam = new SC_FormParam;
+        $objCustomer    = new SC_Customer;
 
-        $this->lfInitParam($objFormParam);
-
         if ($_SERVER['REQUEST_METHOD'] == 'POST') {
-            $objFormParam->setParam($_POST);
-            $objFormParam->convParam();
-            $this->arrErr = $this->lfCheckError($objFormParam, $objCustomer);
+            $this->objFormParam->setParam($_POST);
+            $this->objFormParam->convParam();
+            $this->arrErr = $this->lfCheckError($objCustomer);
 
             if (empty($this->arrErr)) {
-                $this->lfRegister($objFormParam, $objCustomer);
+                $this->lfRegister($objCustomer);
                 $this->tpl_mainpage = 'entry/email_mobile_complete.tpl';
                 $this->tpl_title = '携帯メール登録完了';
             }
         }
 
         $this->tpl_name = $objCustomer->getValue('name01');
-        $this->arrForm = $objFormParam->getFormParamList();
+        $this->arrForm  = $this->objFormParam->getFormParamList();
     }
 
     /**
@@ -92,51 +92,49 @@
     }
 
 
-    function lfInitParam(&$objFormParam) {
-        $objFormParam->addParam('メールアドレス', 'email_mobile', MTEXT_LEN, 'a',
+    /**
+     * lfInitParam
+     *
+     * @param mixed $objFormParam
+     * @access public
+     * @return void
+     */
+    function lfInitParam() {
+        $this->objFormParam->addParam('メールアドレス', 'email_mobile', MTEXT_LEN, 'a',
                                 array('NO_SPTAB', 'EXIST_CHECK', 'MAX_LENGTH_CHECK', 'CHANGE_LOWER', 'EMAIL_CHAR_CHECK', 'EMAIL_CHECK', 'MOBILE_EMAIL_CHECK'));
     }
 
-    function lfCheckError(&$objFormParam, &$objCustomer) {
-        $arrRet = $objFormParam->getHashArray();
-        $objErr = new SC_CheckError($arrRet);
-        $objErr->arrErr = $objFormParam->checkError();
+    /**
+     * lfCheckError
+     *
+     * @param mixed $objFormParam
+     * @param mixed $objCustomer
+     * @access public
+     * @return void
+     */
+    function lfCheckError(&$objCustomer) {
+        $arrRet         = $this->objFormParam->getHashArray();
+        $objErr         = new SC_CheckError($arrRet);
+        $objErr->arrErr = $this->objFormParam->checkError();
 
-        if (count($objErr->arrErr) > 0) {
-            return $objErr->arrErr;
-        }
+        $objErr->doFunc(array("メールアドレス", "email_mobile"), array("CHECK_REGIST_CUSTOMER_EMAIL"));
 
-        $email_mobile = strtolower($objFormParam->getValue('email_mobile'));
-        $customer_id = $objCustomer->getValue('customer_id');
-        $objQuery = new SC_Query();
-        // TODO ORDER BY del_flg は必要?
-        $arrRet = $objQuery->select('email, email_mobile, update_date, del_flg', 'dtb_customer', '(email = ? OR email_mobile = ?) AND customer_id <> ? ORDER BY del_flg', array($email_mobile, $email_mobile, $customer_id));
-
-        if (count($arrRet) > 0) {
-            if ($arrRet[0]['del_flg'] != '1') {
-                // 会員である場合
-                $objErr->arrErr['email_mobile'] .= '※ すでに登録されているメールアドレスです。<br>';
-            } else {
-                // 退会した会員である場合
-                $leave_time = SC_Utils_Ex::sfDBDatetoTime($arrRet[0]['update_date']);
-                $now_time = time();
-                $pass_time = $now_time - $leave_time;
-                // 退会から何時間-経過しているか判定する。
-                $limit_time = ENTRY_LIMIT_HOUR * 3600;
-                if ($pass_time < $limit_time) {
-                    $objErr->arrErr['email_mobile'] .= '※ 退会から一定期間の間は、同じメールアドレスを使用することはできません。<br>';
-                }
-            }
-        }
-
         return $objErr->arrErr;
     }
 
-    function lfRegister(&$objFormParam, &$objCustomer) {
-        $customer_id = $objCustomer->getValue('customer_id');
-        $email_mobile = strtolower($objFormParam->getValue('email_mobile'));
+    /**
+     * lfRegister
+     *
+     * @param mixed $objFormParam
+     * @param mixed $objCustomer
+     * @access public
+     * @return void
+     */
+    function lfRegister(&$objCustomer) {
+        $customer_id    = $objCustomer->getValue('customer_id');
+        $email_mobile   = strtolower($this->objFormParam->getValue('email_mobile'));
 
-        $objQuery = new SC_Query();
+        $objQuery       = new SC_Query();
         $objQuery->update('dtb_customer', array('email_mobile' => $email_mobile), 'customer_id = ?', array($customer_id));
 
         $objCustomer->setValue('email_mobile', $email_mobile);




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