source: branches/version-2_5-dev/data/class/pages/admin/customer/LC_Page_Admin_Customer_Edit.php @ 20764

Revision 20764, 13.9 KB checked in by nanasess, 13 years ago (diff)

#601 (コピーライトの更新)

  • Property svn:eol-style set to LF
  • Property svn:keywords set to Id
  • 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-2011 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_EX_REALDIR . 'page_extends/admin/LC_Page_Admin_Ex.php';
26
27/**
28 * 顧客情報修正 のページクラス.
29 *
30 * @package Page
31 * @author LOCKON CO.,LTD.
32 * @version $Id$
33 */
34class LC_Page_Admin_Customer_Edit extends LC_Page_Admin_Ex {
35
36    // }}}
37    // {{{ functions
38
39    /**
40     * Page を初期化する.
41     *
42     * @return void
43     */
44    function init() {
45        parent::init();
46        $this->tpl_mainpage = 'customer/edit.tpl';
47        $this->tpl_mainno = 'customer';
48        $this->tpl_subnavi = 'customer/subnavi.tpl';
49        $this->tpl_subno = 'index';
50        $this->tpl_pager = 'pager.tpl';
51        $this->tpl_subtitle = '顧客マスタ';
52
53        $masterData = new SC_DB_MasterData_Ex();
54        $this->arrPref = $masterData->getMasterData('mtb_pref');
55        $this->arrJob = $masterData->getMasterData("mtb_job");
56        $this->arrSex = $masterData->getMasterData("mtb_sex");
57        $this->arrReminder = $masterData->getMasterData("mtb_reminder");
58        $this->arrStatus = $masterData->getMasterData("mtb_customer_status");
59        $this->arrMailMagazineType = $masterData->getMasterData("mtb_mail_magazine_type");
60
61        // 日付プルダウン設定
62        $objDate = new SC_Date_Ex(BIRTH_YEAR);
63        $this->arrYear = $objDate->getYear();   
64        $this->arrMonth = $objDate->getMonth();
65        $this->arrDay = $objDate->getDay();
66
67        // 支払い方法種別
68        $objDb = new SC_Helper_DB_Ex();
69        $this->arrPayment = $objDb->sfGetIDValueList("dtb_payment", "payment_id", "payment_method");
70    }
71
72    /**
73     * Page のプロセス.
74     *
75     * @return void
76     */
77    function process() {
78        $this->action();
79        $this->sendResponse();
80    }
81
82    /**
83     * Page のアクション.
84     *
85     * @return void
86     */
87    function action() {
88        // パラメータ管理クラス
89        $objFormParam = new SC_FormParam_Ex();
90        // 検索引き継ぎ用パラメーター管理クラス
91        $objFormSearchParam = new SC_FormParam_Ex();
92
93        // モードによる処理切り替え
94        switch ($this->getMode()) {
95        case 'edit_search':
96            //検索引き継ぎ用パラメーター処理
97            $this->lfInitSearchParam($objFormSearchParam);
98            $objFormSearchParam->setParam($_REQUEST);
99            $this->arrErr = $this->lfCheckErrorSearchParam($objFormSearchParam);
100            $this->arrSearchData = $objFormSearchParam->getSearchArray();
101            if(!SC_Utils_Ex::isBlank($this->arrErr)) {
102                return;
103            }
104            //指定顧客の情報をセット
105            $this->arrForm = SC_Helper_Customer_Ex::sfGetCustomerData($objFormSearchParam->getValue("edit_customer_id"), true);
106            //購入履歴情報の取得
107            list($this->tpl_linemax, $this->arrPurchaseHistory, $this->objNavi) = $this->lfPurchaseHistory($objFormSearchParam->getValue("edit_customer_id"));
108            $this->arrPagenavi = $this->objNavi->arrPagenavi;
109            $this->arrPagenavi['mode'] = 'return';
110            $this->tpl_pageno = '0';
111            break;
112        case 'confirm':
113            //パラメーター処理
114            $this->lfInitParam($objFormParam);
115            $objFormParam->setParam($_POST);
116            $objFormParam->convParam();
117            // 入力パラメーターチェック
118            $this->arrErr = $this->lfCheckError($objFormParam);
119            $this->arrForm = $objFormParam->getHashArray();
120            //検索引き継ぎ用パラメーター処理
121            $this->lfInitSearchParam($objFormSearchParam);
122            $objFormSearchParam->setParam($objFormParam->getValue("search_data"));
123            $this->arrSearchErr = $this->lfCheckErrorSearchParam($objFormSearchParam);
124            $this->arrSearchData = $objFormSearchParam->getSearchArray();
125            if(!SC_Utils_Ex::isBlank($this->arrErr) or !SC_Utils_Ex::isBlank($this->arrSearchErr)) {
126                return;
127            }
128            // 確認画面テンプレートに切り替え
129            $this->tpl_mainpage = 'customer/edit_confirm.tpl';
130            break;
131        case 'return':
132            //パラメーター処理
133            $this->lfInitParam($objFormParam);
134            $objFormParam->setParam($_POST);
135            $objFormParam->convParam();
136            // 入力パラメーターチェック
137            $this->arrErr = $this->lfCheckError($objFormParam);
138            $this->arrForm = $objFormParam->getHashArray();
139            //検索引き継ぎ用パラメーター処理
140            $this->lfInitSearchParam($objFormSearchParam);
141            $objFormSearchParam->setParam($objFormParam->getValue("search_data"));
142            $this->arrSearchErr = $this->lfCheckErrorSearchParam($objFormSearchParam);
143            $this->arrSearchData = $objFormSearchParam->getSearchArray();
144            if(!SC_Utils_Ex::isBlank($this->arrErr) or !SC_Utils_Ex::isBlank($this->arrSearchErr)) {
145                return;
146            }
147            //購入履歴情報の取得
148            list($this->tpl_linemax, $this->arrPurchaseHistory, $this->objNavi) = $this->lfPurchaseHistory($objFormParam->getValue("customer_id"), $objFormParam->getValue("search_pageno"));
149            $this->arrPagenavi = $this->objNavi->arrPagenavi;
150            $this->arrPagenavi['mode'] = 'return';
151            $this->tpl_pageno = $objFormParam->getValue("search_pageno");
152
153            break;
154        case 'complete':
155            //登録・保存処理
156            //パラメーター処理
157            $this->lfInitParam($objFormParam);
158            $objFormParam->setParam($_POST);
159            $objFormParam->convParam();
160            // 入力パラメーターチェック
161            $this->arrErr = $this->lfCheckError($objFormParam);
162            $this->arrForm = $objFormParam->getHashArray();
163            //検索引き継ぎ用パラメーター処理
164            $this->lfInitSearchParam($objFormSearchParam);
165            $objFormSearchParam->setParam($objFormParam->getValue("search_data"));
166            $this->arrSearchErr = $this->lfCheckErrorSearchParam($objFormSearchParam);
167            $this->arrSearchData = $objFormSearchParam->getSearchArray();
168            if(!SC_Utils_Ex::isBlank($this->arrErr) or !SC_Utils_Ex::isBlank($this->arrSearchErr)) {
169                return;
170            }
171            $this->lfRegistData($objFormParam);
172            $this->tpl_mainpage = 'customer/edit_complete.tpl';
173            break;
174        case 'complete_return':
175            //検索引き継ぎ用パラメーター処理
176            $this->lfInitParam($objFormParam);
177            $objFormParam->setParam($_POST);
178            $this->lfInitSearchParam($objFormSearchParam);
179            $objFormSearchParam->setParam($objFormParam->getValue("search_data"));
180            $this->arrSearchErr = $this->lfCheckErrorSearchParam($objFormSearchParam);
181            $this->arrSearchData = $objFormSearchParam->getSearchArray();
182            if(!SC_Utils_Ex::isBlank($this->arrSearchErr)) {
183                return;
184            }
185        default:
186            break;
187        }
188    }
189
190    /**
191     * デストラクタ.
192     *
193     * @return void
194     */
195    function destroy() {
196        parent::destroy();
197    }
198
199    /**
200     * パラメーター情報の初期化
201     *
202     * @param array $objFormParam フォームパラメータークラス
203     * @return void
204     */
205    function lfInitParam(&$objFormParam) {
206        // 会員項目のパラメーター取得
207        SC_Helper_Customer_Ex::sfCustomerEntryParam($objFormParam, true);
208        // 検索結果一覧画面への戻り用パラメーター
209        $objFormParam->addParam("検索用データ", "search_data", "", "", array(), "", false);
210        // 顧客購入履歴ページング用
211        $objFormParam->addParam("", "search_pageno", INT_LEN, 'n', array("NUM_CHECK", "MAX_LENGTH_CHECK"), "", false);
212    }
213
214    /**
215     * 検索パラメーター引き継ぎ用情報の初期化
216     *
217     * @param array $objFormParam フォームパラメータークラス
218     * @return void
219     */
220    function lfInitSearchParam(&$objFormParam) {
221        SC_Helper_Customer_Ex::sfSetSearchParam($objFormParam);
222        // 初回受け入れ時用
223        $objFormParam->addParam("編集対象顧客ID", "edit_customer_id", INT_LEN, 'n', array("NUM_CHECK", "MAX_LENGTH_CHECK"));
224    }
225
226    /**
227     * 検索パラメーターエラーチェック
228     *
229     * @param array $objFormParam フォームパラメータークラス
230     * @return array エラー配列
231     */
232    function lfCheckErrorSearchParam(&$objFormParam) {
233        return SC_Helper_Customer_Ex::sfCheckErrorSearchParam($objFormParam);
234    }
235
236    /**
237     * フォーム入力パラメーターエラーチェック
238     *
239     * @param array $objFormParam フォームパラメータークラス
240     * @return array エラー配列
241     */
242    function lfCheckError(&$objFormParam) {
243        $arrErr = SC_Helper_Customer_Ex::sfCustomerMypageErrorCheck($objFormParam, true);
244
245        //メアド重複チェック(共通ルーチンは使えない)
246        $objQuery   =& SC_Query_Ex::getSingletonInstance();
247        $col = "email, email_mobile, customer_id";
248        $table = "dtb_customer";
249        $where = "del_flg <> 1 AND (email Like ? OR email_mobile Like ?)";
250        $arrVal = array($objFormParam->getValue('email'), $objFormParam->getValue('email_mobile'));
251        if($objFormParam->getValue("customer_id")) {
252            $where .= " AND customer_id <> ?";
253            $arrVal[] = $objFormParam->getValue("customer_id");
254        }
255        $arrData = $objQuery->getRow($col, $table, $where, $arrVal);
256        if(!SC_Utils_Ex::isBlank($arrData['email'])) {
257            if($arrData['email'] == $objFormParam->getValue('email')) {
258                $arrErr['email'] = '※ すでに他の会員(ID:' . $arrData['customer_id'] . ')が使用しているアドレスです。';
259            }else if($arrData['email'] == $objFormParam->getValue('email_mobile')) {
260                $arrErr['email_mobile'] = '※ すでに他の会員(ID:' . $arrData['customer_id'] . ')が使用しているアドレスです。';
261            }
262        }
263        if(!SC_Utils_Ex::isBlank($arrData['email_mobile'])) {
264            if($arrData['email_mobile'] == $objFormParam->getValue('email_mobile')) {
265                $arrErr['email_mobile'] = '※ すでに他の会員(ID:' . $arrData['customer_id'] . ')が使用している携帯アドレスです。';
266            }else if($arrData['email_mobile'] == $objFormParam->getValue('email')) {
267                $arrErr['email_mobile'] = '※ すでに他の会員(ID:' . $arrData['customer_id'] . ')が使用している携帯アドレスです。';
268            }
269        }
270        return $arrErr;
271    }
272
273    /**
274     * 登録処理
275     *
276     * @param array $objFormParam フォームパラメータークラス
277     * @return array エラー配列
278     */
279    function lfRegistData(&$objFormParam) {
280        $objQuery   =& SC_Query_Ex::getSingletonInstance();
281        // 登録用データ取得
282        $arrData = $objFormParam->getDbArray();
283        // 足りないものを作る
284        if(!SC_Utils_Ex::isBlank($objFormParam->getValue('year'))) {
285            $arrData['birth'] = $objFormParam->getValue('year') . '/'
286                            . $objFormParam->getValue('month') . '/'
287                            . $objFormParam->getValue('day')
288                            . ' 00:00:00';
289        }
290
291        if(!is_numeric($arrData['customer_id'])) {
292            $arrData['secret_key'] = SC_Utils_Ex::sfGetUniqRandomId('r');
293        }else {
294            $arrOldCustomerData = SC_Helper_Customer_Ex::sfGetCustomerData($arrData['customer_id']);
295            if($arrOldCustomerData['status'] != $arrData['status']) {
296                $arrData['secret_key'] = SC_Utils_Ex::sfGetUniqRandomId('r');
297            }
298        }
299        return SC_Helper_Customer_Ex::sfEditCustomerData($arrData, $arrData['customer_id']);
300    }
301
302    /**
303     * 購入履歴情報の取得
304     *
305     * @param array $arrParam 検索パラメーター連想配列
306     * @return array( integer 全体件数, mixed 顧客データ一覧配列, mixed SC_PageNaviオブジェクト)
307     */
308    function lfPurchaseHistory($customer_id, $pageno = 0){
309        if(SC_Utils_Ex::isBlank($customer_id)) {
310            return array('0', array(), NULL);
311        }
312        $objQuery =& SC_Query_Ex::getSingletonInstance();
313        $page_max = SEARCH_PMAX;
314        $table = "dtb_order";
315        $where = "customer_id = ? AND del_flg <> 1";
316        $arrVal = array($customer_id);
317        //購入履歴の件数取得
318        $linemax = $objQuery->count($table, $where, $arrVal);
319        // ページ送りの取得
320        $objNavi = new SC_PageNavi_Ex($pageno, $linemax, $page_max, "fnNaviSearchPage2", NAVI_PMAX);
321        // 取得範囲の指定(開始行番号、行数のセット)
322        $objQuery->setLimitOffset($page_max, $objNavi->start_row);
323        // 表示順序
324        $order = "order_id DESC";
325        $objQuery->setOrder($order);
326        //購入履歴情報の取得
327        $arrPurchaseHistory = $objQuery->select("*", $table, $where, $arrVal);
328
329        return array($linemax, $arrPurchaseHistory, $objNavi);
330    }
331}
332?>
Note: See TracBrowser for help on using the repository browser.