source: branches/feature-module-update/data/class/pages/mypage/LC_Page_Mypage_DeliveryAddr.php @ 16093

Revision 16093, 8.1 KB checked in by nanasess, 17 years ago (diff)

クラス化に伴う修正

  • 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 * @package Page
15 * @author LOCKON CO.,LTD.
16 * @version $Id$
17 */
18class LC_Page_Mypage_DeliveryAddr extends LC_Page {
19
20    // }}}
21    // {{{ functions
22
23    /**
24     * Page を初期化する.
25     *
26     * @return void
27     */
28    function init() {
29        parent::init();
30        $this->tpl_mainpage = TEMPLATE_DIR . 'mypage/delivery_addr.tpl';
31        $this->tpl_title = "新しいお届け先の追加・変更";
32        $masterData = new SC_DB_MasterData_Ex();
33        $this->arrPref= $masterData->getMasterData("mtb_pref",
34                            array("pref_id", "pref_name", "rank"));
35        $this->allowClientCache();
36    }
37
38    /**
39     * Page のプロセス.
40     *
41     * @return void
42     */
43    function process() {
44        $objView = new SC_SiteView(false);
45        $objQuery = new SC_Query();
46        $objCustomer = new SC_Customer();
47        $ParentPage = MYPAGE_DELIVADDR_URL;
48
49        // GETでページを指定されている場合には指定ページに戻す
50        if (isset($_GET['page'])) {
51            $ParentPage = $_GET['page'];
52        }
53        $this->ParentPage = $ParentPage;
54
55        //ログイン判定
56        if (!$objCustomer->isLoginSuccess()){
57            SC_Utils_Ex::sfDispSiteError(CUSTOMER_ERROR);
58        }
59
60        if (!isset($_POST['mode'])) $_POST['mode'] = "";
61        if (!isset($_GET['other_deliv_id'])) $_GET['other_deliv_id'] = "";
62
63        if ($_POST['mode'] == ""){
64            $_SESSION['other_deliv_id'] = $_GET['other_deliv_id'];
65        }
66
67        if ($_GET['other_deliv_id'] != ""){
68            //不正アクセス判定
69            $flag = $objQuery->count("dtb_other_deliv", "customer_id=? AND other_deliv_id=?", array($objCustomer->getValue("customer_id"), $_SESSION['other_deliv_id']));
70            if (!$objCustomer->isLoginSuccess() || $flag == 0){
71                SC_Utils_Ex::sfDispSiteError(CUSTOMER_ERROR);
72            }
73        }
74
75        //別のお届け先DB登録用カラム配列
76        $arrRegistColumn = array(
77                                 array(  "column" => "name01",      "convert" => "aKV" ),
78                                 array(  "column" => "name02",      "convert" => "aKV" ),
79                                 array(  "column" => "kana01",      "convert" => "CKV" ),
80                                 array(  "column" => "kana02",      "convert" => "CKV" ),
81                                 array(  "column" => "zip01",       "convert" => "n" ),
82                                 array(  "column" => "zip02",       "convert" => "n" ),
83                                 array(  "column" => "pref",        "convert" => "n" ),
84                                 array(  "column" => "addr01",      "convert" => "aKV" ),
85                                 array(  "column" => "addr02",      "convert" => "aKV" ),
86                                 array(  "column" => "tel01",       "convert" => "n" ),
87                                 array(  "column" => "tel02",       "convert" => "n" ),
88                                 array(  "column" => "tel03",       "convert" => "n" ),
89                                 );
90
91
92        switch ($_POST['mode']){
93        case 'edit':
94            $_POST = $this->lfConvertParam($_POST,$arrRegistColumn);
95            $this->arrErr = $this->lfErrorCheck($_POST);
96            if ($this->arrErr){
97                foreach ($_POST as $key => $val){
98                    $this->$key = $val;
99                }
100            }else{
101                //別のお届け先登録数の取得
102                $deliv_count = $objQuery->count("dtb_other_deliv", "customer_id=?", array($objCustomer->getValue('customer_id')));
103                if ($deliv_count < DELIV_ADDR_MAX or isset($_POST['other_deliv_id'])){
104                    $this->lfRegistData($_POST,$arrRegistColumn, $objCustomer);
105                }
106                $this->tpl_onload = "fnUpdateParent('". $this->getLocation($_POST['ParentPage']) ."'); window.close();";
107            }
108            break;
109        }
110
111        if ($_GET['other_deliv_id'] != ""){
112            //別のお届け先情報取得
113            $arrOtherDeliv = $objQuery->select("*", "dtb_other_deliv", "other_deliv_id=? ", array($_SESSION['other_deliv_id']));
114            $this->arrOtherDeliv = $arrOtherDeliv[0];
115        }
116
117        $objView->assignobj($this);
118        $objView->display($this->tpl_mainpage);
119    }
120
121    /**
122     * デストラクタ.
123     *
124     * @return void
125     */
126    function destroy() {
127        parent::destroy();
128    }
129
130    /* エラーチェック */
131    function lfErrorCheck() {
132        $objErr = new SC_CheckError();
133
134        $objErr->doFunc(array("お名前(姓)", 'name01', STEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK"));
135        $objErr->doFunc(array("お名前(名)", 'name02', STEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK", "MAX_LENGTH_CHECK"));
136        $objErr->doFunc(array("フリガナ(姓)", 'kana01', STEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK", "MAX_LENGTH_CHECK", "KANA_CHECK"));
137        $objErr->doFunc(array("フリガナ(名)", 'kana02', STEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK", "MAX_LENGTH_CHECK", "KANA_CHECK"));
138        $objErr->doFunc(array("郵便番号1", "zip01", ZIP01_LEN ) ,array("EXIST_CHECK", "NUM_CHECK", "NUM_COUNT_CHECK"));
139        $objErr->doFunc(array("郵便番号2", "zip02", ZIP02_LEN ) ,array("EXIST_CHECK", "NUM_CHECK", "NUM_COUNT_CHECK"));
140        $objErr->doFunc(array("郵便番号", "zip01", "zip02"), array("ALL_EXIST_CHECK"));
141        $objErr->doFunc(array("都道府県", 'pref'), array("SELECT_CHECK","NUM_CHECK"));
142        $objErr->doFunc(array("ご住所(1)", "addr01", MTEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK"));
143        $objErr->doFunc(array("ご住所(2)", "addr02", MTEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK"));
144        $objErr->doFunc(array("お電話番号1", 'tel01'), array("EXIST_CHECK","NUM_CHECK"));
145        $objErr->doFunc(array("お電話番号2", 'tel02'), array("EXIST_CHECK","NUM_CHECK"));
146        $objErr->doFunc(array("お電話番号3", 'tel03'), array("EXIST_CHECK","NUM_CHECK"));
147        $objErr->doFunc(array("お電話番号", "tel01", "tel02", "tel03", TEL_LEN) ,array("TEL_CHECK"));
148        return $objErr->arrErr;
149
150    }
151
152    /* 登録実行 */
153    function lfRegistData($array, $arrRegistColumn, &$objCustomer) {
154        $objConn = new SC_DBConn();
155        foreach ($arrRegistColumn as $data) {
156            if (strlen($array[ $data["column"] ]) > 0) {
157                $arrRegist[ $data["column"] ] = $array[ $data["column"] ];
158            }
159        }
160
161        $arrRegist['customer_id'] = $objCustomer->getvalue('customer_id');
162
163        //-- 編集登録実行
164        $objConn->query("BEGIN");
165        if ($array['other_deliv_id'] != ""){
166            $objConn->autoExecute("dtb_other_deliv", $arrRegist,
167                                  "other_deliv_id = "
168                                  . SC_Utils_Ex::sfQuoteSmart($array["other_deliv_id"]));
169        }else{
170            $objConn->autoExecute("dtb_other_deliv", $arrRegist);
171        }
172        $objConn->query("COMMIT");
173    }
174
175    //---- 取得文字列の変換
176    function lfConvertParam($array, $arrRegistColumn) {
177        /*
178         *  文字列の変換
179         *  K :  「半角(ハンカク)片仮名」を「全角片仮名」に変換
180         *  C :  「全角ひら仮名」を「全角かた仮名」に変換
181         *  V :  濁点付きの文字を一文字に変換。"K","H"と共に使用します
182         *  n :  「全角」数字を「半角(ハンカク)」に変換
183         *  a :  全角英数字を半角英数字に変換する
184         */
185        // カラム名とコンバート情報
186        foreach ($arrRegistColumn as $data) {
187            $arrConvList[ $data["column"] ] = $data["convert"];
188        }
189
190        // 文字変換
191        foreach ($arrConvList as $key => $val) {
192            // POSTされてきた値のみ変換する。
193            if(strlen(($array[$key])) > 0) {
194                $array[$key] = mb_convert_kana($array[$key] ,$val);
195            }
196        }
197        return $array;
198    }
199}
200?>
Note: See TracBrowser for help on using the repository browser.