source: branches/version-2_5-dev/data/class/pages/mypage/LC_Page_Mypage_Change.php @ 19892

Revision 19892, 13.6 KB checked in by fukuda, 11 years ago (diff)

#880(mobile/sphoneディレクトリを削除)に対応。まずmobileのみ意図通りの動作になるように一部コミット(mypageディレクトリ)
・entryディレクトリと処理を共通化

  • Property svn:eol-style set to LF
  • Property svn:keywords set to Id Revision Date
  • Property svn:mime-type set to text/x-httpd-php; charset=UTF-8
Line 
1<?php
2/*
3 * This file is part of EC-CUBE
4 *
5 * Copyright(c) 2000-2010 LOCKON CO.,LTD. All Rights Reserved.
6 *
7 * http://www.lockon.co.jp/
8 *
9 * This program is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public License
11 * as published by the Free Software Foundation; either version 2
12 * of the License, or (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
21 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
22 */
23
24// {{{ requires
25require_once(CLASS_REALDIR . "pages/LC_Page.php");
26
27/**
28 * 登録内容変更 のページクラス.
29 *
30 * @package Page
31 * @author LOCKON CO.,LTD.
32 * @version $Id$
33 */
34class LC_Page_Mypage_Change extends LC_Page {
35
36
37    // }}}
38    // {{{ functions
39
40    /**
41     * Page を初期化する.
42     *
43     * @return void
44     */
45    function init() {
46        parent::init();
47        $this->tpl_title = 'MYページ';
48        $this->tpl_subtitle = '会員登録内容変更(入力ページ)';
49        $this->tpl_navi = TEMPLATE_REALDIR . 'mypage/navi.tpl';
50        $this->tpl_mainno = 'mypage';
51        $this->tpl_mypageno = 'change';
52
53        $masterData = new SC_DB_MasterData_Ex();
54        $this->arrReminder = $masterData->getMasterData("mtb_reminder");
55        $this->arrPref = $masterData->getMasterData('mtb_pref');
56        $this->arrJob = $masterData->getMasterData("mtb_job");
57        $this->arrMAILMAGATYPE = $masterData->getMasterData("mtb_mail_magazine_type");
58        $this->arrSex = $masterData->getMasterData("mtb_sex");
59        $this->httpCacheControl('nocache');
60       
61        // 生年月日選択肢の取得
62        $objDate = new SC_Date(START_BIRTH_YEAR, date("Y",strtotime("now")));
63        $this->arrYear = $objDate->getYear('', 1950, '');
64        $this->arrMonth = $objDate->getMonth(true);
65        $this->arrDay = $objDate->getDay(true);
66       
67        $this->isMobile = Net_UserAgent_Mobile::isMobile();
68    }
69
70    /**
71     * Page のプロセス.
72     *
73     * @return void
74     */
75    function process() {
76        $this->action();
77        $this->sendResponse();
78    }
79   
80    /**
81     * Page のプロセス
82     * @return void
83     */
84    function action() {
85        $objDb = new SC_Helper_DB_Ex();
86        $CONF = $objDb->sfGetBasisData();
87       
88        $objQuery = new SC_Query();
89        $objCustomer = new SC_Customer();
90       
91        // ログインチェック
92        if (!$objCustomer->isLoginSuccess()){
93            SC_Utils_Ex::sfDispSiteError(CUSTOMER_ERROR);
94        }else {
95            //マイページトップ顧客情報表示用
96            $this->CustomerName1 = $objCustomer->getvalue('name01');
97            $this->CustomerName2 = $objCustomer->getvalue('name02');
98            $this->CustomerPoint = $objCustomer->getvalue('point');
99        }
100       
101        // mobile用(戻るボタンでの遷移かどうかを判定)
102        if (!empty($_POST["return"])) {
103            $_POST["mode"] = "return";
104        }
105       
106        // パラメータ管理クラス,パラメータ情報の初期化
107        $this->objFormParam = new SC_FormParam();
108        $this->lfInitParam();
109        $this->objFormParam->setParam($_POST);    // POST値の取得
110       
111       
112        if ($_SERVER["REQUEST_METHOD"] == "POST") {
113           
114            //CSRF対策
115            /*
116            if (!SC_Helper_Session_Ex::isValidToken()) {
117                SC_Utils_Ex::sfDispSiteError(PAGE_ERROR, "", true);
118            }
119            */
120                       
121            $this->objFormParam->convParam();
122            $this->objFormParam->toLower('email');
123            $this->objFormParam->toLower('email02');
124            $this->objFormParam->toLower('email_mobile');
125            $this->objFormParam->toLower('email_mobile02');
126            $this->arrForm = $this->objFormParam->getHashArray();
127                 
128            //-- 確認
129            if ($_POST["mode"] == "confirm") {
130
131                $this->arrErr = $this->lfErrorCheck();
132               
133                // 入力エラーなし
134                if(count($this->arrErr) == 0) {
135                   
136                    $this->list_data = $this->objFormParam->getHashArray();
137               
138                    //パスワード表示
139                    $passlen = strlen($this->arrForm['password']);
140                    $this->passlen = SC_Utils_Ex::lfPassLen($passlen);
141   
142                    $this->tpl_mainpage = 'mypage/change_confirm.tpl';
143                    $this->tpl_title = '会員登録(確認ページ)';
144                }
145
146            } elseif ($_POST["mode"] == "complete") {
147                //-- 会員登録と完了画面
148           
149                // 会員情報の登録
150                $this->CONF = $CONF;
151                $this->lfRegistData();
152               
153                // 完了ページに移動させる。
154                SC_Response_Ex::sendRedirect('change_complete.php');
155                exit;
156               
157            }
158        } else {
159            $this->arrForm = $this->lfGetCustomerData();
160            $this->arrForm['password'] = DEFAULT_PASSWORD;
161            $this->arrForm['password02'] = DEFAULT_PASSWORD;
162        }
163        $this->transactionid = SC_Helper_Session_Ex::getToken();
164    }
165
166    /**
167     * デストラクタ.
168     *
169     * @return void
170     */
171    function destroy() {
172        parent::destroy();
173    }
174
175    /* パラメータ情報の初期化 */
176    function lfInitParam() {
177                         
178        $this->objFormParam->addParam("お名前(姓)", 'name01', STEXT_LEN, "aKV", array("EXIST_CHECK", "NO_SPTAB", "SPTAB_CHECK" ,"MAX_LENGTH_CHECK"));
179        $this->objFormParam->addParam("お名前(名)", 'name02', STEXT_LEN, "aKV", array("EXIST_CHECK", "NO_SPTAB", "SPTAB_CHECK" , "MAX_LENGTH_CHECK"));
180        $this->objFormParam->addParam("お名前(フリガナ・姓)", 'kana01', STEXT_LEN, "CKV", array("EXIST_CHECK", "NO_SPTAB", "SPTAB_CHECK" ,"MAX_LENGTH_CHECK", "KANA_CHECK"));
181        $this->objFormParam->addParam("お名前(フリガナ・名)", 'kana02', STEXT_LEN, "CKV", array("EXIST_CHECK", "NO_SPTAB", "SPTAB_CHECK" ,"MAX_LENGTH_CHECK", "KANA_CHECK"));
182        $this->objFormParam->addParam("パスワード", 'password', STEXT_LEN, "a", array("EXIST_CHECK", "SPTAB_CHECK" ,"ALNUM_CHECK"));
183        $this->objFormParam->addParam("パスワード確認用の質問", "reminder", STEXT_LEN, "n", array("EXIST_CHECK", "NUM_CHECK"));
184        $this->objFormParam->addParam("パスワード確認用の質問の答え", "reminder_answer", STEXT_LEN, "aKV", array("EXIST_CHECK","SPTAB_CHECK" , "MAX_LENGTH_CHECK"));
185        $this->objFormParam->addParam("郵便番号1", "zip01", ZIP01_LEN, "n", array("EXIST_CHECK", "SPTAB_CHECK" ,"NUM_CHECK", "NUM_COUNT_CHECK"));
186        $this->objFormParam->addParam("郵便番号2", "zip02", ZIP02_LEN, "n", array("EXIST_CHECK", "SPTAB_CHECK" ,"NUM_CHECK", "NUM_COUNT_CHECK"));
187        $this->objFormParam->addParam("都道府県", 'pref', INT_LEN, "n", array("EXIST_CHECK","NUM_CHECK"));
188        $this->objFormParam->addParam("住所1", "addr01", MTEXT_LEN, "aKV", array("EXIST_CHECK","SPTAB_CHECK" ,"MAX_LENGTH_CHECK"));
189        $this->objFormParam->addParam("住所2", "addr02", MTEXT_LEN, "aKV", array("EXIST_CHECK","SPTAB_CHECK" ,"MAX_LENGTH_CHECK"));
190        $this->objFormParam->addParam("お電話番号1", 'tel01', TEL_ITEM_LEN, "n", array("EXIST_CHECK","SPTAB_CHECK" ));
191        $this->objFormParam->addParam("お電話番号2", 'tel02', TEL_ITEM_LEN, "n", array("EXIST_CHECK","SPTAB_CHECK" ));
192        $this->objFormParam->addParam("お電話番号3", 'tel03', TEL_ITEM_LEN, "n", array("EXIST_CHECK","SPTAB_CHECK" ));
193        $this->objFormParam->addParam("性別", "sex", INT_LEN, "n", array("EXIST_CHECK", "NUM_CHECK"));
194        $this->objFormParam->addParam("職業", "job", INT_LEN, "n", array("NUM_CHECK"));
195        $this->objFormParam->addParam("年", "year", INT_LEN, "n", array("MAX_LENGTH_CHECK"), "", false);
196        $this->objFormParam->addParam("月", "month", INT_LEN, "n", array("MAX_LENGTH_CHECK"), "", false);
197        $this->objFormParam->addParam("日", "day", INT_LEN, "n", array("MAX_LENGTH_CHECK"), "", false);
198       
199        if ($this->isMobile === false){
200            $this->objFormParam->addParam("FAX番号1", 'fax01', TEL_ITEM_LEN, "n", array("SPTAB_CHECK"));
201            $this->objFormParam->addParam("FAX番号2", 'fax02', TEL_ITEM_LEN, "n", array("SPTAB_CHECK"));
202            $this->objFormParam->addParam("FAX番号3", 'fax03', TEL_ITEM_LEN, "n", array("SPTAB_CHECK"));
203            $this->objFormParam->addParam("メールマガジン", "mailmaga_flg", INT_LEN, "n", array("EXIST_CHECK", "NUM_CHECK"));
204            $this->objFormParam->addParam("パスワード(確認)", 'password02', STEXT_LEN, "a", array("EXIST_CHECK", "SPTAB_CHECK" ,"ALNUM_CHECK"), "", false);
205            $this->objFormParam->addParam('メールアドレス', "email", MTEXT_LEN, "a", array("NO_SPTAB", "EXIST_CHECK", "EMAIL_CHECK", "SPTAB_CHECK" ,"EMAIL_CHAR_CHECK", "MAX_LENGTH_CHECK"));
206            $this->objFormParam->addParam('メールアドレス(確認)', "email02", MTEXT_LEN, "a", array("NO_SPTAB", "EXIST_CHECK", "EMAIL_CHECK","SPTAB_CHECK" , "EMAIL_CHAR_CHECK", "MAX_LENGTH_CHECK"), "", false);
207            $this->objFormParam->addParam('携帯メールアドレス', "email_mobile", MTEXT_LEN, "a", array("NO_SPTAB", "EMAIL_CHECK", "SPTAB_CHECK" ,"EMAIL_CHAR_CHECK", "MAX_LENGTH_CHECK"));
208            $this->objFormParam->addParam('携帯メールアドレス(確認)', "email_mobile02", MTEXT_LEN, "a", array("NO_SPTAB", "EMAIL_CHECK","SPTAB_CHECK" , "EMAIL_CHAR_CHECK", "MAX_LENGTH_CHECK"), "", false);
209        } else {
210            $this->objFormParam->addParam('メールアドレス', "email", MTEXT_LEN, "a", array("EXIST_CHECK", "EMAIL_CHECK", "NO_SPTAB" ,"EMAIL_CHAR_CHECK", "MAX_LENGTH_CHECK","MOBILE_EMAIL_CHECK"));
211        }
212    }
213
214    //---- 入力エラーチェック
215    function lfErrorCheck($array) {
216
217        // 入力データを渡す。
218        $arrRet = $this->objFormParam->getHashArray();
219        $objErr = new SC_CheckError($arrRet);
220        $objErr->arrErr = $this->objFormParam->checkError();
221                       
222        $objErr->doFunc(array("お電話番号", "tel01", "tel02", "tel03"),array("TEL_CHECK"));
223        $objErr->doFunc(array("郵便番号", "zip01", "zip02"), array("ALL_EXIST_CHECK"));
224        $objErr->doFunc(array("生年月日", "year", "month", "day"), array("CHECK_BIRTHDAY"));
225        if ($this->isMobile === false){
226            $objErr->doFunc(array('パスワード', 'パスワード(確認)', "password", "password02") ,array("EQUAL_CHECK"));
227            $objErr->doFunc(array('メールアドレス', 'メールアドレス(確認)', "email", "email02") ,array("EQUAL_CHECK"));
228            $objErr->doFunc(array("FAX番号", "fax01", "fax02", "fax03") ,array("TEL_CHECK"));
229        }
230               
231        // 現会員の判定 → 現会員もしくは仮登録中は、メアド一意が前提になってるので同じメアドで登録不可
232        $register_user_flg = SC_Helper_Customer_Ex::lfCheckRegisterUserFromEmail($arrRet["email"]);
233        switch($register_user_flg) {
234            case 1:
235                $objErr->arrErr["email"] .= "※ すでに会員登録で使用されているメールアドレスです。<br />";
236                break;
237            case 2:
238                $objErr->arrErr["email"] .= "※ 退会から一定期間の間は、同じメールアドレスを使用することはできません。<br />";
239                break;
240            default:
241                break;
242        }
243        return $objErr->arrErr;
244    }
245   
246    function lfRegistData() {
247               
248        $objQuery = new SC_Query();
249        $objCustomer = new SC_Customer();
250       
251        $arrRet = $this->objFormParam->getHashArray();
252       
253        // 登録データの作成
254        $sqlval = $this->objFormParam->getDbArray();
255        $sqlval['birth'] = SC_Utils_Ex::sfGetTimestamp($arrRet['year'], $arrRet['month'], $arrRet['day']);
256                       
257        $objQuery->begin();
258        SC_Helper_Customer_Ex::sfEditCustomerData($sqlval, $objCustomer->getValue('customer_id'));       
259        $objQuery->commit();
260    }
261   
262    /**
263     * 顧客情報の取得
264     *
265     * @return array 顧客情報
266     */
267    function lfGetCustomerData(){
268        $objQuery = new SC_Query();
269        $objCustomer = new SC_Customer();
270       
271        // 顧客情報DB取得
272        $ret = $objQuery->select("*","dtb_customer","customer_id=?", array($objCustomer->getValue('customer_id')));
273        $arrForm = $ret[0];
274
275        // 確認項目に複製
276        $arrForm['email02'] = $arrForm['email'];
277        $arrForm['email_mobile02'] = $arrForm['email_mobile'];
278
279        // 誕生日を年月日に分ける
280        if (isset($arrForm['birth'])){
281            $birth = split(" ", $arrForm["birth"]);
282            list($arrForm['year'], $arrForm['month'], $arrForm['day']) = split("-",$birth[0]);
283        }
284        return $arrForm;
285    }
286
287    //エラー、戻る時にフォームに入力情報を返す
288    function lfFormReturn($array, &$objPage){
289        foreach($array as $key => $val){
290            switch ($key){
291            case 'password':
292            case 'password02':
293                $objPage->$key = $val;
294                break;
295            default:
296                $array[ $key ] = $val;
297                break;
298            }
299        }
300    }
301   
302}
303?>
Note: See TracBrowser for help on using the repository browser.