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

Revision 15532, 13.6 KB checked in by nanasess, 17 years ago (diff)

svn:mime-type 修正

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