source: branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_DelivAddr.php @ 18853

Revision 18853, 14.1 KB checked in by Seasoft, 13 years ago (diff)

#626(表記の統一性の向上)

  • 括弧とスペースの使い方 (途中)
  • 名前の補助表記 (途中)
  • 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; charset=UTF-8
Line 
1<?php
2/*
3 * This file is part of EC-CUBE
4 *
5 * Copyright(c) 2000-2010 LOCKON CO.,LTD. All Rights Reserved.
6 *
7 * http://www.lockon.co.jp/
8 *
9 * This program is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public License
11 * as published by the Free Software Foundation; either version 2
12 * of the License, or (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
21 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
22 */
23
24// {{{ requires
25require_once(CLASS_PATH . "pages/LC_Page.php");
26
27/**
28 * お届け先追加のページクラス
29 *
30 * @package Page
31 * @author LOCKON CO.,LTD.
32 * @version $Id$
33 */
34class LC_Page_Shopping_DelivAddr extends LC_Page {
35
36    // }}}
37    // {{{ functions
38
39    /**
40     * Page を初期化する.
41     *
42     * @return void
43     */
44    function init() {
45        parent::init();
46    }
47
48    /**
49     * Page のプロセス.
50     *
51     * @return void
52     */
53    function process() {
54    }
55
56    /**
57     * モバイルページを初期化する.
58     *
59     * @return void
60     */
61    function mobileInit() {
62        $this->tpl_mainpage = 'shopping/deliv_addr.tpl';
63        $this->tpl_title = "新しいお届け先の追加";
64        $masterData = new SC_DB_MasterData_Ex();
65        $this->arrPref = $masterData->getMasterData("mtb_pref", array("pref_id", "pref_name", "rank"));
66    }
67
68    /**
69     * Page のプロセス(モバイル).
70     *
71     * @return void
72     */
73    function mobileProcess() {
74        $objView = new SC_MobileView(false);
75        $objQuery = new SC_Query();
76        $objCustomer = new SC_Customer();
77        $objSiteSess = new SC_SiteSession();
78        $objCartSess = new SC_CartSession();
79
80        //ログイン判定
81        if (!$objCustomer->isLoginSuccess(true)){
82            SC_Utils_Ex::sfDispSiteError(CUSTOMER_ERROR);
83        }
84
85        $this->arrForm = $_POST;
86
87        //-- データ設定
88        foreach($_POST as $key => $val) {
89            if ($key != "mode" && $key != "return" && $key != "submit" && $key != session_name()) {
90                $this->list_data[ $key ] = $val;
91            }
92        }
93        // ユーザユニークIDの取得と購入状態の正当性をチェック
94        $uniqid = SC_Utils_Ex::sfCheckNormalAccess($objSiteSess, $objCartSess);
95
96        //別のお届け先DB登録用カラム配列
97        $arrRegistColumn = array(
98                                 array(  "column" => "name01",      "convert" => "aKV" ),
99                                 array(  "column" => "name02",      "convert" => "aKV" ),
100                                 array(  "column" => "kana01",      "convert" => "CKV" ),
101                                 array(  "column" => "kana02",      "convert" => "CKV" ),
102                                 array(  "column" => "zip01",       "convert" => "n" ),
103                                 array(  "column" => "zip02",       "convert" => "n" ),
104                                 array(  "column" => "pref",        "convert" => "n" ),
105                                 array(  "column" => "addr01",      "convert" => "aKV" ),
106                                 array(  "column" => "addr02",      "convert" => "aKV" ),
107                                 array(  "column" => "tel01",       "convert" => "n" ),
108                                 array(  "column" => "tel02",       "convert" => "n" ),
109                                 array(  "column" => "tel03",       "convert" => "n" ),
110                                 );
111
112        // 戻るボタン用処理
113        if (!empty($_POST["return"])) {
114            switch ($_POST["mode"]) {
115            case 'complete':
116                $_POST["mode"] = "set2";
117                break;
118            case 'set2':
119                $_POST["mode"] = "set1";
120                break;
121            default:
122                $this->sendRedirect($this->getLocation("./deliv.php"), true);
123                exit;
124            }
125        }
126
127        switch ($_POST['mode']){
128        case 'set1':
129            $this->arrErr = $this->lfErrorCheck1($this->arrForm);
130            if (count($this->arrErr) == 0 && empty($_POST["return"])) {
131                $this->tpl_mainpage = 'shopping/set1.tpl';
132
133                $checkVal = array("pref", "addr01", "addr02", "addr03", "tel01", "tel02", "tel03");
134                foreach($checkVal as $key) {
135                    unset($this->list_data[$key]);
136                }
137
138                // 郵便番号から住所の取得
139                if (@$this->arrForm['pref'] == "" && @$this->arrForm['addr01'] == "" && @$this->arrForm['addr02'] == "") {
140                    $address = SC_Utils_Ex::sfGetAddress($_REQUEST['zip01'].$_REQUEST['zip02']);
141                    $this->arrForm['pref'] = @$address[0]['state'];
142                    $this->arrForm['addr01'] = @$address[0]['city'] . @$address[0]['town'];
143                }
144            } else {
145                $checkVal = array("name01", "name02", "kana01", "kana02", "zip01", "zip02");
146                foreach($checkVal as $key) {
147                    unset($this->list_data[$key]);
148                }
149            }
150            break;
151        case 'set2':
152            $this->arrErr = $this->lfErrorCheck2($this->arrForm);
153            if (count($this->arrErr) == 0 && empty($_POST["return"])) {
154                $this->tpl_mainpage = 'shopping/set2.tpl';
155            } else {
156                $this->tpl_mainpage = 'shopping/set1.tpl';
157
158                $checkVal = array("pref", "addr01", "addr02", "addr03", "tel01", "tel02", "tel03");
159                foreach($checkVal as $key) {
160                    unset($this->list_data[$key]);
161                }
162            }
163            break;
164        case 'complete':
165            $this->arrErr = $this->lfErrorCheck($this->arrForm);
166            if (count($this->arrErr) == 0) {
167                // 登録
168                $other_deliv_id = $this->lfRegistData($_POST,$arrRegistColumn, $objCustomer);
169
170                // 登録済みの別のお届け先を受注一時テーブルに書き込む
171                $this->lfRegistOtherDelivData($uniqid, $objCustomer, $other_deliv_id);
172
173                // 正常に登録されたことを記録しておく
174                $objSiteSess->setRegistFlag();
175                // お支払い方法選択ページへ移動
176                $this->sendRedirect($this->getLocation(MOBILE_URL_SHOP_PAYMENT), true);
177                exit;
178            } else {
179                SC_Utils_Ex::sfDispSiteError(CUSTOMER_ERROR);
180            }
181            break;
182        default:
183            $deliv_count = $objQuery->count("dtb_other_deliv", "customer_id=?", array($objCustomer->getValue('customer_id')));
184            if ($deliv_count >= DELIV_ADDR_MAX){
185                SC_Utils_Ex::sfDispSiteError(FREE_ERROR_MSG, "", false, "最大登録件数を超えています。");
186            }
187        }
188
189        $objView->assignobj($this);
190        $objView->display(SITE_FRAME);
191    }
192
193    /* エラーチェック */
194    function lfErrorCheck() {
195        $objErr = new SC_CheckError();
196
197        $objErr->doFunc(array("お名前(姓)", 'name01', STEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK"));
198        $objErr->doFunc(array("お名前(名)", 'name02', STEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK", "MAX_LENGTH_CHECK"));
199        $objErr->doFunc(array("お名前(フリガナ・姓)", 'kana01', STEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK", "MAX_LENGTH_CHECK", "KANA_CHECK"));
200        $objErr->doFunc(array("お名前(フリガナ・名)", 'kana02', STEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK", "MAX_LENGTH_CHECK", "KANA_CHECK"));
201        $objErr->doFunc(array("郵便番号1", "zip01", ZIP01_LEN ) ,array("EXIST_CHECK", "NUM_CHECK", "NUM_COUNT_CHECK"));
202        $objErr->doFunc(array("郵便番号2", "zip02", ZIP02_LEN ) ,array("EXIST_CHECK", "NUM_CHECK", "NUM_COUNT_CHECK"));
203        $objErr->doFunc(array("郵便番号", "zip01", "zip02"), array("ALL_EXIST_CHECK"));
204        $objErr->doFunc(array("都道府県", 'pref'), array("SELECT_CHECK","NUM_CHECK"));
205        $objErr->doFunc(array("市区町村", "addr01", MTEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK"));
206        $objErr->doFunc(array("番地", "addr02", MTEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK"));
207        $objErr->doFunc(array("電話番号1", 'tel01'), array("EXIST_CHECK","NUM_CHECK"));
208        $objErr->doFunc(array("電話番号2", 'tel02'), array("EXIST_CHECK","NUM_CHECK"));
209        $objErr->doFunc(array("電話番号3", 'tel03'), array("EXIST_CHECK","NUM_CHECK"));
210        $objErr->doFunc(array("電話番号", "tel01", "tel02", "tel03") ,array("TEL_CHECK"));
211        return $objErr->arrErr;
212
213    }
214
215    /* エラーチェック */
216    function lfErrorCheck1() {
217        $objErr = new SC_CheckError();
218
219        $objErr->doFunc(array("お名前(姓)", 'name01', STEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK"));
220        $objErr->doFunc(array("お名前(名)", 'name02', STEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK", "MAX_LENGTH_CHECK"));
221        $objErr->doFunc(array("お名前(フリガナ・姓)", 'kana01', STEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK", "MAX_LENGTH_CHECK", "KANA_CHECK"));
222        $objErr->doFunc(array("お名前(フリガナ・名)", 'kana02', STEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK", "MAX_LENGTH_CHECK", "KANA_CHECK"));
223        $objErr->doFunc(array("郵便番号1", "zip01", ZIP01_LEN ) ,array("EXIST_CHECK", "NUM_CHECK", "NUM_COUNT_CHECK"));
224        $objErr->doFunc(array("郵便番号2", "zip02", ZIP02_LEN ) ,array("EXIST_CHECK", "NUM_CHECK", "NUM_COUNT_CHECK"));
225        $objErr->doFunc(array("郵便番号", "zip01", "zip02"), array("ALL_EXIST_CHECK"));
226        return $objErr->arrErr;
227
228    }
229
230    /* エラーチェック */
231    function lfErrorCheck2() {
232        $objErr = new SC_CheckError();
233
234        $objErr->doFunc(array("都道府県", 'pref'), array("SELECT_CHECK","NUM_CHECK"));
235        $objErr->doFunc(array("市区町村", "addr01", MTEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK"));
236        $objErr->doFunc(array("番地", "addr02", MTEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK"));
237        $objErr->doFunc(array("電話番号1", 'tel01'), array("EXIST_CHECK","NUM_CHECK"));
238        $objErr->doFunc(array("電話番号2", 'tel02'), array("EXIST_CHECK","NUM_CHECK"));
239        $objErr->doFunc(array("電話番号3", 'tel03'), array("EXIST_CHECK","NUM_CHECK"));
240        $objErr->doFunc(array("電話番号", "tel01", "tel02", "tel03") ,array("TEL_CHECK"));
241        return $objErr->arrErr;
242
243    }
244
245
246
247    /* 登録実行 */
248    function lfRegistData($array, $arrRegistColumn, &$objCustomer) {
249
250        $objQuery = new SC_Query();
251        foreach ($arrRegistColumn as $data) {
252            if (strlen($array[ $data["column"] ]) > 0) {
253                $arrRegist[ $data["column"] ] = $array[ $data["column"] ];
254            }
255        }
256
257        $arrRegist['customer_id'] = $objCustomer->getvalue('customer_id');
258
259        //-- 編集登録実行
260        $objQuery->begin();
261        if ($array['other_deliv_id'] != ""){
262            $objQuery->update("dtb_other_deliv", $arrRegist, "other_deliv_id="  . SC_Utils_Ex::sfQuoteSmart($array["other_deliv_id"]));
263        }else{
264            $arrRegist['other_deliv_id'] = $objQuery->nextVal('dtb_other_deliv_other_deliv_id');
265            $objQuery->insert("dtb_other_deliv", $arrRegist);
266            $array['other_deliv_id'] = $arrRegist['other_deliv_id'];
267        }
268
269        $objQuery->commit();
270
271        return $array['other_deliv_id'];
272    }
273
274    //---- 取得文字列の変換
275    function lfConvertParam($array, $arrRegistColumn) {
276        /*
277         *  文字列の変換
278         *  K :  「半角(ハンカク)片仮名」を「全角片仮名」に変換
279         *  C :  「全角ひら仮名」を「全角かた仮名」に変換
280         *  V :  濁点付きの文字を一文字に変換。"K","H"と共に使用します
281         *  n :  「全角」数字を「半角(ハンカク)」に変換
282         *  a :  全角英数字を半角英数字に変換する
283         */
284        // カラム名とコンバート情報
285        foreach ($arrRegistColumn as $data) {
286            $arrConvList[ $data["column"] ] = $data["convert"];
287        }
288
289        // 文字変換
290        foreach ($arrConvList as $key => $val) {
291            // POSTされてきた値のみ変換する。
292            if(strlen(($array[$key])) > 0) {
293                $array[$key] = mb_convert_kana($array[$key] ,$val);
294            }
295        }
296        return $array;
297    }
298
299    /* 別のお届け先住所を一時受注テーブルへ */
300    function lfRegistOtherDelivData($uniqid, $objCustomer, $other_deliv_id) {
301        // 登録データの作成
302        $sqlval['order_temp_id'] = $uniqid;
303        $sqlval['update_date'] = 'Now()';
304        $sqlval['customer_id'] = $objCustomer->getValue('customer_id');
305        $sqlval['order_birth'] = $objCustomer->getValue('birth');
306
307        $objQuery = new SC_Query();
308        $where = "other_deliv_id = ?";
309        $arrRet = $objQuery->select("*", "dtb_other_deliv", $where, array($other_deliv_id));
310
311        $sqlval['deliv_check'] = '1';
312        $sqlval['deliv_name01'] = $arrRet[0]['name01'];
313        $sqlval['deliv_name02'] = $arrRet[0]['name02'];
314        $sqlval['deliv_kana01'] = $arrRet[0]['kana01'];
315        $sqlval['deliv_kana02'] = $arrRet[0]['kana02'];
316        $sqlval['deliv_zip01'] = $arrRet[0]['zip01'];
317        $sqlval['deliv_zip02'] = $arrRet[0]['zip02'];
318        $sqlval['deliv_pref'] = $arrRet[0]['pref'];
319        $sqlval['deliv_addr01'] = $arrRet[0]['addr01'];
320        $sqlval['deliv_addr02'] = $arrRet[0]['addr02'];
321        $sqlval['deliv_tel01'] = $arrRet[0]['tel01'];
322        $sqlval['deliv_tel02'] = $arrRet[0]['tel02'];
323        $sqlval['deliv_tel03'] = $arrRet[0]['tel03'];
324        $objDb = new SC_Helper_DB_Ex();
325        $objDb->sfRegistTempOrder($uniqid, $sqlval);
326    }
327
328    /**
329     * デストラクタ.
330     *
331     * @return void
332     */
333    function destroy() {
334        parent::destroy();
335    }
336}
337?>
Note: See TracBrowser for help on using the repository browser.