Changeset 15568 for branches/feature-module-update/html
- Timestamp:
- 2007/09/03 20:16:26 (17 years ago)
- Location:
- branches/feature-module-update/html/admin/customer
- Files:
-
- 2 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 ?> -
branches/feature-module-update/html/admin/customer/index.php
r15532 r15568 5 5 * http://www.lockon.co.jp/ 6 6 */ 7 require_once("../require.php");8 require_once(DATA_PATH . "include/csv_output.inc");9 7 10 //---- ページ表示用クラス 11 class LC_Page { 12 var $arrSession; 13 var $tpl_mode; 14 var $list_data; 15 var $search_data; 16 var $arrErr; 17 var $arrYear; 18 var $arrMonth; 19 var $arrDay; 20 var $arrJob; 21 var $arrSex; 22 var $arrPageMax; 23 var $count; 24 var $search_SQL; 25 26 var $tpl_strnavi; 27 28 var $arrHtmlmail; 8 // {{{ requires 9 require_once("../../require.php"); 10 require_once(CLASS_PATH . "page_extends/admin/customer/LC_Page_Admin_Customer_Ex.php"); 29 11 30 function LC_Page() { 31 $this->tpl_mainpage = 'customer/index.tpl'; 32 $this->tpl_mainno = 'customer'; 33 $this->tpl_subnavi = 'customer/subnavi.tpl'; 34 $this->tpl_subno = 'index'; 35 $this->tpl_pager = DATA_PATH . 'Smarty/templates/admin/pager.tpl'; 36 $this->tpl_subtitle = '顧客マスタ'; 37 38 global $arrPref; 39 $this->arrPref = $arrPref; 40 global $arrJob; 41 $arrJob["不明"] = "不明"; 42 $this->arrJob = $arrJob; 43 global $arrSex; 44 $this->arrSex = $arrSex; 45 global $arrPageRows; 46 $this->arrPageRows = $arrPageRows; 47 48 global $arrMAILMAGATYPE; 49 $this->arrMAILMAGATYPE = $arrMAILMAGATYPE; 50 $this->arrHtmlmail[''] = "すべて"; 51 $this->arrHtmlmail[1] = $arrMAILMAGATYPE[1]; 52 $this->arrHtmlmail[2] = $arrMAILMAGATYPE[2]; 53 } 54 } 12 // }}} 13 // {{{ generate page 55 14 56 //---- CSVダウンロード用 57 $arrColumnCSV= array( 58 0 => array("sql" => "customer_id", "csv" => "customer_id", "header" => "顧客ID"), 59 1 => array("sql" => "name01", "csv" => "name01", "header" => "名前1"), 60 2 => array("sql" => "name02", "csv" => "name02", "header" => "名前2"), 61 3 => array("sql" => "kana01", "csv" => "kana01", "header" => "フリガナ1"), 62 4 => array("sql" => "kana02", "csv" => "kana02", "header" => "フリガナ2"), 63 5 => array("sql" => "zip01", "csv" => "zip01", "header" => "郵便番号1"), 64 6 => array("sql" => "zip02", "csv" => "zip02", "header" => "郵便番号2"), 65 7 => array("sql" => "pref", "csv" => "pref", "header" => "都道府県"), 66 8 => array("sql" => "addr01", "csv" => "addr01", "header" => "住所1"), 67 9 => array("sql" => "addr02", "csv" => "addr02", "header" => "住所2"), 68 10 => array("sql" => "email", "csv" => "email", "header" => "E-MAIL"), 69 11 => array("sql" => "tel01", "csv" => "tel01", "header" => "TEL1"), 70 12 => array("sql" => "tel02", "csv" => "tel02", "header" => "TEL2"), 71 13 => array("sql" => "tel03", "csv" => "tel03", "header" => "TEL3"), 72 14 => array("sql" => "fax01", "csv" => "fax01", "header" => "FAX1"), 73 15 => array("sql" => "fax02", "csv" => "fax02", "header" => "FAX2"), 74 16 => array("sql" => "fax03", "csv" => "fax03", "header" => "FAX3"), 75 17 => array("sql" => "CASE WHEN sex = 1 THEN '男性' ELSE '女性' END AS sex", "csv" => "sex", "header" => "性別"), 76 18 => array("sql" => "job", "csv" => "job", "header" => "職業"), 77 19 => array("sql" => "cast(birth as date) AS birth", "csv" => "birth", "header" => "誕生日"), 78 20 => array("sql" => "cast(first_buy_date as date) AS first_buy_date", "csv" => "first_buy_date", "header" => "初回購入日"), 79 21 => array("sql" => "cast(last_buy_date as date) AS last_buy_date", "csv" => "last_buy_date", "header" => "最終購入日"), 80 22 => array("sql" => "buy_times", "csv" => "buy_times", "header" => "購入回数"), 81 23 => array("sql" => "point", "csv" => "point", "header" => "ポイント残高"), 82 24 => array("sql" => "note", "csv" => "note", "header" => "備考"), 83 25 => array("sql" => "cast(create_date as date) AS create_date", "csv" => "create_date", "header" => "登録日"), 84 26 => array("sql" => "cast(update_date as date) AS update_date", "csv" => "update_date", "header" => "更新日") 85 ); 86 87 //---- ページ初期設定 88 $objQuery = new SC_Query(); 89 $objPage = new LC_Page(); 90 $objView = new SC_AdminView(); 91 $objDate = new SC_Date(1901); 92 $objPage->arrYear = $objDate->getYear(); // 日付プルダウン設定 93 $objPage->arrMonth = $objDate->getMonth(); 94 $objPage->arrDay = $objDate->getDay(); 95 $objPage->objDate = $objDate; 96 97 // 認証可否の判定 98 $objSess = new SC_Session(); 99 sfIsSuccess($objSess); 100 101 // POST値の引き継ぎ 102 $objPage->arrForm = $_POST; 103 104 // ページ送り用 105 $objPage->arrHidden['search_pageno'] = $_POST['search_pageno']; 106 107 // 検索ワードの引き継ぎ 108 foreach ($_POST as $key => $val) { 109 switch($key) { 110 case 'sex': 111 $objPage->arrHidden[$key] = sfMergeParamCheckBoxes($val); 112 if(!is_array($val)) { 113 $objPage->arrForm[$key] = split("-", $val); 114 } 115 break; 116 default: 117 $objPage->arrHidden[$key] = $val; 118 break; 119 } 120 } 121 122 // 顧客削除 123 if ($_POST['mode'] == "delete") { 124 $sql = "SELECT status,email FROM dtb_customer WHERE customer_id = ? AND del_flg = 0"; 125 $result_customer = $objQuery->conn->getAll($sql, array($_POST["edit_customer_id"])); 126 127 if ($result_customer[0]["status"] == 2) { //本会員削除 128 $arrDel = array("del_flg" => 1, "update_date" => "NOW()"); 129 $objQuery->conn->autoExecute("dtb_customer", $arrDel, "customer_id = " .addslashes($_POST["edit_customer_id"]) ); 130 } elseif ($result_customer[0]["status"] == 1) { //仮会員削除 131 $sql = "DELETE FROM dtb_customer WHERE customer_id = ?"; 132 $objQuery->conn->query($sql, array($_POST["edit_customer_id"])); 133 } 134 } 135 if ($_POST['mode'] == "search" || $_POST['mode'] == "csv" || $_POST['mode'] == "delete" || $_POST['mode'] == "delete_all") { 136 // 入力文字の強制変換 137 lfConvertParam(); 138 // エラーチェック 139 $objPage->arrErr = lfCheckError($objPage->arrForm); 140 141 $where = "del_flg = 0"; 142 143 /* 入力エラーなし */ 144 if (count($objPage->arrErr) == 0) { 145 146 //-- 検索データ取得 147 $objSelect = new SC_CustomerList($objPage->arrForm, "customer"); 148 149 // 表示件数設定 150 $page_rows = $objPage->arrForm['page_rows']; 151 if(is_numeric($page_rows)) { 152 $page_max = $page_rows; 153 } else { 154 $page_max = SEARCH_PMAX; 155 } 156 157 if ($objPage->arrForm['search_pageno'] == 0){ 158 $objPage->arrForm['search_pageno'] = 1; 159 } 160 161 $offset = $page_max * ($objPage->arrForm['search_pageno'] - 1); 162 $objSelect->setLimitOffset($page_max, $offset); 163 164 if ($_POST["mode"] == 'csv') { 165 $searchSql = $objSelect->getListCSV($arrColumnCSV); 166 }else{ 167 $searchSql = $objSelect->getList(); 168 } 169 170 $objPage->search_data = $objQuery->conn->getAll($searchSql, $objSelect->arrVal); 171 172 switch($_POST['mode']) { 173 case 'csv': 174 $i = 0; 175 $header = ""; 176 177 // CSVカラム取得 178 $arrCsvOutput = (sfgetCsvOutput(2, " WHERE csv_id = 2 AND status = 1")); 179 180 if (count($arrCsvOutput) <= 0) break; 181 182 foreach($arrCsvOutput as $data) { 183 $arrColumn[] = $data["col"]; 184 if ($i != 0) $header .= ", "; 185 $header .= $data["disp_name"]; 186 $i ++; 187 } 188 $header .= "\n"; 189 190 //- 都道府県/職業の変換 191 for($i = 0; $i < count($objPage->search_data); $i ++) { 192 $objPage->search_data[$i]["pref"] = $arrPref[ $objPage->search_data[$i]["pref"] ]; 193 $objPage->search_data[$i]["job"] = $arrJob[ $objPage->search_data[$i]["job"] ]; 194 } 195 196 //- CSV出力 197 $data = lfGetCSVData($objPage->search_data, $arrColumn); 198 199 sfCSVDownload($header.$data); 200 exit; 201 break; 202 case 'delete_all': 203 // 検索結果をすべて削除 204 $where = "product_id IN (SELECT product_id FROM vw_products_nonclass AS noncls WHERE $where)"; 205 $sqlval['del_flg'] = 1; 206 $objQuery->update("dtb_products", $sqlval, $where, $arrval); 207 208 $sql = "SELECT status,email FROM dtb_customer WHERE customer_id = ? AND del_flg = 0"; 209 $result_customer = $objQuery->conn->getAll($sql, array($_POST["del_customer_id"])); 210 211 if ($result_customer[0]["status"] == 2) { //本会員削除 212 $arrDel = array("del_flg" => 1, "update_date" => "NOW()"); 213 $objQuery->conn->autoExecute("dtb_customer", $arrDel, "customer_id = " .addslashes($_POST["del_customer_id"]) ); 214 } elseif ($result_customer[0]["status"] == 1) { //仮会員削除 215 $sql = "DELETE FROM dtb_customer WHERE customer_id = ?"; 216 $objQuery->conn->query($sql, array($_POST["del_customer_id"])); 217 } 218 219 break; 220 default: 221 222 // 行数の取得 223 $linemax = $objQuery->conn->getOne( $objSelect->getListCount(), $objSelect->arrVal); 224 $objPage->tpl_linemax = $linemax; // 何件が該当しました。表示用 225 226 // ページ送りの取得 227 $objNavi = new SC_PageNavi($_POST['search_pageno'], $linemax, $page_max, "fnCustomerPage", NAVI_PMAX); 228 $startno = $objNavi->start_row; 229 $objPage->arrPagenavi = $objNavi->arrPagenavi; 230 } 231 } 232 } 233 234 $objPage->arrCatList = sfGetCategoryList(); 235 236 //---- ページ表示 237 $objView->assignobj($objPage); 238 $objView->display(MAIN_FRAME); 239 240 241 //-------------------------------------------------------------------------------------------------------------------------------------- 242 243 //---- 取得文字列の変換 244 function lfConvertParam() { 245 global $objPage; 246 247 /* 248 * 文字列の変換 249 * K : 「半角(ハンカク)片仮名」を「全角片仮名」に変換 250 * C : 「全角ひら仮名」を「全角かた仮名」に変換 251 * V : 濁点付きの文字を一文字に変換。"K","H"と共に使用します 252 * n : 「全角」数字を「半角(ハンカク)」に変換 253 * a : 全角英数字を半角英数字に変換する 254 */ 255 // カラム名とコンバート情報 256 $arrConvList['customer_id'] = "n" ; 257 $arrConvList['name'] = "aKV" ; 258 $arrConvList['pref'] = "n" ; 259 $arrConvList['kana'] = "CKV" ; 260 $arrConvList['b_start_year'] = "n" ; 261 $arrConvList['b_start_month'] = "n" ; 262 $arrConvList['b_start_day'] = "n" ; 263 $arrConvList['b_end_year'] = "n" ; 264 $arrConvList['b_end_month'] = "n" ; 265 $arrConvList['b_end_day'] = "n" ; 266 $arrConvList['tel'] = "n" ; 267 $arrConvList['birth_month'] = "n" ; 268 $arrConvList['email'] = "a" ; 269 $arrConvList['buy_total_from'] = "n" ; 270 $arrConvList['buy_total_to'] = "n" ; 271 $arrConvList['buy_times_from'] = "n" ; 272 $arrConvList['buy_times_to'] = "n" ; 273 $arrConvList['start_year'] = "n" ; 274 $arrConvList['start_month'] = "n" ; 275 $arrConvList['start_day'] = "n" ; 276 $arrConvList['end_year'] = "n" ; 277 $arrConvList['end_month'] = "n" ; 278 $arrConvList['end_day'] = "n" ; 279 $arrConvList['page_rows'] = "n" ; 280 $arrConvList['buy_start_year'] = "n" ; // 最終購入日 START 年 281 $arrConvList['buy_start_month'] = "n" ; // 最終購入日 START 月 282 $arrConvList['buy_start_day'] = "n" ; // 最終購入日 START 日 283 $arrConvList['buy_end_year'] = "n" ; // 最終購入日 END 年 284 $arrConvList['buy_end_month'] = "n" ; // 最終購入日 END 月 285 $arrConvList['buy_end_day'] = "n" ; // 最終購入日 END 日 286 $arrConvList['buy_product_name'] = "aKV" ; // 購入商品名 287 $arrConvList['buy_product_code'] = "aKV" ; // 購入商品コード 288 $arrConvList['category_id'] = "" ; // カテゴリ 289 290 // 文字変換 291 foreach ($arrConvList as $key => $val) { 292 // POSTされてきた値のみ変換する。 293 if(isset($objPage->arrForm[$key])) { 294 $objPage->arrForm[$key] = mb_convert_kana($objPage->arrForm[$key] ,$val); 295 } 296 } 297 } 298 299 300 //---- 入力エラーチェック 301 function lfCheckError($array) { 302 303 $objErr = new SC_CheckError($array); 304 305 $objErr->doFunc(array("顧客コード", "customer_id", INT_LEN), array("NUM_CHECK","MAX_LENGTH_CHECK")); 306 $objErr->doFunc(array("都道府県", "pref", 2), array("NUM_CHECK","MAX_LENGTH_CHECK")); 307 $objErr->doFunc(array("顧客名", "name", STEXT_LEN), array("MAX_LENGTH_CHECK")); 308 $objErr->doFunc(array("顧客名(カナ)", "kana", STEXT_LEN), array("SPTAB_CHECK" ,"MAX_LENGTH_CHECK", "KANABLANK_CHECK")); 309 $objErr->doFunc(array("誕生日(開始日)", "b_start_year", "b_start_month", "b_start_day"), array("CHECK_DATE")); 310 $objErr->doFunc(array("誕生日(終了日)", "b_end_year", "b_end_month", "b_end_day"), array("CHECK_DATE")); 311 $objErr->doFunc(array("誕生日(開始日)","誕生日(終了日)", "b_start_year", "b_start_month", "b_start_day", "b_end_year", "b_end_month", "b_end_day"), array("CHECK_SET_TERM")); 312 $objErr->doFunc(array("誕生月", "birth_month", 2), array("NUM_CHECK","MAX_LENGTH_CHECK")); 313 $objErr->doFunc(array('メールアドレス', "email", STEXT_LEN) ,array("EMAIL_CHAR_CHECK", "MAX_LENGTH_CHECK")); 314 $objErr->doFunc(array('携帯メールアドレス', "email_mobile", STEXT_LEN) ,array("EMAIL_CHAR_CHECK", "MAX_LENGTH_CHECK")); 315 $objErr->doFunc(array("電話番号", "tel", TEL_LEN), array("NUM_CHECK","MAX_LENGTH_CHECK")); 316 $objErr->doFunc(array("購入金額(開始)", "buy_total_from", INT_LEN), array("NUM_CHECK","MAX_LENGTH_CHECK")); 317 $objErr->doFunc(array("購入金額(終了)", "buy_total_to", INT_LEN), array("NUM_CHECK","MAX_LENGTH_CHECK")); 318 if ( (is_numeric($array["buy_total_from"]) && is_numeric($array["buy_total_to"]) ) && ($array["buy_total_from"] > $array["buy_total_to"]) ) $objErr->arrErr["buy_total_from"] .= "※ 購入金額の指定範囲が不正です。"; 319 $objErr->doFunc(array("購入回数(開始)", "buy_times_from", INT_LEN), array("NUM_CHECK","MAX_LENGTH_CHECK")); 320 $objErr->doFunc(array("購入回数(終了)", "buy_times_to", INT_LEN), array("NUM_CHECK","MAX_LENGTH_CHECK")); 321 if ( (is_numeric($array["buy_times_from"]) && is_numeric($array["buy_times_to"]) ) && ($array["buy_times_from"] > $array["buy_times_to"]) ) $objErr->arrErr["buy_times_from"] .= "※ 購入回数の指定範囲が不正です。"; 322 $objErr->doFunc(array("登録・更新日(開始日)", "start_year", "start_month", "start_day",), array("CHECK_DATE")); 323 $objErr->doFunc(array("登録・更新日(終了日)", "end_year", "end_month", "end_day"), array("CHECK_DATE")); 324 $objErr->doFunc(array("登録・更新日(開始日)","登録・更新日(終了日)", "start_year", "start_month", "start_day", "end_year", "end_month", "end_day"), array("CHECK_SET_TERM")); 325 $objErr->doFunc(array("表示件数", "page_rows", 3), array("NUM_CHECK","MAX_LENGTH_CHECK")); 326 $objErr->doFunc(array("最終購入日(開始日)", "buy_start_year", "buy_start_month", "buy_start_day",), array("CHECK_DATE")); //最終購入日(開始日) 327 $objErr->doFunc(array("最終購入(終了日)", "buy_end_year", "buy_end_month", "buy_end_day"), array("CHECK_DATE")); //最終購入日(終了日) 328 //購入金額(from) > 購入金額(to) の場合はエラーとする 329 $objErr->doFunc(array("最終購入日(開始日)","登録・更新日(終了日)", "buy_start_year", "buy_start_month", "buy_start_day", "buy_end_year", "buy_end_month", "buy_end_day"), array("CHECK_SET_TERM")); 330 $objErr->doFunc(array("購入商品コード", "buy_product_code", STEXT_LEN), array("MAX_LENGTH_CHECK")); //購入商品コード 331 $objErr->doFunc(array("購入商品名", "buy_product_name", STEXT_LEN), array("MAX_LENGTH_CHECK")); //購入商品名称 332 333 return $objErr->arrErr; 334 } 335 336 function lfSetWhere($arrForm){ 337 foreach ($arrForm as $key => $val) { 338 339 $val = sfManualEscape($val); 340 341 if($val == "") continue; 342 343 switch ($key) { 344 case 'product_id': 345 $where .= " AND product_id = ?"; 346 $arrval[] = $val; 347 break; 348 case 'product_class_id': 349 $where .= " AND product_id IN (SELECT product_id FROM dtb_products_class WHERE product_class_id = ?)"; 350 $arrval[] = $val; 351 break; 352 case 'name': 353 $where .= " AND name ILIKE ?"; 354 $arrval[] = "%$val%"; 355 break; 356 case 'category_id': 357 list($tmp_where, $tmp_arrval) = sfGetCatWhere($val); 358 if($tmp_where != "") { 359 $where.= " AND $tmp_where"; 360 $arrval = array_merge($arrval, $tmp_arrval); 361 } 362 break; 363 case 'product_code': 364 $where .= " AND product_id IN (SELECT product_id FROM dtb_products_class WHERE product_code ILIKE ? GROUP BY product_id)"; 365 $arrval[] = "%$val%"; 366 break; 367 case 'startyear': 368 $date = sfGetTimestamp($_POST['startyear'], $_POST['startmonth'], $_POST['startday']); 369 $where.= " AND update_date >= ?"; 370 $arrval[] = $date; 371 break; 372 case 'endyear': 373 $date = sfGetTimestamp($_POST['endyear'], $_POST['endmonth'], $_POST['endday']); 374 $where.= " AND update_date <= ?"; 375 $arrval[] = $date; 376 break; 377 case 'product_flag': 378 global $arrSTATUS; 379 $product_flag = sfSearchCheckBoxes($val); 380 if($product_flag != "") { 381 $where.= " AND product_flag LIKE ?"; 382 $arrval[] = $product_flag; 383 } 384 break; 385 case 'status': 386 $tmp_where = ""; 387 foreach ($val as $element){ 388 if ($element != ""){ 389 if ($tmp_where == ""){ 390 $tmp_where.="AND (status LIKE ? "; 391 }else{ 392 $tmp_where.="OR status LIKE ? "; 393 } 394 $arrval[]=$element; 395 } 396 } 397 if ($tmp_where != ""){ 398 $tmp_where.=")"; 399 $where.= "$tmp_where"; 400 } 401 break; 402 default: 403 break; 404 } 405 } 406 } 407 408 //---- CSV出力用データ取得 409 function lfGetCSVData( $array, $arrayIndex){ 410 411 for ($i=0; $i<count($array); $i++){ 412 413 for ($j=0; $j<count($array[$i]); $j++ ){ 414 if ( $j > 0 ) $return .= ","; 415 $return .= "\""; 416 if ( $arrayIndex ){ 417 $return .= mb_ereg_replace("<","<",mb_ereg_replace( "\"","\"\"",$array[$i][$arrayIndex[$j]] )) ."\""; 418 } else { 419 $return .= mb_ereg_replace("<","<",mb_ereg_replace( "\"","\"\"",$array[$i][$j] )) ."\""; 420 } 421 } 422 $return .= "\n"; 423 } 424 425 return $return; 426 } 427 428 15 $objPage = new LC_Page_Admin_Customer_Ex(); 16 $objPage->init(); 17 $objPage->process(); 18 register_shutdown_function(array($objPage, "destroy")); 429 19 ?>
Note: See TracChangeset
for help on using the changeset viewer.