Changeset 16369


Ignore:
Timestamp:
2007/10/10 18:11:50 (15 years ago)
Author:
nanasess
Message:

携帯メールアドレスも登録できるように修正

Location:
branches/feature-module-update/data
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/feature-module-update/data/Smarty/templates/default/mypage/change.tpl

    r16217 r16369  
    8282      </tr> 
    8383      <tr> 
     84        <th>携帯メールアドレス</th> 
     85        <td> 
     86          <input type="text" name="email_mobile" value="<!--{$arrForm.email_mobile}-->" style="<!--{$arrErr.email_mobile|sfGetErrorColor}-->; ime-mode: disabled;" maxlength="<!--{$smarty.const.MTEXT_LEN}-->" size="40" class="box300" /><div class="attention"><!--{$arrErr.email_mobile}--></div><br /> 
     87          <input type="text" name="email_mobile02" value="<!--{if $arrForm.email_mobile02 == ""}--><!--{$arrForm.email_mobile}--><!--{else}--><!--{$arrForm.email_mobile02}--><!--{/if}-->" style="<!--{$arrErr.email_mobile02|sfGetErrorColor}-->; ime-mode: disabled;" maxlength="<!--{$smarty.const.MTEXT_LEN}-->" size="40" class="box300" /><div class="attention"><!--{$arrErr.email_mobile02}--></div><br /> 
     88          <p class="mini"><em>確認のため2度入力してください。</em></p> 
     89        </td> 
     90      </tr> 
     91      <tr> 
    8492        <th>性別<span class="attention">※</span></th> 
    8593        <td> 
  • branches/feature-module-update/data/Smarty/templates/default/mypage/change_confirm.tpl

    r16072 r16369  
    5252        </tr> 
    5353        <tr> 
     54          <th>携帯メールアドレス</th> 
     55          <td> 
     56            <!--{if strlen($arrForm.email_mobile) > 0}--> 
     57            <a href="<!--{$arrForm.email_mobile|escape:'hex'}-->"><!--{$arrForm.email_mobile|escape:'hexentity'}--></a> 
     58            <!--{else}--> 
     59            未登録 
     60            <!--{/if}--> 
     61          </td> 
     62        </tr> 
     63        <tr> 
    5464          <th>性別<span class="attention">※</span></th> 
    5565          <td><!--{$arrSex[$arrForm.sex]}--></td> 
  • branches/feature-module-update/data/class/pages/mypage/LC_Page_Mypage_Change.php

    r16258 r16369  
    1717 */ 
    1818class LC_Page_Mypage_Change extends LC_Page { 
     19 
    1920 
    2021    // }}} 
     
    8990                                 array(  "column" => "addr02",      "convert" => "aKV" ), 
    9091                                 array(  "column" => "email",       "convert" => "a" ), 
     92                                 array(  "column" => "email_mobile", "convert" => "a" ), 
    9193                                 array(  "column" => "tel01",       "convert" => "n" ), 
    9294                                 array(  "column" => "tel02",       "convert" => "n" ), 
     
    104106                                 ); 
    105107 
     108        //メールアドレス種別 
     109        $arrMailType = array("email" => true, "email_mobile" => true); 
     110 
    106111        if (!isset($_POST['mode'])) $_POST['mode'] = ""; 
    107112 
     
    109114 
    110115        case 'confirm': 
    111             //-- 入力データの変換 
    112             $this->arrForm = $_POST; 
    113             $this->arrForm = $this->lfConvertParam($this->arrForm, $arrRegistColumn); 
    114             $this->arrForm['email'] = strtolower($this->arrForm['email']);      // emailはすべて小文字で処理 
    115  
    116             //エラーチェック 
    117             $this->arrErr = $this->lfErrorCheck($this->arrForm); 
    118             $email_flag = true; 
    119             //メールアドレスを変更している場合、メールアドレスの重複チェック 
    120             if ($this->arrForm['email'] != $this->objCustomer->getValue('email')){ 
    121                 $email_cnt = $this->objQuery->count("dtb_customer","del_flg=0 AND email=?", array($this->arrForm['email'])); 
    122                 if ($email_cnt > 0){ 
    123                     $email_flag = false; 
    124                 } 
    125             } 
     116 
    126117            //エラーなしでかつメールアドレスが重複していない場合 
    127             if ($this->arrErr == "" && $email_flag == true){ 
     118            if ($this->checkErrorTotal($arrRegistColumn, $arrMailType)) { 
     119 
    128120                //確認ページへ 
    129121                $this->tpl_mainpage = TEMPLATE_DIR . 'mypage/change_confirm.tpl'; 
     
    133125            } else { 
    134126                $this->lfFormReturn($this->arrForm,$this); 
    135                 if ($email_flag == false){ 
    136                     $this->arrErr['email'].="既に使用されているメールアドレスです。"; 
    137                 } 
    138             } 
    139             //} 
     127            } 
     128 
    140129            break; 
    141130 
     
    146135 
    147136        case 'complete': 
    148  
    149             //-- 入力データの変換 
    150             $arrForm = $this->lfConvertParam($_POST, $arrRegistColumn); 
    151             $arrForm['email'] = strtolower($arrForm['email']);      // emailはすべて小文字で処理 
    152  
    153             //エラーチェック 
    154             $this->arrErr = $this->lfErrorCheck($arrForm); 
    155             $email_flag = true; 
    156             if($arrForm['email'] != $this->objCustomer->getValue('email')) { 
    157                 //メールアドレスの重複チェック 
    158                 $email_cnt = $this->objQuery->count("dtb_customer","del_flg=0 AND email=?", array($arrForm['email'])); 
    159                 if ($email_cnt > 0){ 
    160                     $email_flag = false; 
    161                 } 
    162             } 
    163137            //エラーなしでかつメールアドレスが重複していない場合 
    164             if($this->arrErr == "" && $email_flag) { 
    165                 $arrForm['customer_id'] = $this->objCustomer->getValue('customer_id'); 
     138            if ($this->checkErrorTotal($arrRegistColumn, $arrMailType)) { 
     139                $this->arrForm['customer_id'] = $this->objCustomer->getValue('customer_id'); 
    166140                //-- 編集登録 
    167141                $objDb = new SC_Helper_DB_Ex(); 
    168                 $objDb->sfEditCustomerData($arrForm, $arrRegistColumn); 
     142                $objDb->sfEditCustomerData($this->arrForm, $arrRegistColumn); 
    169143                //セッション情報を最新の状態に更新する 
    170144                $this->objCustomer->updateSession(); 
     
    220194        $objDate = new SC_Date(START_BIRTH_YEAR, date("Y",strtotime("now"))); 
    221195        $objQuery = new SC_Query(); 
    222         $objCustomer = new SC_Customer(); 
     196        $this->objCustomer = new SC_Customer(); 
     197 
     198        //メールアドレス種別 
     199        $arrMailType = array("email" => true, "email_mobile" => true); 
    223200 
    224201        //---- 登録用カラム配列 
     
    253230        $arrRejectRegistColumn = array("year", "month", "day", "email02", "email_mobile02", "password02"); 
    254231 
    255         $this->arrForm = lfGetCustomerData(); 
     232        $this->arrForm = $this->lfGetCustomerData(); 
    256233        $this->arrForm['password'] = DEFAULT_PASSWORD; 
    257234 
     
    365342                //-- 仮登録と完了画面 
    366343                if ($_POST["mode"] == "complete") { 
    367  
     344                    /* 
    368345                    //-- 入力データの変換 
    369346                    $arrForm = $this->lfConvertParam($_POST, $arrRegistColumn); 
     
    381358                        } 
    382359                    } 
    383  
     360                    */ 
    384361                    //エラーなしでかつメールアドレスが重複していない場合 
    385                     if($this->arrErr == "" && $email_flag) { 
    386                         $arrForm['customer_id'] = $objCustomer->getValue('customer_id'); 
     362                    if($this->checkErrorTotal($arrRegistColumn, $arrMailType, true)) { 
     363                        $this->arrForm['customer_id'] = $this->objCustomer->getValue('customer_id'); 
    387364                        //-- 編集登録 
    388365                        $objDb->sfEditCustomerData($arrForm, $arrRegistColumn); 
    389366                        //セッション情報を最新の状態に更新する 
    390                         $objCustomer->updateSession(); 
     367                        $this->objCustomer->updateSession(); 
    391368                        //完了ページへ 
    392369                        $this->sendRedirect($this->getLocation("./change_complete.php", array(session_name(), session_id()))); 
     
    416393    function destroy() { 
    417394        parent::destroy(); 
     395    } 
     396 
     397    /** 
     398     * すべてのエラーチェックを行う. 
     399     * 
     400     * @param array $arrRegistColumn 登録カラムの配列 
     401     * @param array $arrMailType メール種別とフラグを格納した配列 
     402     * @param bool $isMobile モバイル版登録チェックの場合 true 
     403     * @return bool エラーの無い場合 true 
     404     */ 
     405    function checkErrorTotal(&$arrRegistColumn, &$arrMailType, $isMobile = false) { 
     406        //-- 入力データの変換 
     407        $this->arrForm = $_POST; 
     408        $this->arrForm = $this->lfConvertParam($this->arrForm, $arrRegistColumn); 
     409 
     410        // emailはすべて小文字で処理 
     411        foreach ($arrMailType as $mailType) { 
     412            if (!isset($this->arrForm[$mailType])) { 
     413                $this->arrForm[$mailType] = ""; 
     414            } 
     415            $this->arrForm[$mailType] = strtolower($this->arrForm[$mailType]); 
     416        } 
     417 
     418        //エラーチェック 
     419        $this->arrErr = $isMobile 
     420            ? $this->lfErrorCheckMobile($this->arrForm) 
     421            : $this->lfErrorCheck($this->arrForm); 
     422 
     423        //メールアドレスを変更している場合、メールアドレスの重複チェック 
     424        $arrMailType2 = $arrMailType; 
     425        foreach ($arrMailType as $mailType => $mailTypeValue) { 
     426 
     427            if ($this->arrForm[$mailType] 
     428                != $this->objCustomer->getValue($mailType)){ 
     429 
     430                $email_cnt = $this->objQuery->count("dtb_customer", 
     431                                 "del_flg=0 AND " . $mailType . "= ?", 
     432                                  array($this->arrForm[$mailType])); 
     433                if ($email_cnt > 0){ 
     434                    $arrMailType2[$mailTypeValue] = false; 
     435                    $this->arrErr[$mailType] .= "既に使用されているメールアドレスです。"; 
     436                } 
     437            } 
     438        } 
     439 
     440        // エラーが存在せず, メールアドレスの重複が無い場合は true 
     441        if (empty($this->arrErr) 
     442            && $arrMailType2['email'] == true 
     443            && $arrMailType2['email_mobile'] == true) { 
     444            return true; 
     445        } else { 
     446            return false; 
     447        } 
    418448    } 
    419449 
     
    452482        $objErr->doFunc(array('メールアドレス(確認)', "email02", MTEXT_LEN) ,array("EXIST_CHECK", "EMAIL_CHECK","NO_SPTAB" , "EMAIL_CHAR_CHECK", "MAX_LENGTH_CHECK")); 
    453483        $objErr->doFunc(array('メールアドレス', 'メールアドレス(確認)', "email", "email02") ,array("EQUAL_CHECK")); 
     484        $objErr->doFunc(array('携帯メールアドレス', "email_mobile", MTEXT_LEN) ,array("EXIST_CHECK", "EMAIL_CHECK", "NO_SPTAB" ,"EMAIL_CHAR_CHECK", "MAX_LENGTH_CHECK", "MOBILE_DOMAIN_CHECK")); 
     485        $objErr->doFunc(array('携帯メールアドレス(確認)', "email_mobile02", MTEXT_LEN) ,array("EXIST_CHECK", "EMAIL_CHECK","NO_SPTAB" , "EMAIL_CHAR_CHECK", "MAX_LENGTH_CHECK", "MOBILE_DOMAIN_CHECK")); 
     486        $objErr->doFunc(array('携帯メールアドレス', '携帯メールアドレス(確認)', "email_mobile", "email_mobile02") ,array("EQUAL_CHECK")); 
    454487        $objErr->doFunc(array("お電話番号1", 'tel01'), array("EXIST_CHECK","SPTAB_CHECK")); 
    455488        $objErr->doFunc(array("お電話番号2", 'tel02'), array("EXIST_CHECK","SPTAB_CHECK")); 
     
    666699        if (strlen($array["email"]) > 0) { 
    667700            $objQuery = new SC_Query(); 
    668             $arrRet = $objQuery->select("email, update_date, del_flg", "dtb_customer","customer_id <> ? and (email ILIKE ? OR email_mobile ILIKE ?) ORDER BY del_flg", array($array["customer_id"], $array["email"], $array["email"])); 
     701            $arrRet = $objQuery->select("email, update_date, del_flg", "dtb_customer","customer_id <> ? and (email = ? OR email_mobile = ?) ORDER BY del_flg", array($array["customer_id"], $array["email"], $array["email"])); 
    669702 
    670703            if(count($arrRet) > 0) { 
     
    674707                } else { 
    675708                    // 退会した会員である場合 
    676                     $leave_time = sfDBDatetoTime($arrRet[0]['update_date']); 
     709                    $leave_time = SC_Utils_Ex::sfDBDatetoTime($arrRet[0]['update_date']); 
    677710                    $now_time = time(); 
    678711                    $pass_time = $now_time - $leave_time; 
     
    774807 
    775808        //メルマガフラグ取得 
    776         $arrForm['mailmaga_flg'] = $objQuery->get("dtb_customer","mailmaga_flg","email=?", array($objCustomer->getValue('email_mobile'))); 
     809        $arrForm['mailmaga_flg'] = $objQuery->get("dtb_customer","mailmaga_flg","email_mobile=?", array($objCustomer->getValue('email_mobile'))); 
    777810 
    778811        //誕生日の年月日取得 
Note: See TracChangeset for help on using the changeset viewer.