source: branches/feature-module-update/data/class/pages/shopping/LC_Page_Shopping_Deliv.php @ 15622

Revision 15622, 13.8 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:LC_Page_Shopping_Deliv.php 15532 2007-08-31 14:39:46Z nanasess $
17 */
18class LC_Page_Shopping_Deliv extends LC_Page {
19
20    // {{{ properties
21
22    /** フォームパラメータの配列 */
23    var $objFormParam;
24
25    /** ログインフォームパラメータ配列 */
26    var $objLoginFormParam;
27
28    // }}}
29    // {{{ functions
30
31    /**
32     * Page を初期化する.
33     *
34     * @return void
35     */
36    function init() {
37        parent::init();
38        $this->tpl_mainpage = 'shopping/deliv.tpl';
39        $this->tpl_css = URL_DIR.'css/layout/shopping/index.css';
40        $masterData = new SC_DB_MasterData();
41        $this->arrPref = $masterData->getMasterData("mtb_pref", array("pref_id", "pref_name", "rank"));
42        $this->tpl_title = "お届け先指定";
43
44        $this->allowClientCache();
45    }
46
47    /**
48     * Page のプロセス.
49     *
50     * @return void
51     */
52    function process() {
53        $objView = new SC_SiteView();
54        $objSiteSess = new SC_SiteSession();
55        $objCartSess = new SC_CartSession();
56        $objCampaignSess = new SC_CampaignSession();
57        $objCustomer = new SC_Customer();
58        // クッキー管理クラス
59        $objCookie = new SC_Cookie(COOKIE_EXPIRE);
60        // パラメータ管理クラス
61        $this->objFormParam = new SC_FormParam();
62        // パラメータ情報の初期化
63        $this->lfInitParam();
64        // POST値の取得
65        $this->objFormParam->setParam($_POST);
66
67        $this->objLoginFormParam = new SC_FormParam();  // ログインフォーム用
68        $this->lfInitLoginFormParam();                      // 初期設定
69        $this->objLoginFormParam->setParam($_POST);     // POST値の取得
70
71        // ユーザユニークIDの取得と購入状態の正当性をチェック
72        $uniqid = SC_Utils_Ex::sfCheckNormalAccess($objSiteSess, $objCartSess);
73        $this->tpl_uniqid = $uniqid;
74
75        if (!isset($_POST['mode'])) $_POST['mode'] = "";
76
77        // ログインチェック
78        if($_POST['mode'] != 'login' && !$objCustomer->isLoginSuccess()) {
79            // 不正アクセスとみなす
80            SC_Utils_Ex::sfDispSiteError(CUSTOMER_ERROR);
81        }
82
83        switch($_POST['mode']) {
84        case 'login':
85            $this->objLoginFormParam->toLower('login_email');
86            $this->arrErr = $this->objLoginFormParam->checkError();
87            $arrForm =  $this->objLoginFormParam->getHashArray();
88            // クッキー保存判定
89            if($arrForm['login_memory'] == "1" && $arrForm['login_email'] != "") {
90                $objCookie->setCookie('login_email', $_POST['login_email']);
91            } else {
92                $objCookie->setCookie('login_email', '');
93            }
94
95            if(count($this->arrErr) == 0) {
96                // ログイン判定
97                if(!$objCustomer->getCustomerDataFromEmailPass($arrForm['login_pass'], $arrForm['login_email'])) {
98                    // 仮登録の判定
99                    $objQuery = new SC_Query;
100                    $where = "email = ? AND status = 1 AND del_flg = 0";
101                    $ret = $objQuery->count("dtb_customer", $where, array($arrForm['login_email']));
102
103                    if($ret > 0) {
104                        SC_Utils_Ex::sfDispSiteError(TEMP_LOGIN_ERROR);
105                    } else {
106                        SC_Utils_Ex::sfDispSiteError(SITE_LOGIN_ERROR);
107                    }
108                }
109            } else {
110                // ログインページに戻る
111                $this->sendRedirect(URL_SHOP_TOP);
112                exit;
113            }
114            break;
115        // 削除
116        case 'delete':
117            if (sfIsInt($_POST['other_deliv_id'])) {
118                $objQuery = new SC_Query();
119                $where = "other_deliv_id = ?";
120                $arrRet = $objQuery->delete("dtb_other_deliv", $where, array($_POST['other_deliv_id']));
121                $this->objFormParam->setValue('select_addr_id', '');
122            }
123            break;
124        // 会員登録住所に送る
125        case 'customer_addr':
126            // 会員登録住所がチェックされている場合
127            if ($_POST['deliv_check'] == '-1') {
128                // 会員情報の住所を受注一時テーブルに書き込む
129                $this->lfRegistDelivData($uniqid, $objCustomer);
130                // 正常に登録されたことを記録しておく
131                $objSiteSess->setRegistFlag();
132                // お支払い方法選択ページへ移動
133                $this->sendRedirect($this->getLocation(URL_SHOP_PAYMENT, array(), true));
134                exit;
135            // 別のお届け先がチェックされている場合
136            } elseif($_POST['deliv_check'] >= 1) {
137                if (sfIsInt($_POST['deliv_check'])) {
138                    // 登録済みの別のお届け先を受注一時テーブルに書き込む
139                    lfRegistOtherDelivData($uniqid, $objCustomer, $_POST['deliv_check']);
140                    // 正常に登録されたことを記録しておく
141                    $objSiteSess->setRegistFlag();
142                    // お支払い方法選択ページへ移動
143                    $this->sendRedirect($this->getLocation(URL_SHOP_PAYMENT, array(), true));
144                    exit;
145                }
146            }else{
147                // エラーを返す
148                $arrErr['deli'] = '※ お届け先を選択してください。';
149            }
150            break;
151        // 前のページに戻る
152        case 'return':
153            // 確認ページへ移動
154            $this->sendRedirect($this->getLocation(URL_CART_TOP, array(), true));
155            exit;
156            break;
157        default:
158            $objQuery = new SC_Query();
159            $where = "order_temp_id = ?";
160            $arrRet = $objQuery->select("*", "dtb_order_temp", $where, array($uniqid));
161            if (empty($arrRet)) $arrRet = array("");
162            $this->objFormParam->setParam($arrRet[0]);
163            break;
164        }
165
166        /** 表示処理 **/
167
168        // 会員登録住所の取得
169        $col = "name01, name02, pref, addr01, addr02";
170        $where = "customer_id = ?";
171        $objQuery = new SC_Query();
172        $arrCustomerAddr = $objQuery->select($col, "dtb_customer", $where, array($_SESSION['customer']['customer_id']));
173        // 別のお届け先住所の取得
174        $col = "other_deliv_id, name01, name02, pref, addr01, addr02";
175        $objQuery->setorder("other_deliv_id DESC");
176        $objOtherAddr = $objQuery->select($col, "dtb_other_deliv", $where, array($_SESSION['customer']['customer_id']));
177        $this->arrAddr = $arrCustomerAddr;
178        $this->tpl_addrmax = count($objOtherAddr);
179        $cnt = 1;
180        foreach($objOtherAddr as $val) {
181            $this->arrAddr[$cnt] = $val;
182            $cnt++;
183        }
184
185        // 入力値の取得
186        if (!isset($arrErr)) $arrErr = array();
187        $this->arrForm = $this->objFormParam->getFormParamList();
188        $this->arrErr = $arrErr;
189
190        $objView->assignobj($this);
191        // フレームを選択(キャンペーンページから遷移なら変更)
192        $objCampaignSess->pageView($objView);
193    }
194
195    /**
196     * デストラクタ.
197     *
198     * @return void
199     */
200    function destroy() {
201        parent::destroy();
202    }
203
204    /* パラメータ情報の初期化 */
205    function lfInitParam() {
206        $this->objFormParam->addParam("お名前1", "deliv_name01", STEXT_LEN, "KVa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
207        $this->objFormParam->addParam("お名前2", "deliv_name02", STEXT_LEN, "KVa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
208        $this->objFormParam->addParam("フリガナ1", "deliv_kana01", STEXT_LEN, "KVCa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
209        $this->objFormParam->addParam("フリガナ2", "deliv_kana02", STEXT_LEN, "KVCa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
210        $this->objFormParam->addParam("郵便番号1", "deliv_zip01", ZIP01_LEN, "n", array("EXIST_CHECK", "NUM_CHECK", "NUM_COUNT_CHECK"));
211        $this->objFormParam->addParam("郵便番号2", "deliv_zip02", ZIP02_LEN, "n", array("EXIST_CHECK", "NUM_CHECK", "NUM_COUNT_CHECK"));
212        $this->objFormParam->addParam("都道府県", "deliv_pref", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"));
213        $this->objFormParam->addParam("住所1", "deliv_addr01", STEXT_LEN, "KVa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
214        $this->objFormParam->addParam("住所2", "deliv_addr02", STEXT_LEN, "KVa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
215        $this->objFormParam->addParam("電話番号1", "deliv_tel01", TEL_ITEM_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK" ,"NUM_CHECK"));
216        $this->objFormParam->addParam("電話番号2", "deliv_tel02", TEL_ITEM_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK" ,"NUM_CHECK"));
217        $this->objFormParam->addParam("電話番号3", "deliv_tel03", TEL_ITEM_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK" ,"NUM_CHECK"));
218        $this->objFormParam->addParam("", "deliv_check");
219    }
220
221    function lfInitLoginFormParam() {
222        $this->objLoginFormParam->addParam("記憶する", "login_memory", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
223        $this->objLoginFormParam->addParam("メールアドレス", "login_email", STEXT_LEN, "KVa", array("EXIST_CHECK", "MAX_LENGTH_CHECK"));
224        $this->objLoginFormParam->addParam("パスワード", "login_pass", STEXT_LEN, "KVa", array("EXIST_CHECK", "MAX_LENGTH_CHECK"));
225    }
226
227    /* DBへデータの登録 */
228    function lfRegistNewAddrData($uniqid, $objCustomer) {
229        $arrRet = $this->objFormParam->getHashArray();
230        $sqlval = $this->objFormParam->getDbArray();
231        // 登録データの作成
232        $sqlval['deliv_check'] = '1';
233        $sqlval['order_temp_id'] = $uniqid;
234        $sqlval['update_date'] = 'Now()';
235        $sqlval['customer_id'] = $objCustomer->getValue('customer_id');
236        $sqlval['order_birth'] = $objCustomer->getValue('birth');
237
238        $objDb = new SC_Helper_DB_Ex();
239        $objDb->sfRegistTempOrder($uniqid, $sqlval);
240    }
241
242    /* 会員情報の住所を一時受注テーブルへ */
243    function lfRegistDelivData($uniqid, $objCustomer) {
244        // 登録データの作成
245        $sqlval['order_temp_id'] = $uniqid;
246        $sqlval['update_date'] = 'Now()';
247        $sqlval['customer_id'] = $objCustomer->getValue('customer_id');
248        $sqlval['deliv_check'] = '-1';
249        $sqlval['deliv_name01'] = $objCustomer->getValue('name01');
250        $sqlval['deliv_name02'] = $objCustomer->getValue('name02');
251        $sqlval['deliv_kana01'] = $objCustomer->getValue('kana01');
252        $sqlval['deliv_kana02'] = $objCustomer->getValue('kana02');
253        $sqlval['deliv_zip01'] = $objCustomer->getValue('zip01');
254        $sqlval['deliv_zip02'] = $objCustomer->getValue('zip02');
255        $sqlval['deliv_pref'] = $objCustomer->getValue('pref');
256        $sqlval['deliv_addr01'] = $objCustomer->getValue('addr01');
257        $sqlval['deliv_addr02'] = $objCustomer->getValue('addr02');
258        $sqlval['deliv_tel01'] = $objCustomer->getValue('tel01');
259        $sqlval['deliv_tel02'] = $objCustomer->getValue('tel02');
260        $sqlval['deliv_tel03'] = $objCustomer->getValue('tel03');
261
262        $sqlval['deliv_fax01'] = $objCustomer->getValue('fax01');
263        $sqlval['deliv_fax02'] = $objCustomer->getValue('fax02');
264        $sqlval['deliv_fax03'] = $objCustomer->getValue('fax03');
265
266        $objDb = new SC_Helper_DB_Ex();
267        $objDb->sfRegistTempOrder($uniqid, $sqlval);
268    }
269
270    /* 別のお届け先住所を一時受注テーブルへ */
271    function lfRegistOtherDelivData($uniqid, $objCustomer, $other_deliv_id) {
272        // 登録データの作成
273        $sqlval['order_temp_id'] = $uniqid;
274        $sqlval['update_date'] = 'Now()';
275        $sqlval['customer_id'] = $objCustomer->getValue('customer_id');
276        $sqlval['order_birth'] = $objCustomer->getValue('birth');
277
278        $objQuery = new SC_Query();
279        $where = "other_deliv_id = ?";
280        $arrRet = $objQuery->select("*", "dtb_other_deliv", $where, array($other_deliv_id));
281
282        $sqlval['deliv_check'] = $other_deliv_id;
283        $sqlval['deliv_name01'] = $arrRet[0]['name01'];
284        $sqlval['deliv_name02'] = $arrRet[0]['name02'];
285        $sqlval['deliv_kana01'] = $arrRet[0]['kana01'];
286        $sqlval['deliv_kana02'] = $arrRet[0]['kana02'];
287        $sqlval['deliv_zip01'] = $arrRet[0]['zip01'];
288        $sqlval['deliv_zip02'] = $arrRet[0]['zip02'];
289        $sqlval['deliv_pref'] = $arrRet[0]['pref'];
290        $sqlval['deliv_addr01'] = $arrRet[0]['addr01'];
291        $sqlval['deliv_addr02'] = $arrRet[0]['addr02'];
292        $sqlval['deliv_tel01'] = $arrRet[0]['tel01'];
293        $sqlval['deliv_tel02'] = $arrRet[0]['tel02'];
294        $sqlval['deliv_tel03'] = $arrRet[0]['tel03'];
295        $objDb = new SC_Helper_DB_Ex();
296        $objDb->sfRegistTempOrder($uniqid, $sqlval);
297    }
298
299    /* 入力内容のチェック */
300    function lfCheckError() {
301        // 入力データを渡す。
302        $arrRet =  $this->objFormParam->getHashArray();
303        $objErr = new SC_CheckError($arrRet);
304        $objErr->arrErr = $this->objFormParam->checkError();
305        // 複数項目チェック
306        if ($_POST['mode'] == 'login'){
307            $objErr->doFunc(array("メールアドレス", "login_email", STEXT_LEN), array("EXIST_CHECK"));
308            $objErr->doFunc(array("パスワード", "login_pass", STEXT_LEN), array("EXIST_CHECK"));
309        }
310        $objErr->doFunc(array("TEL", "deliv_tel01", "deliv_tel02", "deliv_tel03", TEL_ITEM_LEN), array("TEL_CHECK"));
311        return $objErr->arrErr;
312    }
313}
314?>
Note: See TracBrowser for help on using the repository browser.