- Timestamp:
- 2007/09/03 20:16:26 (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/feature-module-update/html/admin/customer/edit.php
r15532 r15568 5 5 * http://www.lockon.co.jp/ 6 6 */ 7 require_once("../require.php");8 7 9 // 認証可否の判定10 $objSess = new SC_Session();11 sfIsSuccess($objSess);8 // {{{ requires 9 require_once("../../require.php"); 10 require_once(CLASS_PATH . "page_extends/admin/customer/LC_Page_Admin_Customer_Edit_Ex.php"); 12 11 13 //---- ページ表示用クラス 14 class LC_Page { 15 var $arrSession; 16 var $tpl_mode; 17 var $list_data; 12 // }}} 13 // {{{ generate page 18 14 19 var $arrErr; 20 var $arrYear; 21 var $arrMonth; 22 var $arrDay; 23 var $arrPref; 24 var $arrJob; 25 var $arrSex; 26 var $arrReminder; 27 var $count; 28 29 var $tpl_strnavi; 30 31 function LC_Page() { 32 $this->tpl_mainpage = 'customer/edit.tpl'; 33 $this->tpl_mainno = 'customer'; 34 $this->tpl_subnavi = 'customer/subnavi.tpl'; 35 $this->tpl_subno = 'index'; 36 $this->tpl_pager = DATA_PATH . 'Smarty/templates/admin/pager.tpl'; 37 $this->tpl_subtitle = '顧客マスタ'; 38 39 global $arrPref; 40 $this->arrPref = $arrPref; 41 global $arrJob; 42 $this->arrJob = $arrJob; 43 global $arrSex; 44 $this->arrSex = $arrSex; 45 global $arrReminder; 46 $this->arrReminder = $arrReminder; 47 } 48 } 49 $objQuery = new SC_Query(); 50 $objConn = new SC_DBConn(); 51 $objPage = new LC_Page(); 52 $objView = new SC_AdminView(); 53 $objDate = new SC_Date(1901); 54 $objPage->arrYear = $objDate->getYear(); // 日付プルダウン設定 55 $objPage->arrMonth = $objDate->getMonth(); 56 $objPage->arrDay = $objDate->getDay(); 57 58 //---- 登録用カラム配列 59 $arrRegistColumn = array( 60 array( "column" => "name01", "convert" => "aKV" ), 61 array( "column" => "name02", "convert" => "aKV" ), 62 array( "column" => "kana01", "convert" => "CKV" ), 63 array( "column" => "kana02", "convert" => "CKV" ), 64 array( "column" => "zip01", "convert" => "n" ), 65 array( "column" => "zip02", "convert" => "n" ), 66 array( "column" => "pref", "convert" => "n" ), 67 array( "column" => "addr01", "convert" => "aKV" ), 68 array( "column" => "addr02", "convert" => "aKV" ), 69 array( "column" => "email", "convert" => "a" ), 70 array( "column" => "email_mobile", "convert" => "a" ), 71 array( "column" => "tel01", "convert" => "n" ), 72 array( "column" => "tel02", "convert" => "n" ), 73 array( "column" => "tel03", "convert" => "n" ), 74 array( "column" => "fax01", "convert" => "n" ), 75 array( "column" => "fax02", "convert" => "n" ), 76 array( "column" => "fax03", "convert" => "n" ), 77 array( "column" => "sex", "convert" => "n" ), 78 array( "column" => "job", "convert" => "n" ), 79 array( "column" => "birth", "convert" => "n" ), 80 array( "column" => "password", "convert" => "a" ), 81 array( "column" => "reminder", "convert" => "n" ), 82 array( "column" => "reminder_answer", "convert" => "aKV" ), 83 array( "column" => "mailmaga_flg", "convert" => "n" ), 84 array( "column" => "note", "convert" => "aKV" ), 85 array( "column" => "point", "convert" => "n" ), 86 array( "column" => "status", "convert" => "n" ) 87 ); 88 89 //---- 登録除外用カラム配列 90 $arrRejectRegistColumn = array("year", "month", "day"); 91 92 // 検索条件を保持 93 if ($_POST['mode'] == "edit_search") { 94 $arrSearch = $_POST; 95 }else{ 96 $arrSearch = $_POST['search_data']; 97 } 98 if(is_array($arrSearch)){ 99 foreach($arrSearch as $key => $val){ 100 $arrSearchData[$key] = $val; 101 } 102 } 103 104 $objPage->arrSearchData= $arrSearchData; 105 106 //---- 顧客編集情報取得 107 if (($_POST["mode"] == "edit" || $_POST["mode"] == "edit_search") && is_numeric($_POST["edit_customer_id"])) { 108 109 //-- 顧客データ取得 110 $sql = "SELECT * FROM dtb_customer WHERE del_flg = 0 AND customer_id = ?"; 111 $result = $objConn->getAll($sql, array($_POST["edit_customer_id"])); 112 $objPage->list_data = $result[0]; 113 114 $birth = split(" ", $objPage->list_data["birth"]); 115 $birth = split("-",$birth[0]); 116 117 $objPage->list_data["year"] = $birth[0]; 118 $objPage->list_data["month"] = $birth[1]; 119 $objPage->list_data["day"] = $birth[2]; 120 121 $objPage->list_data["password"] = DEFAULT_PASSWORD; 122 //DB登録のメールアドレスを渡す 123 $objPage->tpl_edit_email = $result[0]['email']; 124 //購入履歴情報の取得 125 $objPage->arrPurchaseHistory = lfPurchaseHistory($_POST['edit_customer_id']); 126 // 支払い方法の取得 127 $objPage->arrPayment = sfGetIDValueList("dtb_payment", "payment_id", "payment_method"); 128 } 129 130 //---- 顧客情報編集 131 if ( $_POST["mode"] != "edit" && $_POST["mode"] != "edit_search" && is_numeric($_POST["customer_id"])) { 132 133 //-- POSTデータの引き継ぎ 134 $objPage->arrForm = $_POST; 135 $objPage->arrForm['email'] = strtolower($objPage->arrForm['email']); // emailはすべて小文字で処理 136 137 //-- 入力データの変換 138 $objPage->arrForm = lfConvertParam($objPage->arrForm, $arrRegistColumn); 139 //-- 入力チェック 140 $objPage->arrErr = lfErrorCheck($objPage->arrForm); 141 142 //-- 入力エラー発生 or リターン時 143 if ($objPage->arrErr || $_POST["mode"] == "return") { 144 foreach($objPage->arrForm as $key => $val) { 145 $objPage->list_data[ $key ] = $val; 146 } 147 //購入履歴情報の取得 148 $objPage->arrPurchaseHistory = lfPurchaseHistory($_POST['customer_id']); 149 // 支払い方法の取得 150 $objPage->arrPayment = sfGetIDValueList("dtb_payment", "payment_id", "payment_method"); 151 152 } else { 153 //-- 確認 154 if ($_POST["mode"] == "confirm") { 155 $objPage->tpl_mainpage = 'customer/edit_confirm.tpl'; 156 $passlen = strlen($objPage->arrForm['password']); 157 $objPage->passlen = lfPassLen($passlen); 158 159 } 160 //-- 編集 161 if($_POST["mode"] == "complete") { 162 $objPage->tpl_mainpage = 'customer/edit_complete.tpl'; 163 164 // 現在の会員情報を取得する 165 $arrCusSts = $objQuery->getOne("SELECT status FROM dtb_customer WHERE customer_id = ?", array($_POST["customer_id"])); 166 167 // 会員情報が変更されている場合にはシークレット№も更新する。 168 if ($arrCusSts != $_POST['status']){ 169 $secret = sfGetUniqRandomId("r"); 170 $objPage->arrForm['secret_key'] = $secret; 171 array_push($arrRegistColumn, array('column' => 'secret_key', 'convert' => 'n')); 172 } 173 //-- 編集登録 174 sfEditCustomerData($objPage->arrForm, $arrRegistColumn); 175 } 176 } 177 } 178 179 //---- ページ表示 180 $objView->assignobj($objPage); 181 $objView->display(MAIN_FRAME); 182 183 184 185 //-------------- function 186 187 // 編集登録 188 function lfRegisDatat($array, $arrRegistColumn) { 189 global $objConn; 190 global $objQuery; 191 foreach ($arrRegistColumn as $data) { 192 if($array[$data["column"]] != "") { 193 $arrRegist[$data["column"]] = $array[$data["column"]]; 194 } else { 195 $arrRegist[$data["column"]] = NULL; 196 } 197 } 198 if (strlen($array["year"]) > 0) { 199 $arrRegist["birth"] = $array["year"] ."/". $array["month"] ."/". $array["day"] ." 00:00:00"; 200 } 201 202 //-- パスワードの更新がある場合は暗号化。(更新がない場合はUPDATE文を構成しない) 203 if ($array["password"] != DEFAULT_PASSWORD) { 204 $arrRegist["password"] = sha1($array["password"] . ":" . AUTH_MAGIC); 205 } else { 206 unset($arrRegist['password']); 207 } 208 209 $arrRegist["update_date"] = "Now()"; 210 211 //-- 編集登録実行 212 $objConn->query("BEGIN"); 213 $objQuery->Insert("dtb_customer", $arrRegist, "customer_id = '" .addslashes($array["customer_id"]). "'"); 214 215 $objConn->query("COMMIT"); 216 } 217 218 219 //---- 取得文字列の変換 220 function lfConvertParam($array, $arrRegistColumn) { 221 /* 222 * 文字列の変換 223 * K : 「半角(ハンカク)片仮名」を「全角片仮名」に変換 224 * C : 「全角ひら仮名」を「全角かた仮名」に変換 225 * V : 濁点付きの文字を一文字に変換。"K","H"と共に使用します 226 * n : 「全角」数字を「半角(ハンカク)」に変換 227 * a : 全角英数字を半角英数字に変換する 228 */ 229 // カラム名とコンバート情報 230 foreach ($arrRegistColumn as $data) { 231 $arrConvList[ $data["column"] ] = $data["convert"]; 232 } 233 // 文字変換 234 foreach ($arrConvList as $key => $val) { 235 // POSTされてきた値のみ変換する。 236 if(strlen(($array[$key])) > 0) { 237 $array[$key] = mb_convert_kana($array[$key] ,$val); 238 } 239 } 240 return $array; 241 } 242 243 //---- 入力エラーチェック 244 function lfErrorCheck($array) { 245 246 global $objConn; 247 $objErr = new SC_CheckError($array); 248 249 $objErr->doFunc(array("会員状態", 'status'), array("EXIST_CHECK")); 250 $objErr->doFunc(array("お名前(姓)", 'name01', STEXT_LEN), array("EXIST_CHECK", "MAX_LENGTH_CHECK")); 251 $objErr->doFunc(array("お名前(名)", 'name02', STEXT_LEN), array("EXIST_CHECK", "MAX_LENGTH_CHECK")); 252 $objErr->doFunc(array("フリガナ(姓)", 'kana01', STEXT_LEN), array("EXIST_CHECK", "MAX_LENGTH_CHECK", "KANA_CHECK")); 253 $objErr->doFunc(array("フリガナ(名)", 'kana02', STEXT_LEN), array("EXIST_CHECK", "MAX_LENGTH_CHECK", "KANA_CHECK")); 254 $objErr->doFunc(array("郵便番号1", "zip01", ZIP01_LEN ) ,array("EXIST_CHECK", "NUM_CHECK", "NUM_COUNT_CHECK")); 255 $objErr->doFunc(array("郵便番号2", "zip02", ZIP02_LEN ) ,array("EXIST_CHECK", "NUM_CHECK", "NUM_COUNT_CHECK")); 256 $objErr->doFunc(array("郵便番号", "zip01", "zip02"), array("ALL_EXIST_CHECK")); 257 $objErr->doFunc(array("都道府県", 'pref'), array("SELECT_CHECK","NUM_CHECK")); 258 $objErr->doFunc(array("ご住所(1)", "addr01", MTEXT_LEN), array("EXIST_CHECK","MAX_LENGTH_CHECK")); 259 $objErr->doFunc(array("ご住所(2)", "addr02", MTEXT_LEN), array("EXIST_CHECK","MAX_LENGTH_CHECK")); 260 $objErr->doFunc(array('メールアドレス', "email", MTEXT_LEN) ,array("EXIST_CHECK", "NO_SPTAB", "EMAIL_CHECK", "EMAIL_CHAR_CHECK", "MAX_LENGTH_CHECK")); 261 262 //現会員の判定 → 現会員もしくは仮登録中は、メアド一意が前提になってるので同じメアドで登録不可 263 if (strlen($array["email"]) > 0) { 264 $sql = "SELECT customer_id FROM dtb_customer WHERE email ILIKE ? escape '#' AND (status = 1 OR status = 2) AND del_flg = 0 AND customer_id <> ?"; 265 $checkMail = ereg_replace( "_", "#_", $array["email"]); 266 $result = $objConn->getAll($sql, array($checkMail, $array["customer_id"])); 267 if (count($result) > 0) { 268 $objErr->arrErr["email"] .= "※ すでに登録されているメールアドレスです。"; 269 } 270 } 271 272 $objErr->doFunc(array('メールアドレス(モバイル)', "email_mobile", MTEXT_LEN) ,array("EMAIL_CHECK", "EMAIL_CHAR_CHECK", "MAX_LENGTH_CHECK")); 273 //現会員の判定 → 現会員もしくは仮登録中は、メアド一意が前提になってるので同じメアドで登録不可 274 if (strlen($array["email_mobile"]) > 0) { 275 $sql = "SELECT customer_id FROM dtb_customer WHERE email_mobile ILIKE ? escape '#' AND (status = 1 OR status = 2) AND del_flg = 0 AND customer_id <> ?"; 276 $checkMail = ereg_replace( "_", "#_", $array["email_mobile"]); 277 $result = $objConn->getAll($sql, array($checkMail, $array["customer_id"])); 278 if (count($result) > 0) { 279 $objErr->arrErr["email_mobile"] .= "※ すでに登録されているメールアドレス(モバイル)です。"; 280 } 281 } 282 283 284 $objErr->doFunc(array("お電話番号1", 'tel01'), array("EXIST_CHECK")); 285 $objErr->doFunc(array("お電話番号2", 'tel02'), array("EXIST_CHECK")); 286 $objErr->doFunc(array("お電話番号3", 'tel03'), array("EXIST_CHECK")); 287 $objErr->doFunc(array("お電話番号", "tel01", "tel02", "tel03", TEL_LEN) ,array("TEL_CHECK")); 288 $objErr->doFunc(array("FAX番号", "fax01", "fax02", "fax03", TEL_LEN) ,array("TEL_CHECK")); 289 $objErr->doFunc(array("ご性別", "sex") ,array("SELECT_CHECK", "NUM_CHECK")); 290 $objErr->doFunc(array("ご職業", "job") ,array("NUM_CHECK")); 291 if ($array["password"] != DEFAULT_PASSWORD) { 292 $objErr->doFunc(array("パスワード", 'password', PASSWORD_LEN1, PASSWORD_LEN2), array("EXIST_CHECK", "ALNUM_CHECK", "NUM_RANGE_CHECK")); 293 } 294 $objErr->doFunc(array("パスワードを忘れたときのヒント 質問", "reminder") ,array("SELECT_CHECK", "NUM_CHECK")); 295 $objErr->doFunc(array("パスワードを忘れたときのヒント 答え", "reminder_answer", STEXT_LEN) ,array("EXIST_CHECK", "MAX_LENGTH_CHECK")); 296 $objErr->doFunc(array("メールマガジン", "mailmaga_flg") ,array("SELECT_CHECK", "NUM_CHECK")); 297 $objErr->doFunc(array("生年月日", "year", "month", "day"), array("CHECK_DATE")); 298 $objErr->doFunc(array("SHOP用メモ", 'note', LTEXT_LEN), array("MAX_LENGTH_CHECK")); 299 $objErr->doFunc(array("所持ポイント", "point", TEL_LEN) ,array("MAX_LENGTH_CHECK", "NUM_CHECK")); 300 return $objErr->arrErr; 301 302 } 303 304 //購入履歴情報の取得 305 function lfPurchaseHistory($customer_id){ 306 global $objQuery; 307 global $objPage; 308 309 $objPage->tpl_pageno = $_POST['search_pageno']; 310 $objPage->edit_customer_id = $customer_id; 311 312 // ページ送りの処理 313 $page_max = SEARCH_PMAX; 314 //購入履歴の件数取得 315 $objPage->tpl_linemax = $objQuery->count("dtb_order","customer_id=? AND del_flg = 0 ", array($customer_id)); 316 $linemax = $objPage->tpl_linemax; 317 318 // ページ送りの取得 319 $objNavi = new SC_PageNavi($_POST['search_pageno'], $linemax, $page_max, "fnNaviSearchPage2", NAVI_PMAX); 320 $objPage->arrPagenavi = $objNavi->arrPagenavi; 321 $objPage->arrPagenavi['mode'] = 'edit'; 322 $startno = $objNavi->start_row; 323 324 // 取得範囲の指定(開始行番号、行数のセット) 325 $objQuery->setlimitoffset($page_max, $startno); 326 // 表示順序 327 $order = "order_id DESC"; 328 $objQuery->setorder($order); 329 //購入履歴情報の取得 330 $arrPurchaseHistory = $objQuery->select("*", "dtb_order", "customer_id=? AND del_flg = 0 ", array($customer_id)); 331 332 return $arrPurchaseHistory; 333 } 334 335 //確認ページ用パスワード表示用 336 337 function lfPassLen($passlen){ 338 $ret = ""; 339 for ($i=0;$i<$passlen;true){ 340 $ret.="*"; 341 $i++; 342 } 343 return $ret; 344 } 345 346 15 $objPage = new LC_Page_Admin_Customer_Edit_Ex(); 16 $objPage->init(); 17 $objPage->process(); 18 register_shutdown_function(array($objPage, "destroy")); 347 19 ?>
Note: See TracChangeset
for help on using the changeset viewer.
