Changeset 20085


Ignore:
Timestamp:
2011/02/04 12:08:44 (13 years ago)
Author:
kimoto
Message:

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

Location:
branches/version-2_5-dev/data/class
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_5-dev/data/class/SC_CheckError.php

    r19856 r20085  
    795795        // 年が入力されている。 
    796796        if ($this->arrParam[$value[1]] > 0) { 
    797              
     797 
    798798            // 年の数字チェック、最小数値制限チェック 
    799799            $this->doFunc(array($value[0].'(年)', $value[1], START_BIRTH_YEAR), array("NUM_CHECK", "MIN_CHECK")); 
     
    802802                return; 
    803803            } 
    804              
     804 
    805805            // 年の最大数値制限チェック 
    806806            $this->doFunc(array($value[0].'(年)', $value[1], date("Y",strtotime("now"))), array("MAX_CHECK")); 
     
    810810            } 
    811811        } 
    812          
     812 
    813813        // XXX createParam() が二重に呼ばれる問題を抱える 
    814814        $this->CHECK_DATE($value); 
     
    985985        } 
    986986    } 
     987 
     988    function CHECK_REGIST_CUSTOMER_EMAIL ($value) { 
     989        if(isset($this->arrErr[$value[1]])) { 
     990            return; 
     991        } 
     992        $this->createParam($value); 
     993 
     994        $register_user_flg =  SC_Helper_Customer_Ex::sfCheckRegisterUserFromEmail($this->arrParam[$value[1]]); 
     995        switch($register_user_flg) { 
     996            case 1: 
     997                $this->arrErr[$value[1]] .= "※ すでに会員登録で使用されている" . $value[0] . "です。<br />"; 
     998                break; 
     999            case 2: 
     1000                $this->arrErr[$value[1]] .= "※ 退会から一定期間の間は、同じ" . $value[0] . "を使用することはできません。<br />"; 
     1001                break; 
     1002            default: 
     1003                break; 
     1004        } 
     1005    } 
     1006 
     1007 
    9871008    /** 
    9881009     * 禁止文字列のチェック 
  • branches/version-2_5-dev/data/class/helper/SC_Helper_Customer.php

    r20074 r20085  
    173173        $return = 0; 
    174174 
    175         $objCustomer = new SC_Customer(); 
    176         $objQuery =& SC_Query::getSingletonInstance(); 
    177  
    178         $arrRet = $objQuery->select("email, update_date, del_flg" 
    179                                     ,"dtb_customer" 
    180                                     ,"email = ? OR email_mobile = ? ORDER BY del_flg" 
    181                                     ,array($email, $email) 
    182                                     ); 
     175        $objCustomer    = new SC_Customer(); 
     176        $objQuery       =& SC_Query::getSingletonInstance(); 
     177 
     178        $arrRet         = $objQuery->select("email, update_date, del_flg", 
     179                                            "dtb_customer", 
     180                                            "email = ? OR email_mobile = ? ORDER BY del_flg", 
     181                                            array($email, $email)); 
    183182 
    184183        if(count($arrRet) > 0) { 
    185184            if($arrRet[0]['del_flg'] != '1') { 
    186185                // 会員である場合 
    187                 if (!isset($objErr->arrErr['email'])) $objErr->arrErr['email'] = ""; 
    188186                $return = 1; 
    189187            } else { 
    190188                // 退会した会員である場合 
    191189                $leave_time = SC_Utils_Ex::sfDBDatetoTime($arrRet[0]['update_date']); 
    192                 $now_time = time(); 
    193                 $pass_time = $now_time - $leave_time; 
     190                $now_time   = time(); 
     191                $pass_time  = $now_time - $leave_time; 
    194192                // 退会から何時間-経過しているか判定する。 
    195193                $limit_time = ENTRY_LIMIT_HOUR * 3600; 
    196194                if($pass_time < $limit_time) { 
    197                     if (!isset($objErr->arrErr['email'])) $objErr->arrErr['email'] = ""; 
    198195                    $return = 2; 
    199196                } 
     
    203200        // ログインしている場合、すでに登録している自分のemailの場合はエラーを返さない 
    204201        if ($objCustomer->getValue('customer_id')){ 
    205             $arrRet = $objQuery->select("email, email_mobile" 
    206                             ,"dtb_customer" 
    207                             ,"customer_id = ? ORDER BY del_flg" 
    208                             ,array($objCustomer->getValue('customer_id')) 
    209                             ); 
    210             if ($email == $arrRet[0]["email"] 
    211                 || $email == $arrRet[0]["email_mobile"]){ 
    212                     $return = 3; 
    213                 } 
     202            $arrRet = $objQuery->select("email, email_mobile", 
     203                                        "dtb_customer", 
     204                                        "customer_id = ? ORDER BY del_flg", 
     205                                        array($objCustomer->getValue('customer_id'))); 
     206 
     207            if ($email == $arrRet[0]["email"] || $email == $arrRet[0]["email_mobile"]) { 
     208                $return = 3; 
     209            } 
    214210        } 
    215211        return $return; 
  • branches/version-2_5-dev/data/class/pages/entry/LC_Page_Entry.php

    r20082 r20085  
    329329 
    330330        // 現会員の判定 → 現会員もしくは仮登録中は、メアド一意が前提になってるので同じメアドで登録不可 
    331         $register_user_flg =  SC_Helper_Customer_Ex::sfCheckRegisterUserFromEmail($arrRet["email"]); 
    332         switch($register_user_flg) { 
    333             case 1: 
    334                 $objErr->arrErr["email"] .= "※ すでに会員登録で使用されているメールアドレスです。<br />"; 
    335                 break; 
    336             case 2: 
    337                 $objErr->arrErr["email"] .= "※ 退会から一定期間の間は、同じメールアドレスを使用することはできません。<br />"; 
    338                 break; 
    339             default: 
    340                 break; 
    341         } 
     331        $objErr->doFunc(array("メールアドレス", "email"), array("CHECK_REGIST_CUSTOMER_EMAIL")); 
     332 
    342333        return $objErr->arrErr; 
    343334    } 
  • branches/version-2_5-dev/data/class/pages/entry/LC_Page_Entry_EmailMobile.php

    r19870 r20085  
    4444    function init() { 
    4545        parent::init(); 
     46 
     47        $this->objFormParam = new SC_FormParam(); 
     48        $this->lfInitParam(); 
    4649    } 
    4750 
     
    6265     */ 
    6366    function action() { 
    64         $objCustomer = new SC_Customer; 
    65         $objFormParam = new SC_FormParam; 
    66  
    67         $this->lfInitParam($objFormParam); 
     67        $objCustomer    = new SC_Customer; 
    6868 
    6969        if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    70             $objFormParam->setParam($_POST); 
    71             $objFormParam->convParam(); 
    72             $this->arrErr = $this->lfCheckError($objFormParam, $objCustomer); 
     70            $this->objFormParam->setParam($_POST); 
     71            $this->objFormParam->convParam(); 
     72            $this->arrErr = $this->lfCheckError($objCustomer); 
    7373 
    7474            if (empty($this->arrErr)) { 
    75                 $this->lfRegister($objFormParam, $objCustomer); 
     75                $this->lfRegister($objCustomer); 
    7676                $this->tpl_mainpage = 'entry/email_mobile_complete.tpl'; 
    7777                $this->tpl_title = '携帯メール登録完了'; 
     
    8080 
    8181        $this->tpl_name = $objCustomer->getValue('name01'); 
    82         $this->arrForm = $objFormParam->getFormParamList(); 
     82        $this->arrForm  = $this->objFormParam->getFormParamList(); 
    8383    } 
    8484 
     
    9393 
    9494 
    95     function lfInitParam(&$objFormParam) { 
    96         $objFormParam->addParam('メールアドレス', 'email_mobile', MTEXT_LEN, 'a', 
     95    /** 
     96     * lfInitParam 
     97     * 
     98     * @param mixed $objFormParam 
     99     * @access public 
     100     * @return void 
     101     */ 
     102    function lfInitParam() { 
     103        $this->objFormParam->addParam('メールアドレス', 'email_mobile', MTEXT_LEN, 'a', 
    97104                                array('NO_SPTAB', 'EXIST_CHECK', 'MAX_LENGTH_CHECK', 'CHANGE_LOWER', 'EMAIL_CHAR_CHECK', 'EMAIL_CHECK', 'MOBILE_EMAIL_CHECK')); 
    98105    } 
    99106 
    100     function lfCheckError(&$objFormParam, &$objCustomer) { 
    101         $arrRet = $objFormParam->getHashArray(); 
    102         $objErr = new SC_CheckError($arrRet); 
    103         $objErr->arrErr = $objFormParam->checkError(); 
     107    /** 
     108     * lfCheckError 
     109     * 
     110     * @param mixed $objFormParam 
     111     * @param mixed $objCustomer 
     112     * @access public 
     113     * @return void 
     114     */ 
     115    function lfCheckError(&$objCustomer) { 
     116        $arrRet         = $this->objFormParam->getHashArray(); 
     117        $objErr         = new SC_CheckError($arrRet); 
     118        $objErr->arrErr = $this->objFormParam->checkError(); 
    104119 
    105         if (count($objErr->arrErr) > 0) { 
    106             return $objErr->arrErr; 
    107         } 
    108  
    109         $email_mobile = strtolower($objFormParam->getValue('email_mobile')); 
    110         $customer_id = $objCustomer->getValue('customer_id'); 
    111         $objQuery = new SC_Query(); 
    112         // TODO ORDER BY del_flg は必要? 
    113         $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)); 
    114  
    115         if (count($arrRet) > 0) { 
    116             if ($arrRet[0]['del_flg'] != '1') { 
    117                 // 会員である場合 
    118                 $objErr->arrErr['email_mobile'] .= '※ すでに登録されているメールアドレスです。<br>'; 
    119             } else { 
    120                 // 退会した会員である場合 
    121                 $leave_time = SC_Utils_Ex::sfDBDatetoTime($arrRet[0]['update_date']); 
    122                 $now_time = time(); 
    123                 $pass_time = $now_time - $leave_time; 
    124                 // 退会から何時間-経過しているか判定する。 
    125                 $limit_time = ENTRY_LIMIT_HOUR * 3600; 
    126                 if ($pass_time < $limit_time) { 
    127                     $objErr->arrErr['email_mobile'] .= '※ 退会から一定期間の間は、同じメールアドレスを使用することはできません。<br>'; 
    128                 } 
    129             } 
    130         } 
     120        $objErr->doFunc(array("メールアドレス", "email_mobile"), array("CHECK_REGIST_CUSTOMER_EMAIL")); 
    131121 
    132122        return $objErr->arrErr; 
    133123    } 
    134124 
    135     function lfRegister(&$objFormParam, &$objCustomer) { 
    136         $customer_id = $objCustomer->getValue('customer_id'); 
    137         $email_mobile = strtolower($objFormParam->getValue('email_mobile')); 
     125    /** 
     126     * lfRegister 
     127     * 
     128     * @param mixed $objFormParam 
     129     * @param mixed $objCustomer 
     130     * @access public 
     131     * @return void 
     132     */ 
     133    function lfRegister(&$objCustomer) { 
     134        $customer_id    = $objCustomer->getValue('customer_id'); 
     135        $email_mobile   = strtolower($this->objFormParam->getValue('email_mobile')); 
    138136 
    139         $objQuery = new SC_Query(); 
     137        $objQuery       = new SC_Query(); 
    140138        $objQuery->update('dtb_customer', array('email_mobile' => $email_mobile), 'customer_id = ?', array($customer_id)); 
    141139 
Note: See TracChangeset for help on using the changeset viewer.