source: branches/feature-module-update/data/class/pages/entry/LC_Page_Entry_EmailMobile.php @ 16202

Revision 16202, 4.7 KB checked in by nanasess, 15 years ago (diff)

クラス化対応

  • 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
Line 
1<?php
2/*
3 * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
4 *
5 * http://www.lockon.co.jp/
6 */
7
8// {{{ requires
9require_once(CLASS_PATH . "pages/LC_Page.php");
10
11/**
12 * 空メール会員登録(モバイル) のページクラス.
13 *
14 * @package Page
15 * @author LOCKON CO.,LTD.
16 * @version $Id$
17 */
18class LC_Page_Entry_EmailMobile extends LC_Page {
19
20    // }}}
21    // {{{ functions
22
23    /**
24     * Page を初期化する.
25     *
26     * @return void
27     */
28    function init() {
29        parent::init();
30        $this->tpl_mainpage = 'entry/email_mobile.tpl';
31        $this->tpl_title = '携帯メール登録';
32        $this->allowClientCache();
33    }
34
35    /**
36     * Page のプロセス.
37     *
38     * @return void
39     */
40    function process() {
41        $objView = new SC_MobileView;
42        $objCustomer = new SC_Customer;
43        $objFormParam = new SC_FormParam;
44
45        if (isset($_SESSION['mobile']['kara_mail_from'])) {
46            $_SERVER['REQUEST_METHOD'] = 'POST';
47            $_POST['email_mobile'] = $_SESSION['mobile']['kara_mail_from'];
48        }
49
50        $this->lfInitParam($objFormParam);
51
52        if ($_SERVER['REQUEST_METHOD'] == 'POST') {
53            $objFormParam->setParam($_POST);
54            $objFormParam->convParam();
55            $this->arrErr = $this->lfCheckError($objFormParam, $objCustomer);
56
57            if (empty($this->arrErr)) {
58                $this->lfRegister($objFormParam, $objCustomer);
59                $this->tpl_mainpage = 'entry/email_mobile_complete.tpl';
60                $this->tpl_title = '携帯メール登録完了';
61            }
62        }
63
64        // 空メール用のトークンを作成する。
65        if (MOBILE_USE_KARA_MAIL) {
66            $objMobile = new SC_Helper_Mobile_Ex();
67            $token = $objMobile->gfPrepareKaraMail('entry/email_mobile.php');
68            if ($token !== false) {
69                $this->tpl_kara_mail_to = MOBILE_KARA_MAIL_ADDRESS_USER . MOBILE_KARA_MAIL_ADDRESS_DELIMITER . 'entry_' . $token . '@' . MOBILE_KARA_MAIL_ADDRESS_DOMAIN;
70            }
71        }
72
73        $this->tpl_name = $objCustomer->getValue('name01');
74        $this->arrForm = $objFormParam->getFormParamList();
75
76        $objView->assignobj($this);
77        $objView->display(SITE_FRAME);
78    }
79
80    /**
81     * デストラクタ.
82     *
83     * @return void
84     */
85    function destroy() {
86        parent::destroy();
87    }
88
89
90    function lfInitParam(&$objFormParam) {
91        $objFormParam->addParam('メールアドレス', 'email_mobile', MTEXT_LEN, 'a',
92                                array('NO_SPTAB', 'EXIST_CHECK', 'MAX_LENGTH_CHECK', 'CHANGE_LOWER', 'EMAIL_CHAR_CHECK', 'MOBILE_EMAIL_CHECK'));
93    }
94
95    function lfCheckError(&$objFormParam, &$objCustomer) {
96        $arrRet = $objFormParam->getHashArray();
97        $objErr = new SC_CheckError($arrRet);
98        $objErr->arrErr = $objFormParam->checkError();
99
100        if (count($objErr->arrErr) > 0) {
101            return $objErr->arrErr;
102        }
103
104        $email_mobile = strtolower($objFormParam->getValue('email_mobile'));
105        $customer_id = $objCustomer->getValue('customer_id');
106        $objQuery = new SC_Query();
107        // TODO ORDER BY del_flg は必要?
108        $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));
109
110        if (count($arrRet) > 0) {
111            if ($arrRet[0]['del_flg'] != '1') {
112                // 会員である場合
113                $objErr->arrErr['email_mobile'] .= '※ すでに登録されているメールアドレスです。<br>';
114            } else {
115                // 退会した会員である場合
116                $leave_time = SC_Utils_Ex::sfDBDatetoTime($arrRet[0]['update_date']);
117                $now_time = time();
118                $pass_time = $now_time - $leave_time;
119                // 退会から何時間-経過しているか判定する。
120                $limit_time = ENTRY_LIMIT_HOUR * 3600;
121                if ($pass_time < $limit_time) {
122                    $objErr->arrErr['email_mobile'] .= '※ 退会から一定期間の間は、同じメールアドレスを使用することはできません。<br>';
123                }
124            }
125        }
126
127        return $objErr->arrErr;
128    }
129
130    function lfRegister(&$objFormParam, &$objCustomer) {
131        $customer_id = $objCustomer->getValue('customer_id');
132        $email_mobile = strtolower($objFormParam->getValue('email_mobile'));
133
134        $objQuery = new SC_Query();
135        $objQuery->update('dtb_customer', array('email_mobile' => $email_mobile), 'customer_id = ?', array($customer_id));
136
137        $objCustomer->setValue('email_mobile', $email_mobile);
138    }
139}
140?>
Note: See TracBrowser for help on using the repository browser.