source: branches/feature-module-update/data/class/pages/regist/LC_Page_Regist.php @ 16371

Revision 16371, 10.0 KB checked in by nanasess, 15 years ago (diff)

モバイル対応の関数追加

  • 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 * 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_Regist extends LC_Page {
19
20    // {{{ properties
21
22    /** ページ情報の配列 */
23    var $arrInfo;
24
25    /** 設定情報 */
26    var $CONF;
27
28    // }}}
29    // {{{ functions
30
31    /**
32     * Page を初期化する.
33     *
34     * @return void
35     */
36    function init() {
37        parent::init();
38        $this->tpl_css = URL_DIR.'css/layout/regist/index.css';
39    }
40
41    /**
42     * Page のプロセス.
43     *
44     * @return void
45     */
46    function process() {
47        $objConn = new SC_DBConn();
48        $objQuery = new SC_Query();
49        $objView = new SC_SiteView();
50        $objSiteInfo = $objView->objSiteInfo;
51        $objCustomer = new SC_Customer();
52        $objDb = new SC_Helper_DB_Ex();
53        $this->CONF = $objDb->sf_getBasisData();
54        $this->arrInfo = $objSiteInfo->data;
55
56        // キャンペーンからの登録の場合の処理
57        if($_GET["cp"] != "") {
58            $etc_val = array("cp" => $_GET['cp']);
59        }
60
61        //-- 本登録完了のためにメールから接続した場合
62        if ($_GET["mode"] == "regist") {
63
64            //-- 入力チェック
65            $this->arrErr = $this->lfErrorCheck($_GET);
66            if ($this->arrErr) {
67                $this->tpl_mainpage = 'regist/error.tpl';
68                $this->tpl_css = "/css/layout/regist/error.css";
69                $this->tpl_title = 'エラー';
70
71            } else {
72                $registSecretKey = $this->lfRegistData($_GET);          //本会員登録(フラグ変更)
73                $this->lfSendRegistMail($registSecretKey);              //本会員登録完了メール送信
74
75                // ログイン済みの状態にする。
76                $email = $objQuery->get("dtb_customer", "email", "secret_key = ?", array($registSecretKey));
77                $objCustomer->setLogin($email);
78                $this->sendRedirect($this->getLocation("./complate.php", $etc_val));
79                exit;
80            }
81
82        //-- それ以外のアクセスは無効とする
83        } else {
84            $this->arrErr["id"] = "無効なアクセスです。";
85            $this->tpl_mainpage = 'regist/error.tpl';
86            $this->tpl_css = "/css/layout/regist/error.css";
87            $this->tpl_title = 'エラー';
88
89        }
90
91        //---- ページ表示
92        $objView->assignobj($this);
93        $objView->display(SITE_FRAME);
94    }
95
96
97    /**
98     * モバイルページを初期化する.
99     *
100     * @return void
101     */
102    function mobileInit() {
103    }
104
105    /**
106     * Page のプロセス(モバイル).
107     *
108     * @return void
109     */
110    function mobileProcess() {
111        $objConn = new SC_DBConn();
112        $objView = new SC_MobileView();
113        $objSiteInfo = $objView->objSiteInfo;
114        $objCustomer = new SC_Customer();
115        $objDb = new SC_Helper_DB_Ex();
116        $this->CONF = $objDb->sf_getBasisData();
117        $arrInfo = $objSiteInfo->data;
118
119        //-- 本登録完了のためにメールから接続した場合
120        if ($_GET["mode"] == "regist") {
121   
122            //-- 入力チェック
123            $this->arrErr = lfErrorCheck($_GET);
124            if ($this->arrErr) {
125                $this->tpl_mainpage = 'regist/error.tpl';
126                $this->tpl_css = "/css/layout/regist/error.css";
127                $this->tpl_title = 'エラー';
128
129            } else {
130                //$this->tpl_mainpage = 'regist/complete.tpl';
131                //$this->tpl_title = ' 会員登録(完了ページ)';
132                $registSecretKey = lfRegistData($_GET);         //本会員登録(フラグ変更)
133                lfSendRegistMail($registSecretKey);             //本会員登録完了メール送信
134
135                // ログイン済みの状態にする。
136                $objQuery = new SC_Query();
137                $email = $objQuery->get("dtb_customer", "email", "secret_key = ?", array($registSecretKey));
138                $objCustomer->setLogin($email);
139                $this->sendRedirect($this->getLocation("./complete.php"));
140                header("Location: " . gfAddSessionId("./complete.php"));
141                exit;
142            }
143
144            //-- それ以外のアクセスは無効とする
145        } else {
146            $this->arrErr["id"] = "無効なアクセスです。";
147            $this->tpl_mainpage = 'regist/error.tpl';
148            $this->tpl_css = "/css/layout/regist/error.css";
149            $this->tpl_title = 'エラー';
150
151        }
152
153        //---- ページ表示
154        $objView->assignobj($this);
155        $objView->display(SITE_FRAME);
156    }
157
158    /**
159     * デストラクタ.
160     *
161     * @return void
162     */
163    function destroy() {
164        parent::destroy();
165    }
166
167    //---- 登録
168    function lfRegistData($array) {
169        $objQuery = new SC_Query();
170        $objConn = new SC_DBConn();
171        $this->arrInfo;
172
173        do {
174            $secret = SC_Utils_Ex::sfGetUniqRandomId("r");
175        } while( ($result = $objConn->getOne("SELECT COUNT(*) FROM dtb_customer WHERE secret_key = ?", array($secret)) ) != 0);
176
177        $sql = "SELECT email FROM dtb_customer WHERE secret_key = ? AND status = 1";
178        $email = $objConn->getOne($sql, array($array["id"]));
179
180        $objConn->query("BEGIN");
181        $arrRegist["secret_key"] = $secret; // 本登録ID発行
182        $arrRegist["status"] = 2;
183        $arrRegist["update_date"] = "NOW()";
184
185        $objQuery = new SC_Query();
186        $where = "secret_key = ? AND status = 1";
187
188        $arrRet = $objQuery->select("point", "dtb_customer", $where, array($array["id"]));
189        // 会員登録時の加算ポイント(購入時会員登録の場合は、ポイント加算)
190        $arrRegist['point'] = $arrRet[0]['point'] + addslashes($arrInfo['welcome_point']);
191
192        $objQuery->update("dtb_customer", $arrRegist, $where, array($array["id"]));
193
194        /* 購入時の自動会員登録は行わないためDEL
195        // 購入時登録の場合、その回の購入を会員購入とみなす。
196        // 会員情報の読み込み
197        $where1 = "secret_key = ? AND status = 2";
198        $customer = $objQuery->select("*", "dtb_customer", $where1, array($secret));
199        // 初回購入情報の読み込み
200        $order_temp_id = $objQuery->get("dtb_order_temp", "order_temp_id");
201        // 購入情報の更新
202        if ($order_temp_id != null) {
203            $arrCustomer['customer_id'] = $customer[0]['customer_id'];
204            $where3 = "order_temp_id = ?";
205            $objQuery->update("dtb_order_temp", $arrCustomer, $where3, array($order_temp_id));
206            $objQuery->update("dtb_order", $arrCustomer, $where3, array($order_temp_id));
207        }
208        */
209
210        $sql = "SELECT mailmaga_flg FROM dtb_customer WHERE email = ?";
211        $result = $objConn->getOne($sql, array($email));
212
213        switch($result) {
214        // 仮HTML
215        case '4':
216            $arrRegistMail["mailmaga_flg"] = 1;
217            break;
218        // 仮TEXT
219        case '5':
220            $arrRegistMail["mailmaga_flg"] = 2;
221            break;
222        // 仮なし
223        case '6':
224            $arrRegistMail["mailmaga_flg"] = 3;
225            break;
226        default:
227            $arrRegistMail["mailmaga_flg"] = $result;
228            break;
229        }
230
231        $objQuery->update("dtb_customer", $arrRegistMail, "email = '" .addslashes($email). "' AND del_flg = 0");
232        $objConn->query("COMMIT");
233
234        return $secret;     // 本登録IDを返す
235    }
236
237    //---- 入力エラーチェック
238    function lfErrorCheck($array) {
239
240        $objConn = new SC_DbConn();
241        $objErr = new SC_CheckError($array);
242
243        $objErr->doFunc(array("仮登録ID", 'id'), array("EXIST_CHECK"));
244        if (! EregI("^[[:alnum:]]+$",$array["id"] )) {
245            $objErr->arrErr["id"] = "無効なURLです。メールに記載されている本会員登録用URLを再度ご確認ください。";
246        }
247        if (! $objErr->arrErr["id"]) {
248
249            $sql = "SELECT customer_id FROM dtb_customer WHERE secret_key = ? AND status = 1 AND del_flg = 0";
250            $result = $objConn->getOne($sql, array($array["id"]));
251
252            if (! is_numeric($result)) {
253                $objErr->arrErr["id"] .= "※ 既に会員登録が完了しているか、無効なURLです。<br>";
254                return $objErr->arrErr;
255
256            }
257        }
258
259        return $objErr->arrErr;
260    }
261
262    //---- 正会員登録完了メール送信
263    function lfSendRegistMail($registSecretKey) {
264        $objConn = new SC_DbConn();
265        global $CONF;
266
267        //-- 姓名を取得
268        $sql = "SELECT email, name01, name02 FROM dtb_customer WHERE secret_key = ?";
269        $result = $objConn->getAll($sql, array($registSecretKey));
270        $data = $result[0];
271
272        //-- メール送信
273        $objMailText = new SC_SiteView();
274        $objMailText->assign("CONF", $CONF);
275        $objMailText->assign("name01", $data["name01"]);
276        $objMailText->assign("name02", $data["name02"]);
277        $toCustomerMail = $objMailText->fetch("mail_templates/customer_regist_mail.tpl");
278        $subject = sfMakeSubject('会員登録が完了しました。');
279        $objMail = new SC_SendMail();
280
281        $objMail->setItem(
282                              ''                                // 宛先
283                            , $subject//"【" .$CONF["shop_name"]. "】".ENTRY_CUSTOMER_REGIST_SUBJECT      // サブジェクト
284                            , $toCustomerMail                   // 本文
285                            , $CONF["email03"]                  // 配送元アドレス
286                            , $CONF["shop_name"]                // 配送元 名前
287                            , $CONF["email03"]                  // reply_to
288                            , $CONF["email04"]                  // return_path
289                            , $CONF["email04"]                  //  Errors_to
290                        );
291        // 宛先の設定
292        $name = $data["name01"] . $data["name02"] ." 様";
293        $objMail->setTo($data["email"], $name);
294        $objMail->sendMail();
295    }
296}
297?>
Note: See TracBrowser for help on using the repository browser.