source: branches/feature-module-update/data/class/pages/magazine/LC_Page_Magazine_Confirm.php @ 16164

Revision 16164, 8.4 KB checked in by nanasess, 15 years ago (diff)

FIXME

  • 使われてない機能だが, とりあえずモバイル対応
  • 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 * FIXME dtb_customer_mail なんて無いよ...
15 *
16 * @package Page
17 * @author LOCKON CO.,LTD.
18 * @version $Id$
19 */
20class LC_Page_Magazine_Confirm extends LC_Page {
21
22    // }}}
23    // {{{ functions
24
25    /**
26     * Page を初期化する.
27     *
28     * @return void
29     */
30    function init() {
31        parent::init();
32    }
33
34    /**
35     * Page のプロセス.
36     *
37     * @return void
38     */
39    function process() {
40    }
41
42    /**
43     * モバイルページを初期化する.
44     *
45     * @return void
46     */
47    function mobileInit() {
48        $this->tpl_mainpage = 'magazine/confirm.tpl';       // メインテンプレート
49        $this->tpl_title .= 'メルマガ確認';
50    }
51
52    /**
53     * Page のプロセス(モバイル).
54     *
55     * @return void
56     */
57    function mobileProcess() {
58        $objConn = new SC_DbConn();
59        $this->arrForm = $_POST;
60
61        // 登録
62        if (isset($_REQUEST['btnRegist'])) {
63            $this->arrErr = $this->lfMailErrorCheck($this->arrForm, "regist", $objConn);
64
65            // エラーがなければ
66            if (count($this->arrErr) == 0) {
67                // 確認
68                $this->arrForm['kind'] = 'メルマガ登録';
69                $this->arrForm['type'] = 'regist';
70                $this->arrForm['mail'] = $this->arrForm['regist'];
71            } else {
72                $this->tpl_mainpage = 'magazine/index.tpl';
73                $this->tpl_title = 'メルマガ登録・解除';
74            }
75            // 解除
76        } elseif (isset($_REQUEST['btnCancel'])) {
77            $this->arrErr = $this->lfMailErrorCheck($this->arrForm, "cancel", $objConn);
78
79            // エラーがなければ
80            if (count($this->arrErr) == 0) {
81                // 確認
82                $this->arrForm['kind'] = 'メルマガ解除';
83                $this->arrForm['type'] = 'cancel';
84                $this->arrForm['mail'] = $this->arrForm['cancel'];
85            } else {
86                $this->tpl_mainpage = 'magazine/index.tpl';
87                $this->tpl_title = 'メルマガ登録・解除';
88            }
89            // 完了
90        } elseif ($_REQUEST['mode'] == 'regist' or $_REQUEST['mode'] == 'cancel') {
91            $objMailText = new SC_MobileView();
92            $helperMail = new SC_Helper_Mail_Ex();
93            $objQuery = new SC_Query();
94            // 登録
95            if ($_REQUEST['mode'] == 'regist') {
96                $uniqId = $this->lfRegistData($_POST["email"], $objConn);
97
98                $subject = $helperMail->fMakesubject($objQuery, $objMailText, $this, 'メルマガ登録のご確認');
99                // 解除
100            } elseif ($_REQUEST['mode'] == 'cancel') {
101                $uniqId = $this->lfGetSecretKey($_POST["email"], $objConn);
102                $subject = $helperMail->sfMakesubject($objQuery, $objMailText, $this,'メルマガ解除のご確認');
103            }
104            $objDb = new SC_Helper_DB_Ex();
105            $CONF = $objDb->sf_getBasisData();
106            $this->CONF = $CONF;
107            $this->tpl_url = SC_Utils_Ex::gfAddSessionId(MOBILE_SSL_URL . "magazine/" . $_REQUEST['mode'] . ".php?id=" . $uniqId);
108
109
110            $objMailText->assignobj($this);
111            $toCustomerMail = $objMailText->fetch("mail_templates/mailmagazine_" . $_REQUEST['mode'] . ".tpl");
112            $objMail = new GC_SendMail();
113            $objMail->setItem(
114                              ''                                    // 宛先
115                              , $subject                            // サブジェクト
116                              , $toCustomerMail                 // 本文
117                              , $CONF["email03"]                    // 配送元アドレス
118                              , $CONF["shop_name"]              // 配送元 名前
119                              , $CONF["email03"]                    // reply_to
120                              , $CONF["email04"]                    // return_path
121                              , $CONF["email04"]                    //  Errors_to
122                              , $CONF["email01"]                    //  Bcc
123                              );
124            // 宛先の設定
125            $objMail->setTo($_POST["email"], $_POST["email"]);
126            $objMail->sendMail();
127
128            // 完了ページに移動させる。
129            $this->sendRedirect($this->getLocation("./complete.php",
130                                array(session_name() => session_id())));
131            exit;
132        } else {
133            SC_Utils_Ex::sfDispSiteError(CUSTOMER_ERROR, "", false, "", true);
134        }
135
136        $objView = new SC_MobileView();
137        // レイアウトデザインを取得
138        $objLayout = new SC_Helper_PageLayout_Ex();
139        $objLayout->sfGetPageLayout($this, false, DEF_LAYOUT);
140        $objView->assignobj($this);
141        $objView->display(SITE_FRAME);
142    }
143
144    /**
145     * デストラクタ.
146     *
147     * @return void
148     */
149    function destroy() {
150        parent::destroy();
151    }
152
153    //---- 入力エラーチェック
154    function lfMailErrorCheck($array, $dataName, &$objConn) {
155        $objErr = new SC_CheckError($array);
156        $objErr->doFunc(
157                        array('メールアドレス', $dataName, MTEXT_LEN) ,
158                        array("NO_SPTAB", "EXIST_CHECK", "EMAIL_CHECK",
159                              "SPTAB_CHECK" ,"EMAIL_CHAR_CHECK", "MAX_LENGTH_CHECK", "MOBILE_EMAIL_CHECK"));
160
161        // 入力エラーがなければ
162        if (count($objErr->arrErr) == 0) {
163            // メルマガの登録有無
164            $flg = $this->lfIsRegistData($array[$dataName], $objConn);
165
166            // 登録の時
167            if ($dataName == 'regist' and $flg == true) {
168                $objErr->arrErr[$dataName] = "既に登録されています。<br>";
169                // 解除の時
170            } elseif ($dataName == 'cancel' and $flg == false) {
171                $objErr->arrErr[$dataName] = "メルマガ登録がされていません。<br>";
172            }
173        }
174
175        return $objErr->arrErr;
176    }
177
178
179    //---- メルマガ登録
180    function lfRegistData ($email, &$objConn) {
181
182        $count = 1;
183        while ($count != 0) {
184            $uniqid = SC_Utils_Ex::sfGetUniqRandomId("t");
185            $count = $objConn->getOne("SELECT COUNT(*) FROM dtb_customer_mail WHERE secret_key = ?", array($uniqid));
186        }
187
188        $arrRegist["email"] = $email;           // メールアドレス
189        $arrRegist["mail_flag"] = 5;            // 登録状態
190        $arrRegist["secret_key"] = $uniqid;     // ID発行
191        $arrRegist["create_date"] = "now()";    // 作成日
192        $arrRegist["update_date"] = "now()";    // 更新日
193
194        //-- 仮登録実行
195        $objConn->query("BEGIN");
196
197        $objQuery = new SC_Query();
198
199        //-- 既にメルマガ登録しているかの判定
200        $sql = "SELECT count(*) FROM dtb_customer_mail WHERE email = ?";
201        $mailResult = $objConn->getOne($sql, array($arrRegist["email"]));
202
203        if ($mailResult == 1) {
204            $objQuery->update("dtb_customer_mail", $arrRegist, "email = " . SC_Utils_Ex::sfQuoteSmart($arrRegist["email"]));
205        } else {
206            $objQuery->insert("dtb_customer_mail", $arrRegist);
207        }
208        $objConn->query("COMMIT");
209
210        return $uniqid;
211    }
212
213    // 登録されているキーの取得
214    function lfGetSecretKey ($email, &$objConn) {
215        $sql = "SELECT secret_key FROM dtb_customer_mail WHERE email = ?";
216        $uniqid = $objConn->getOne($sql, array($email));
217
218        if ($uniqid == '') {
219            $count = 1;
220            while ($count != 0) {
221                $uniqid = SC_Utils_Ex::sfGetUniqRandomId("t");
222                $count = $objConn->getOne("SELECT COUNT(*) FROM dtb_customer_mail WHERE secret_key = ?", array($uniqid));
223            }
224
225            $objQuery = new SC_Query();
226            $objQuery->update("dtb_customer_mail", array('secret_key' => $uniqid), "email = " . SC_Utils_Ex::sfQuoteSmart($email));
227        }
228
229        return $uniqid;
230    }
231
232    // 既に登録されているかどうか
233    function lfIsRegistData ($email, &$objConn) {
234        $sql = "SELECT email, mailmaga_flg FROM dtb_customer_mail WHERE email = ?";
235        $mailResult = $objConn->getRow($sql, array($email));
236
237        // NULLも購読とみなす
238        if (count($mailResult) == 0 or ($mailResult[1] != null and $mailResult[1] != 2 )) {
239            return false;
240        } else {
241            return true;
242        }
243    }
244}
245?>
Note: See TracBrowser for help on using the repository browser.