Changeset 20160
- Timestamp:
- 2011/02/14 01:31:44 (13 years ago)
- Location:
- branches/version-2_5-dev
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_5-dev/data/Smarty/templates/admin/customer/index.tpl
r20116 r20160 75 75 <form name="search_form" id="search_form" method="post" action="?"> 76 76 <input type="hidden" name="mode" value="search" /> 77 <input type="hidden" name="<!--{$smarty.const.TRANSACTION_ID_NAME}-->" value="<!--{$transactionid}-->" /> 77 78 <h2>検索条件設定</h2> 78 79 … … 283 284 <input type="hidden" name="search_pageno" value="<!--{$smarty.post.search_pageno|h}-->" /> 284 285 <input type="hidden" name="csv_mode" value="" /> 286 <input type="hidden" name="<!--{$smarty.const.TRANSACTION_ID_NAME}-->" value="<!--{$transactionid}-->" /> 285 287 286 288 <h2>検索結果一覧</h2> … … 288 290 <span class="attention"><!--検索結果数--><!--{$tpl_linemax}-->件</span> が該当しました。 289 291 <!--検索結果--> 290 <!--{if $smarty.const.ADMIN_MODE == '1'}-->291 <a class="btn-normal" href="javascript:;" onclick="fnModeSubmit('delete_all','',''); return false;">検索結果をすべて削除</a>292 <!--{/if}-->293 292 <a class="btn-normal" href="javascript:;" onclick="fnModeSubmit('csv','',''); return false;">CSV ダウンロード</a> 294 293 <a class="btn-normal" href="javascript:;" onclick="location.href='../contents/csv.php?tpl_subno_csv=customer'">CSV 出力項目設定</a> … … 296 295 <!--{include file=$tpl_pager}--> 297 296 298 <!--{if count($ search_data) > 0}-->297 <!--{if count($arrData) > 0}--> 299 298 300 299 <!--検索結果表示テーブル--> … … 320 319 <th>メールアドレス</th> 321 320 </tr> 322 <!--{foreach from=$ search_data item=row}-->321 <!--{foreach from=$arrData item=row}--> 323 322 <tr> 324 323 <td class="center" rowspan="2"><!--{if $row.status eq 1}-->仮<!--{else}-->本<!--{/if}--></td> -
branches/version-2_5-dev/data/class/SC_FormParam.php
r20133 r20160 204 204 case 'MIN_LENGTH_CHECK': 205 205 case 'NUM_COUNT_CHECK': 206 case 'KANABLANK_CHECK': 206 207 $this->recursionCheck($this->disp_name[$cnt], $func, 207 208 $this->param[$cnt], $objErr->arrErr, -
branches/version-2_5-dev/data/class/helper/SC_Helper_Customer.php
r20156 r20160 250 250 251 251 /** 252 * 顧客ID指定またはwhere条件指定での顧客情報取得(単一行データ) 253 * 254 * TODO: sfGetCustomerDataと統合したい 255 * 256 * @param integer $customer_id 顧客ID (指定無しでも構わないが、Where条件を入れる事) 257 * @param string $add_where 追加WHERE条件 258 * @param array $arrAddVal 追加WHEREパラメーター 259 * @access public 260 * @return array 対象顧客データ 261 */ 262 function sfGetCustomerDataFromId($customer_id, $add_where = '', $arrAddVal = array()) { 263 $objQuery =& SC_Query::getSingletonInstance(); 264 if($where == '') { 265 $where = 'customer_id = ?'; 266 $arrData = $objQuery->getRow("*", "dtb_customer", $where, array($customer_id)); 267 }else{ 268 if(SC_Utils_Ex::sfIsInt($customer_id)) { 269 $where .= ' AND customer_id = ?'; 270 $arrAddVal[] = $customer_id; 271 } 272 $arrData = $objQuery->getRow("*", "dtb_customer", $where, $arrAddVal); 273 } 274 return $arrData; 275 } 276 277 /** 252 278 * sfGetUniqSecretKey 253 279 * … … 461 487 return $objErr; 462 488 } 463 464 489 } -
branches/version-2_5-dev/data/class/helper/SC_Helper_Mail.php
r20116 r20160 265 265 return false; 266 266 } 267 268 /** 269 * 登録メールを送信する。 270 * 271 * @param string $secret_key 顧客固有キー 272 * @param integer $customer_id 顧客ID 273 * @param boolean $is_mobile false(default):PCアドレスにメールを送る true:携帯アドレスにメールを送る 274 * @return boolean true:成功 false:失敗 275 */ 276 function sfSendRegistMail($secret_key, $customer_id = '', $is_mobile = false) { 277 // 顧客データの取得 278 if(SC_Utils_Ex::sfIsInt($customer_id)) { 279 $arrCustomerData = SC_Helper_Customer_Ex::sfGetCustomerDataFromId($customer_id); 280 }else{ 281 $arrCustomerData = SC_Helper_Customer_Ex::sfGetCustomerDataFromId('', "secret_key = ?", array($secret_key)); 282 } 283 if(SC_Utils_Ex::isBlank($arrCustomerData)) { 284 return false; 285 } 286 287 $CONF = SC_Helper_DB_Ex::sfGetBasisData(); 288 289 $objMailText = new SC_SiteView(); 290 $objMailText->assign("CONF", $CONF); 291 $objMailText->assign("name", $arrCustomerData['name01'] . $arrCustomerData['name02']); 292 $objMailText->assign("uniqid", $arrCustomerData['secret_key']); 293 $objMailText->assignobj($arrCustomerData); 294 $objMailText->assignobj($this); 295 296 $objHelperMail = new SC_Helper_Mail_Ex(); 297 298 // 仮会員が有効の場合 299 if(CUSTOMER_CONFIRM_MAIL == true and $arrCustomerData['status'] == 1) { 300 $subject = $objHelperMail->sfMakeSubject('会員登録のご確認'); 301 $toCustomerMail = $objMailText->fetch("mail_templates/customer_mail.tpl"); 302 } else { 303 $subject = $objHelperMail->sfMakeSubject('会員登録のご完了'); 304 $toCustomerMail = $objMailText->fetch("mail_templates/customer_regist_mail.tpl"); 305 } 306 307 $objMail = new SC_SendMail(); 308 $objMail->setItem( 309 '' // 宛先 310 , $subject // サブジェクト 311 , $toCustomerMail // 本文 312 , $CONF["email03"] // 配送元アドレス 313 , $CONF["shop_name"] // 配送元 名前 314 , $CONF["email03"] // reply_to 315 , $CONF["email04"] // return_path 316 , $CONF["email04"] // Errors_to 317 , $CONF["email01"] // Bcc 318 ); 319 // 宛先の設定 320 if($is_mobile) { 321 $to_addr = $arrCustomerData["email_mobile"]; 322 }else{ 323 $to_addr = $arrCustomerData["email"]; 324 } 325 $objMail->setTo($to_addr, $arrCustomerData["name01"] . $arrCustomerData["name02"] ." 様"); 326 327 $objMail->sendMail(); 328 return true; 329 } 267 330 } 268 331 ?> -
branches/version-2_5-dev/data/class/pages/admin/customer/LC_Page_Admin_Customer.php
r20128 r20160 53 53 $masterData = new SC_DB_MasterData_Ex(); 54 54 $this->arrPref = $masterData->getMasterData('mtb_pref'); 55 56 55 $this->arrJob = $masterData->getMasterData("mtb_job"); 57 56 $this->arrJob["不明"] = "不明"; 58 57 $this->arrSex = $masterData->getMasterData("mtb_sex"); 59 58 $this->arrPageRows = $masterData->getMasterData("mtb_page_rows"); 60 $this->arrMAILMAGATYPE = $masterData->getMasterData("mtb_mail_magazine_type"); 61 $this->arrHtmlmail[''] = "すべて"; 62 $this->arrHtmlmail[1] = $this->arrMAILMAGATYPE[1]; 63 $this->arrHtmlmail[2] = $this->arrMAILMAGATYPE[2]; 64 65 $this->arrStatus[1] = "仮会員"; 66 $this->arrStatus[2] = "本会員"; 67 68 //---- CSVダウンロード用 69 $this->arrColumnCSV = array( 70 array( 71 "sql" => "customer_id", 72 "csv" => "customer_id", 73 "header" => "顧客ID" 74 ), 75 array( 76 "sql" => "name01", 77 "csv" => "name01", 78 "header" => "名前1" 79 ), 80 array( 81 "sql" => "name02", 82 "csv" => "name02", 83 "header" => "名前2" 84 ), 85 array( 86 "sql" => "kana01", 87 "csv" => "kana01", 88 "header" => "お名前(フリガナ・姓)" 89 ), 90 array( 91 "sql" => "kana02", 92 "csv" => "kana02", 93 "header" => "お名前(フリガナ・名)" 94 ), 95 array( 96 "sql" => "zip01", 97 "csv" => "zip01", 98 "header" => "郵便番号1" 99 ), 100 array( 101 "sql" => "zip02", 102 "csv" => "zip02", 103 "header" => "郵便番号2" 104 ), 105 array( 106 "sql" => "pref", 107 "csv" => "pref", 108 "header" => "都道府県" 109 ), 110 array( 111 "sql" => "addr01", 112 "csv" => "addr01", 113 "header" => "住所1" 114 ), 115 array( 116 "sql" => "addr02", 117 "csv" => "addr02", 118 "header" => "住所2" 119 ), 120 array( 121 "sql" => "email", 122 "csv" => "email", 123 "header" => "E-MAIL" 124 ), 125 array( 126 "sql" => "tel01", 127 "csv" => "tel01", 128 "header" => "TEL1" 129 ), 130 array( 131 "sql" => "tel02", 132 "csv" => "tel02", 133 "header" => "TEL2" 134 ), 135 array( 136 "sql" => "tel03", 137 "csv" => "tel03", 138 "header" => "TEL3" 139 ), 140 array( 141 "sql" => "fax01", 142 "csv" => "fax01", 143 "header" => "FAX1" 144 ), 145 array( 146 "sql" => "fax02", 147 "csv" => "fax02", 148 "header" => "FAX2" 149 ), 150 array( 151 "sql" => "fax03", 152 "csv" => "fax03", 153 "header" => "FAX3" 154 ), 155 array( 156 "sql" => "CASE WHEN sex = 1 THEN '男性' ELSE '女性' END AS sex", 157 "csv" => "sex", 158 "header" => "性別" 159 ), 160 array( 161 "sql" => "job", 162 "csv" => "job", 163 "header" => "職業" 164 ), 165 array( 166 "sql" => "cast(birth as date) AS birth", 167 "csv" => "birth", 168 "header" => "誕生日" 169 ), 170 array( 171 "sql" => "cast(first_buy_date as date) AS first_buy_date", 172 "csv" => "first_buy_date", 173 "header" => "初回購入日" 174 ), 175 array( 176 "sql" => "cast(last_buy_date as date) AS last_buy_date", 177 "csv" => "last_buy_date", 178 "header" => "最終購入日" 179 ), 180 array( 181 "sql" => "buy_times", 182 "csv" => "buy_times", 183 "header" => "購入回数" 184 ), 185 array( 186 "sql" => "point", 187 "csv" => "point", 188 "header" => "ポイント残高" 189 ), 190 array( 191 "sql" => "note", 192 "csv" => "note", 193 "header" => "備考" 194 ), 195 array( 196 "sql" => "cast(create_date as date) AS create_date", 197 "csv" => "create_date", 198 "header" => "登録日" 199 ), 200 array( 201 "sql" => "cast(update_date as date) AS update_date", 202 "csv" => "update_date", 203 "header" => "更新日" 204 ), 205 ); 59 $this->arrStatus = $masterData->getMasterData("mtb_customer_status"); 60 61 // 日付プルダウン設定 62 $objDate = new SC_Date(BIRTH_YEAR); 63 $this->arrYear = $objDate->getYear(); 64 $this->arrMonth = $objDate->getMonth(); 65 $this->arrDay = $objDate->getDay(); 66 $this->objDate = $objDate; 67 68 // カテゴリ一覧設定 69 $objDb = new SC_Helper_DB_Ex(); 70 $this->arrCatList = $objDb->sfGetCategoryList(); 71 206 72 $this->httpCacheControl('nocache'); 207 73 } … … 223 89 */ 224 90 function action() { 225 //---- ページ初期設定226 $objQuery = new SC_Query();227 $objView = new SC_AdminView();228 $objDate = new SC_Date(1901);229 $objDb = new SC_Helper_DB_Ex();230 $this->arrYear = $objDate->getYear(); // 日付プルダウン設定231 $this->arrMonth = $objDate->getMonth();232 $this->arrDay = $objDate->getDay();233 $this->objDate = $objDate;234 235 91 // 認証可否の判定 236 $objSess = new SC_Session(); 237 SC_Utils_Ex::sfIsSuccess($objSess); 238 239 // POST値の引き継ぎ 240 $this->arrForm = $_POST; 241 242 // ページ送り用 243 $this->arrHidden['search_pageno'] = 244 isset($_POST['search_pageno']) ? $_POST['search_pageno'] : ""; 245 92 SC_Utils_Ex::sfIsSuccess(new SC_Session()); 93 94 // 不正アクセスチェック 95 if ($_SERVER["REQUEST_METHOD"] == "POST") { 96 if (!SC_Helper_Session_Ex::isValidToken()) { 97 SC_Utils_Ex::sfDispError(INVALID_MOVE_ERRORR); 98 } 99 } 100 101 // パラメータ管理クラス 102 $objFormParam = new SC_FormParam(); 103 // パラメータ設定 104 $this->lfInitParam($objFormParam); 105 $objFormParam->setParam($_POST); 106 $objFormParam->convParam(); 107 // パラメーター読み込み 108 $this->arrForm = $this->lfGetFormParam($objFormParam); 246 109 // 検索ワードの引き継ぎ 247 foreach ($_POST as $key => $val) { 248 switch($key) { 249 case 'sex': 250 case 'status': 251 $this->arrHidden[$key] = SC_Utils_Ex::sfMergeParamCheckBoxes($val); 252 if(!is_array($val)) { 253 $this->arrForm[$key] = split("-", $val); 254 } 255 break; 256 default: 257 $this->arrHidden[$key] = $val; 258 break; 259 } 260 } 261 //TODO: 要リファクタリング(MODE switch 2か所で行われている) 110 $this->arrHidden = $this->lfGetSearchWords($objFormParam); 111 // 入力パラメーターチェック 112 $this->arrErr = $this->lfCheckError($objFormParam); 113 if(!SC_Utils_Ex::isBlank($this->arrErr)) { 114 return; 115 } 116 117 // モードによる処理切り替え 262 118 switch ($this->getMode()) { 263 119 case 'delete': 264 // 顧客削除 265 $sql = "SELECT status,email FROM dtb_customer WHERE customer_id = ? AND del_flg = 0"; 266 $result_customer = $objQuery->getAll($sql, array($_POST["edit_customer_id"])); 267 268 if ($result_customer[0]["status"] == 2) { //本会員削除 269 $objQuery->update("dtb_customer", array('del_flg' => 1, "update_date" => "now"), "customer_id = ?", array($_POST["edit_customer_id"])); 270 } elseif ($result_customer[0]["status"] == 1) { //仮会員削除 271 $sql = "DELETE FROM dtb_customer WHERE customer_id = ?"; 272 $objQuery->query($sql, array($_POST["edit_customer_id"])); 273 } 120 $this->is_delete = $this->lfDoDeleteCustomer($objFormParam->getValue('edit_customer_id')); 121 list($this->tpl_linemax, $this->arrData, $this->objNavi) = $this->lfDoSearch($this->arrForm); 122 $this->arrPagenavi = $this->objNavi->arrPagenavi; 274 123 break; 275 124 case 'resend_mail': 276 // 登録メール再送 277 $arrRet = $objQuery->select("name01, name02, secret_key, email, email_mobile", "dtb_customer","customer_id = ? AND del_flg <> 1 AND status = 1", array($_POST["edit_customer_id"])); 278 if( is_array($arrRet) === true && count($arrRet) > 0 ){ 279 280 $this->name01 = $arrRet[0]['name01']; 281 $this->name02 = $arrRet[0]['name02']; 282 $this->uniqid = $arrRet[0]['secret_key']; 283 284 $CONF = $objDb->sfGetBasisData(); 285 $this->CONF = $CONF; 286 /** 287 * 携帯メールアドレスが登録されていれば携帯サイトから仮会員登録したものと判定する。 288 * TODO: とりあえずの簡易的な判定なので、将来的には判定ルーチンを修正した方が良い。 289 */ 290 if (!empty($arrRet[0]['email_mobile'])) { 291 $objMailText = new SC_MobileView(false); 292 $this->to_name01 = $arrRet[0]['name01']; 293 $this->to_name02 = $arrRet[0]['name02']; 294 } else { 295 $objMailText = new SC_SiteView(false); 296 } 297 $objMailText->assignobj($this); 298 $mailHelper = new SC_Helper_Mail_Ex(); 299 300 $subject = $mailHelper->sfMakesubject('会員登録のご確認'); 301 $toCustomerMail = $objMailText->fetch("mail_templates/customer_mail.tpl"); 302 303 $objMail = new SC_SendMail(); 304 $objMail->setItem( 305 '' // 宛先 306 , $subject // サブジェクト 307 , $toCustomerMail // 本文 308 , $CONF["email03"] // 配送元アドレス 309 , $CONF["shop_name"]// 配送元 名前 310 , $CONF["email03"] // reply_to 311 , $CONF["email04"] // return_path 312 , $CONF["email04"] // Errors_to 313 ); 314 // 宛先の設定 315 $name = $this->name01 . $this->name02 ." 様"; 316 $objMail->setTo($arrRet[0]["email"], $name); 317 $objMail->sendMail(); 318 } 125 $this->is_resendmail = $this->lfDoResendMail($objFormParam->getValue('edit_customer_id')); 126 list($this->tpl_linemax, $this->arrData, $this->objNavi) = $this->lfDoSearch($this->arrForm); 127 $this->arrPagenavi = $this->objNavi->arrPagenavi; 128 break; 129 case 'search': 130 list($this->tpl_linemax, $this->arrData, $this->objNavi) = $this->lfDoSearch($this->arrForm); 131 $this->arrPagenavi = $this->objNavi->arrPagenavi; 132 break; 133 case 'csv': 134 $this->lfDoCSV($this->arrForm); 135 exit; 319 136 break; 320 137 default: … … 322 139 } 323 140 324 //TODO: 要リファクタリング(MODE switch 2か所で行われている) 325 switch ($this->getMode()) { 326 case 'search': 327 case 'csv': 328 case 'delete': 329 case 'delete_all': 330 case 'resend_mail': 331 // 入力文字の強制変換 332 $this->lfConvertParam(); 333 // エラーチェック 334 $this->arrErr = $this->lfCheckError($this->arrForm); 335 336 $where = "del_flg = 0"; 337 338 /* 入力エラーなし */ 339 if (count($this->arrErr) == 0) { 340 341 //-- 検索データ取得 342 $objSelect = new SC_CustomerList($this->arrForm, "customer"); 343 344 // 表示件数設定 345 $page_rows = $this->arrForm['page_rows']; 346 if(is_numeric($page_rows)) { 347 $page_max = $page_rows; 348 } else { 349 $page_max = SEARCH_PMAX; 350 } 351 352 if (!isset($this->arrForm['search_pageno'])) $this->arrForm['search_pageno'] = ""; 353 354 if ($this->arrForm['search_pageno'] == 0){ 355 $this->arrForm['search_pageno'] = 1; 356 } 357 358 $offset = $page_max * ($this->arrForm['search_pageno'] - 1); 359 $objSelect->setLimitOffset($page_max, $offset); 360 //TODO 要リファクタリング(MODE if利用) 361 if ($this->getMode() == 'csv') { 362 $searchSql = $objSelect->getListCSV($this->arrColumnCSV); 363 }else{ 364 $searchSql = $objSelect->getList(); 365 } 366 367 $this->search_data = $objQuery->getAll($searchSql, $objSelect->arrVal); 368 //TODO: 要リファクタリング(MODE switch 入れ子) 369 switch($this->getMode()) { 370 case 'csv': 371 require_once(CLASS_EX_REALDIR . "helper_extends/SC_Helper_CSV_Ex.php"); 372 373 $objCSV = new SC_Helper_CSV_Ex(); 374 $i = 0; 375 $header = ""; 376 377 // CSVカラム取得 378 $arrCsvOutput = ($objCSV->sfGetCsvOutput(2, 'status = 1')); 379 380 if (count($arrCsvOutput) <= 0) break; 381 382 foreach($arrCsvOutput as $data) { 383 $arrColumn[] = $data["col"]; 384 if ($i != 0) $header .= ", "; 385 $header .= $data["disp_name"]; 386 $i ++; 387 } 388 $header .= "\n"; 389 390 //- 都道府県/職業の変換 391 for($i = 0; $i < count($this->search_data); $i ++) { 392 $this->search_data[$i]["pref"] = $this->arrPref[ $this->search_data[$i]["pref"] ]; 393 $this->search_data[$i]["job"] = $this->arrJob[ $this->search_data[$i]["job"] ]; 394 } 395 396 //- CSV出力 397 $data = SC_Utils_Ex::getCSVData($this->search_data, $arrColumn); 398 399 400 // CSVを送信する。 401 list($fime_name, $data) = SC_Utils_Ex::sfGetCSVData($head.$data); 402 $this->sendResponseCSV($fime_name, $data); 403 exit; 404 break; 405 case 'delete_all': 406 // 検索結果をすべて削除 407 $where = "product_id IN (SELECT product_id FROM SC_Product::alldtlSQL() WHERE $where)"; 408 $sqlval['del_flg'] = 1; 409 $objQuery->update("dtb_products", $sqlval, $where, $arrval); 410 411 $sql = "SELECT status,email FROM dtb_customer WHERE customer_id = ? AND del_flg = 0"; 412 $result_customer = $objQuery->getAll($sql, array($_POST["del_customer_id"])); 413 414 if ($result_customer[0]["status"] == 2) { //本会員削除 415 $objQuery->update("dtb_customer", array('del_flg' => 1, "update_date" => "now"), "customer_id = ?", array($_POST["edit_customer_id"])); 416 } elseif ($result_customer[0]["status"] == 1) { //仮会員削除 417 $sql = "DELETE FROM dtb_customer WHERE customer_id = ?"; 418 $objQuery->query($sql, array($_POST["del_customer_id"])); 419 } 420 421 break; 422 default: 423 424 // 行数の取得 425 $linemax = $objQuery->getOne( $objSelect->getListCount(), $objSelect->arrVal); 426 $this->tpl_linemax = $linemax; // 何件が該当しました。表示用 427 428 // ページ送りの取得 429 $objNavi = new SC_PageNavi($this->arrHidden['search_pageno'], 430 $linemax, $page_max, 431 "fnCustomerPage", NAVI_PMAX); 432 $startno = $objNavi->start_row; 433 $this->arrPagenavi = $objNavi->arrPagenavi; 434 } 435 } 436 break; 437 default: 438 break; 439 } 440 441 $this->arrCatList = $objDb->sfGetCategoryList(); 141 // トランザクションID 142 $this->transactionid = SC_Helper_Session_Ex::getToken(); 442 143 } 443 144 … … 451 152 } 452 153 453 //---- 取得文字列の変換 454 function lfConvertParam() { 455 /* 456 * 文字列の変換 457 * K : 「半角(ハンカク)片仮名」を「全角片仮名」に変換 458 * C : 「全角ひら仮名」を「全角かた仮名」に変換 459 * V : 濁点付きの文字を一文字に変換。"K","H"と共に使用します 460 * n : 「全角」数字を「半角(ハンカク)」に変換 461 * a : 全角英数字を半角英数字に変換する 462 */ 463 // カラム名とコンバート情報 464 $arrConvList['customer_id'] = "n" ; 465 $arrConvList['name'] = "aKV" ; 466 $arrConvList['pref'] = "n" ; 467 $arrConvList['kana'] = "CKV" ; 468 $arrConvList['b_start_year'] = "n" ; 469 $arrConvList['b_start_month'] = "n" ; 470 $arrConvList['b_start_day'] = "n" ; 471 $arrConvList['b_end_year'] = "n" ; 472 $arrConvList['b_end_month'] = "n" ; 473 $arrConvList['b_end_day'] = "n" ; 474 $arrConvList['tel'] = "n" ; 475 $arrConvList['birth_month'] = "n" ; 476 $arrConvList['email'] = "a" ; 477 $arrConvList['buy_total_from'] = "n" ; 478 $arrConvList['buy_total_to'] = "n" ; 479 $arrConvList['buy_times_from'] = "n" ; 480 $arrConvList['buy_times_to'] = "n" ; 481 $arrConvList['start_year'] = "n" ; 482 $arrConvList['start_month'] = "n" ; 483 $arrConvList['start_day'] = "n" ; 484 $arrConvList['end_year'] = "n" ; 485 $arrConvList['end_month'] = "n" ; 486 $arrConvList['end_day'] = "n" ; 487 $arrConvList['page_rows'] = "n" ; 488 $arrConvList['buy_start_year'] = "n" ; // 最終購入日 START 年 489 $arrConvList['buy_start_month'] = "n" ; // 最終購入日 START 月 490 $arrConvList['buy_start_day'] = "n" ; // 最終購入日 START 日 491 $arrConvList['buy_end_year'] = "n" ; // 最終購入日 END 年 492 $arrConvList['buy_end_month'] = "n" ; // 最終購入日 END 月 493 $arrConvList['buy_end_day'] = "n" ; // 最終購入日 END 日 494 $arrConvList['buy_product_name'] = "aKV" ; // 購入商品名 495 $arrConvList['buy_product_code'] = "aKV" ; // 購入商品コード 496 $arrConvList['category_id'] = "" ; // カテゴリ 497 498 // 文字変換 499 foreach ($arrConvList as $key => $val) { 500 // POSTされてきた値のみ変換する。 501 if(isset($this->arrForm[$key])) { 502 $this->arrForm[$key] = mb_convert_kana($this->arrForm[$key] ,$val); 503 } 504 } 505 } 506 507 //---- 入力エラーチェック 508 function lfCheckError($array) { 509 510 $objErr = new SC_CheckError($array); 511 512 $objErr->doFunc(array("顧客コード", "customer_id", INT_LEN), array("NUM_CHECK","MAX_LENGTH_CHECK")); 513 $objErr->doFunc(array("都道府県", "pref", 2), array("NUM_CHECK","MAX_LENGTH_CHECK")); 514 $objErr->doFunc(array("顧客名", "name", STEXT_LEN), array("MAX_LENGTH_CHECK")); 515 $objErr->doFunc(array("顧客名(カナ)", "kana", STEXT_LEN), array("SPTAB_CHECK" ,"MAX_LENGTH_CHECK", "KANABLANK_CHECK")); 154 /** 155 * パラメーター情報の初期化 156 * 157 * @param array $objFormParam フォームパラメータークラス 158 * @return void 159 */ 160 function lfInitParam(&$objFormParam) { 161 $objFormParam->addParam('顧客コード', 'customer_id', ID_MAX_LEN, 'n', array("NUM_CHECK","MAX_LENGTH_CHECK")); 162 $objFormParam->addParam('顧客名', 'name', STEXT_LEN, 'KVa', array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 163 $objFormParam->addParam('顧客名(カナ)', 'kana', STEXT_LEN, 'CKV', array("SPTAB_CHECK", "MAX_LENGTH_CHECK", "KANABLANK_CHECK")); 164 $objFormParam->addParam('都道府県', 'pref', INT_LEN, 'n', array("NUM_CHECK","MAX_LENGTH_CHECK")); 165 $objFormParam->addParam('誕生日(開始年)', 'b_start_year', 4, 'n', array("NUM_CHECK","MAX_LENGTH_CHECK")); 166 $objFormParam->addParam('誕生日(開始月)', 'b_start_month', 2, 'n', array("NUM_CHECK","MAX_LENGTH_CHECK")); 167 $objFormParam->addParam('誕生日(開始日)', 'b_start_day', 2, 'n', array("NUM_CHECK","MAX_LENGTH_CHECK")); 168 169 $objFormParam->addParam('誕生日(終了年)', 'b_end_year', 4, 'n', array("NUM_CHECK","MAX_LENGTH_CHECK")); 170 $objFormParam->addParam('誕生日(終了月)', 'b_end_month', 2, 'n', array("NUM_CHECK","MAX_LENGTH_CHECK")); 171 $objFormParam->addParam('誕生日(終了日)', 'b_end_day', 2, 'n', array("NUM_CHECK","MAX_LENGTH_CHECK")); 172 $objFormParam->addParam('誕生月', 'birth_month', 2, 'n', array("NUM_CHECK","MAX_LENGTH_CHECK")); 173 $objFormParam->addParam('メールアドレス', 'email', MTEXT_LEN, 'a', array("SPTAB_CHECK", "EMAIL_CHAR_CHECK", "MAX_LENGTH_CHECK")); 174 $objFormParam->addParam('携帯メールアドレス', 'email_mobile', MTEXT_LEN, 'a', array("SPTAB_CHECK", "EMAIL_CHAR_CHECK", "MAX_LENGTH_CHECK")); 175 $objFormParam->addParam('電話番号', 'birth_month', TEL_LEN, 'n', array("NUM_CHECK","MAX_LENGTH_CHECK")); 176 $objFormParam->addParam('購入金額(開始)', 'buy_total_from', PRICE_LEN, 'n', array("NUM_CHECK","MAX_LENGTH_CHECK")); 177 $objFormParam->addParam('購入金額(終了)', 'buy_total_to', PRICE_LEN, 'n', array("NUM_CHECK","MAX_LENGTH_CHECK")); 178 $objFormParam->addParam('購入回数(開始)', 'buy_times_from', INT_LEN, 'n', array("NUM_CHECK","MAX_LENGTH_CHECK")); 179 $objFormParam->addParam('購入回数(終了)', 'buy_times_to', INT_LEN, 'n', array("NUM_CHECK","MAX_LENGTH_CHECK")); 180 $objFormParam->addParam('登録・更新日(開始年)', 'start_year', 4, 'n', array("NUM_CHECK","MAX_LENGTH_CHECK")); 181 $objFormParam->addParam('登録・更新日(開始月)', 'start_month', 2, 'n', array("NUM_CHECK","MAX_LENGTH_CHECK")); 182 $objFormParam->addParam('登録・更新日(開始日)', 'start_day', 2, 'n', array("NUM_CHECK","MAX_LENGTH_CHECK")); 183 $objFormParam->addParam('登録・更新日(終了年)', 'end_year', 4, 'n', array("NUM_CHECK","MAX_LENGTH_CHECK")); 184 $objFormParam->addParam('登録・更新日(終了月)', 'end_month', 2, 'n', array("NUM_CHECK","MAX_LENGTH_CHECK")); 185 $objFormParam->addParam('登録・更新日(終了日)', 'end_day', 2, 'n', array("NUM_CHECK","MAX_LENGTH_CHECK")); 186 $objFormParam->addParam('表示件数', 'page_rows', 3, 'n', array("NUM_CHECK","MAX_LENGTH_CHECK")); 187 $objFormParam->addParam('最終購入日(開始年)', 'buy_start_year', 4, 'n', array("NUM_CHECK","MAX_LENGTH_CHECK")); 188 $objFormParam->addParam('最終購入日(開始月)', 'buy_start_month', 2, 'n', array("NUM_CHECK","MAX_LENGTH_CHECK")); 189 $objFormParam->addParam('最終購入日(開始日)', 'buy_start_day', 2, 'n', array("NUM_CHECK","MAX_LENGTH_CHECK")); 190 $objFormParam->addParam('最終購入日(終了年)', 'buy_end_year', 4, 'n', array("NUM_CHECK","MAX_LENGTH_CHECK")); 191 $objFormParam->addParam('最終購入日(終了月)', 'buy_end_month', 2, 'n', array("NUM_CHECK","MAX_LENGTH_CHECK")); 192 $objFormParam->addParam('最終購入日(終了日)', 'buy_end_day', 2, 'n', array("NUM_CHECK","MAX_LENGTH_CHECK")); 193 $objFormParam->addParam('購入商品コード', 'buy_product_code', STEXT_LEN, 'KVa', array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 194 $objFormParam->addParam('購入商品名', 'buy_product_name', STEXT_LEN, 'KVa', array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 195 $objFormParam->addParam('カテゴリ', 'category_id', INT_LEN, 'n', array("NUM_CHECK","MAX_LENGTH_CHECK")); 196 $objFormParam->addParam('編集対象顧客ID', 'edit_customer_id', INT_LEN, 'n', array("NUM_CHECK","MAX_LENGTH_CHECK")); 197 $objFormParam->addParam('性別', 'sex'); 198 $objFormParam->addParam('会員状態', 'status'); 199 $objFormParam->addParam('職業', 'job'); 200 } 201 202 /** 203 * エラーチェック 204 * 205 * @param array $objFormParam フォームパラメータークラス 206 * @return array エラー配列 207 */ 208 function lfCheckError(&$objFormParam) { 209 // パラメーターの基本チェック 210 $arrErr = $objFormParam->checkError(); 211 // 拡張エラーチェック初期化 212 $objErr = new SC_CheckError($objFormParam->getHashArray()); 213 // 拡張エラーチェック 516 214 $objErr->doFunc(array("誕生日(開始日)", "b_start_year", "b_start_month", "b_start_day"), array("CHECK_DATE")); 517 215 $objErr->doFunc(array("誕生日(終了日)", "b_end_year", "b_end_month", "b_end_day"), array("CHECK_DATE")); 216 518 217 $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")); 519 $objErr->doFunc(array("誕生月", "birth_month", 2), array("NUM_CHECK","MAX_LENGTH_CHECK"));520 $objErr->doFunc(array('メールアドレス', "email", STEXT_LEN) ,array("EMAIL_CHAR_CHECK", "MAX_LENGTH_CHECK"));521 $objErr->doFunc(array('携帯メールアドレス', "email_mobile", STEXT_LEN) ,array("EMAIL_CHAR_CHECK", "MAX_LENGTH_CHECK"));522 $objErr->doFunc(array("電話番号", "tel", TEL_LEN), array("NUM_CHECK","MAX_LENGTH_CHECK"));523 $objErr->doFunc(array("購入金額(開始)", "buy_total_from", INT_LEN), array("NUM_CHECK","MAX_LENGTH_CHECK"));524 $objErr->doFunc(array("購入金額(終了)", "buy_total_to", INT_LEN), array("NUM_CHECK","MAX_LENGTH_CHECK"));525 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"] .= "※ 購入金額の指定範囲が不正です。";526 $objErr->doFunc(array("購入回数(開始)", "buy_times_from", INT_LEN), array("NUM_CHECK","MAX_LENGTH_CHECK"));527 $objErr->doFunc(array("購入回数(終了)", "buy_times_to", INT_LEN), array("NUM_CHECK","MAX_LENGTH_CHECK"));528 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"] .= "※ 購入回数の指定範囲が不正です。";529 218 $objErr->doFunc(array("登録・更新日(開始日)", "start_year", "start_month", "start_day",), array("CHECK_DATE")); 530 219 $objErr->doFunc(array("登録・更新日(終了日)", "end_year", "end_month", "end_day"), array("CHECK_DATE")); 531 220 $objErr->doFunc(array("登録・更新日(開始日)","登録・更新日(終了日)", "start_year", "start_month", "start_day", "end_year", "end_month", "end_day"), array("CHECK_SET_TERM")); 532 $objErr->doFunc(array("表示件数", "page_rows", 3), array("NUM_CHECK","MAX_LENGTH_CHECK")); 533 $objErr->doFunc(array("最終購入日(開始日)", "buy_start_year", "buy_start_month", "buy_start_day",), array("CHECK_DATE")); //最終購入日(開始日) 534 $objErr->doFunc(array("最終購入(終了日)", "buy_end_year", "buy_end_month", "buy_end_day"), array("CHECK_DATE")); //最終購入日(終了日) 221 $objErr->doFunc(array("最終購入日(開始日)", "buy_start_year", "buy_start_month", "buy_start_day",), array("CHECK_DATE")); 222 $objErr->doFunc(array("最終購入(終了日)", "buy_end_year", "buy_end_month", "buy_end_day"), array("CHECK_DATE")); 535 223 //購入金額(from) > 購入金額(to) の場合はエラーとする 536 224 $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")); 537 $objErr->doFunc(array("購入商品コード", "buy_product_code", STEXT_LEN), array("MAX_LENGTH_CHECK")); //購入商品コード 538 $objErr->doFunc(array("購入商品名", "buy_product_name", STEXT_LEN), array("MAX_LENGTH_CHECK")); //購入商品名称 539 540 return $objErr->arrErr; 541 } 225 226 if ((SC_Utils_Ex::sfIsInt($array["buy_total_from"]) 227 && SC_Utils_Ex::sfIsInt($array["buy_total_to"])) 228 && ($array["buy_total_from"] > $array["buy_total_to"])) { 229 $objErr->arrErr["buy_total_from"] .= "※ 購入金額の指定範囲が不正です。"; 230 } 231 232 if ((SC_Utils_Ex::sfIsInt($array["buy_times_from"]) 233 && SC_Utils_Ex::sfIsInt($array["buy_times_to"])) 234 && ($array["buy_times_from"] > $array["buy_times_to"])) { 235 $objErr->arrErr["buy_times_from"] .= "※ 購入回数の指定範囲が不正です。"; 236 } 237 if(!SC_Utils::isBlank($objErr->arrErr)) { 238 $arrErr = array_merge($arrErr, $objErr->arrErr); 239 } 240 return $arrErr; 241 } 242 243 /** 244 * 顧客を削除する処理 245 * 246 * @param integer $customer_id 顧客ID 247 * @return boolean true:成功 false:失敗 248 */ 249 function lfDoDeleteCustomer($customer_id) { 250 $arrData = SC_Helper_Customer_Ex::sfGetCustomerDataFromId($customer_id, "del_flg = 0"); 251 if(SC_Utils_Ex::isBlank($arrData)) { 252 //対象となるデータが見つからない。 253 return false; 254 } 255 // XXXX: 仮会員は物理削除となっていたが論理削除に変更。 256 $arrVal["del_flg"] = "1"; 257 $arrVal["update_date"] ="now()"; 258 SC_Helper_Customer_Ex::sfEditCustomerData($arrVal, $customer_id); 259 return true; 260 } 261 262 /** 263 * 顧客に登録メールを再送する処理 264 * 265 * @param integer $customer_id 顧客ID 266 * @return boolean true:成功 false:失敗 267 */ 268 function lfDoResendMail($cutomer_id) { 269 $arrData = SC_Helper_Customer_Ex::sfGetCustomerDataFromId($customer_id); 270 if(SC_Utils_Ex::isBlank($arrData) or $arrData['del_flg'] == 1) { 271 //対象となるデータが見つからない、または削除済み 272 return false; 273 } 274 // 登録メール再送 275 $objHelperMail = new SC_Helper_Mail_Ex(); 276 $objHelperMail->sfSendRegistMail($arrData['secret_key'], $customer_id); 277 return true; 278 } 279 280 /** 281 * 顧客一覧を検索する処理 282 * 283 * @param array $arrParam 検索パラメーター連想配列 284 * @return array( integer 全体件数, mixed 顧客データ一覧配列, mixed SC_PageNaviオブジェクト) 285 */ 286 function lfDoSearch($arrParam) { 287 $objQuery =& SC_Query::getSingletonInstance(); 288 $objSelect = new SC_CustomerList($arrParam, "customer"); 289 $page_rows = $arrParam['page_rows']; 290 if(SC_Utils_Ex::sfIsInt($page_rows)) { 291 $page_max = $page_rows; 292 }else{ 293 $page_max = SEARCH_PMAX; 294 } 295 $disp_pageno = $arrParam['search_pageno']; 296 if($disp_pageno == 0) { 297 $disp_pageno = 1; 298 } 299 $offset = $page_max * ($disp_pageno - 1); 300 $objSelect->setLimitOffset($page_max, $offset); 301 $arrData = $objQuery->getAll($objSelect->getList(), $objSelect->arrVal); 302 303 // 該当全体件数の取得 304 $linemax = $objQuery->getOne($objSelect->getListCount(), $objSelect->arrVal); 305 // ページ送りの取得 306 $objNavi = new SC_PageNavi($arrParam['search_pageno'], 307 $linemax, 308 $page_max, 309 "fnCustomerPage", 310 NAVI_PMAX); 311 return array($linemax, $arrData, $objNavi); 312 } 313 314 /** 315 * 顧客一覧CSVを検索してダウンロードする処理 316 * 317 * @param array $arrParam 検索パラメーター連想配列 318 * @return boolean true:成功 false:失敗 319 */ 320 function lfDoCSV($arrParam) { 321 $objSelect = new SC_CustomerList($arrParam, "customer"); 322 $order = "update_date DESC, customer_id DESC"; 323 require_once(CLASS_EX_REALDIR . "helper_extends/SC_Helper_CSV_Ex.php"); 324 $objCSV = new SC_Helper_CSV_Ex(); 325 list($where, $arrVal) = $objSelect->getWhere(); 326 $objCSV->sfDownloadCsv('2', $where, $arrVal); 327 } 328 329 /** 330 * 検索パラメーター引継ぎ用展開 331 * 332 * @param array $objFormParam フォームパラメータークラス 333 * @return array 引き継ぎ用連想配列 334 */ 335 function lfGetSearchWords(&$objFormParam) { 336 $arrData = $objFormParam->getSearchArray("search_"); 337 $arrData['sex'] = SC_Utils_Ex::sfMergeParamCheckBoxes($objFormParam->getValue('sex')); 338 $arrData['status'] = SC_Utils_Ex::sfMergeParamCheckBoxes($objFormParam->getValue('status')); 339 $arrData['job'] = SC_Utils_Ex::sfMergeParamCheckBoxes($objFormParam->getValue('job')); 340 } 341 342 /** 343 * 表示用パラメーター値取得処理 344 * 345 * @param array $objFormParam フォームパラメータークラス 346 * @return array 表示用連想配列 347 */ 348 function lfGetFormParam(&$objFormParam) { 349 $arrForm = $objFormParam->getHashArray(); 350 // 配列形式のデータの展開処理 351 $val_sex = $objFormParam->getValue('sex'); 352 if(!is_array($val_sex) and !SC_Utils_Ex::isBlank($val_sex)) { 353 $arrForm['sex'] = explode("-", $val_sex); 354 } 355 $val_status = $objFormParam->getValue('status'); 356 if(!is_array($val_status) and !SC_Utils_Ex::isBlank($val_status)) { 357 $arrForm['status'] = explode("-", $val_status); 358 } 359 $val_job = $objFormParam->getValue('job'); 360 if(!is_array($val_job) and !SC_Utils_Ex::isBlank($val_job)) { 361 $arrForm['job'] = explode("-", $val_job); 362 } 363 return $arrForm; 364 } 365 542 366 } 543 367 ?> -
branches/version-2_5-dev/html/install/sql/create_table_mysql.sql
r20116 r20160 1056 1056 ) ENGINE=InnoDB; 1057 1057 1058 CREATE TABLE mtb_customer_status ( 1059 id smallint, 1060 name text, 1061 rank smallint NOT NULL DEFAULT 0, 1062 PRIMARY KEY (id) 1063 ) ENGINE=InnoDB; 1064 1058 1065 CREATE TABLE mtb_page_rows ( 1059 1066 id smallint, -
branches/version-2_5-dev/html/install/sql/create_table_pgsql.sql
r20116 r20160 1056 1056 ); 1057 1057 1058 CREATE TABLE mtb_customer_status ( 1059 id smallint, 1060 name text, 1061 rank smallint NOT NULL DEFAULT 0, 1062 PRIMARY KEY (id) 1063 ); 1064 1058 1065 CREATE TABLE mtb_page_rows ( 1059 1066 id smallint, -
branches/version-2_5-dev/html/install/sql/insert_data.sql
r20134 r20160 927 927 INSERT INTO mtb_sex (id, name, rank) VALUES (1, '男性', 0); 928 928 INSERT INTO mtb_sex (id, name, rank) VALUES (2, '女性', 1); 929 930 INSERT INTO mtb_customer_status (id, name, rank) VALUES (1, '仮会員', 0); 931 INSERT INTO mtb_customer_status (id, name, rank) VALUES (2, '本会員', 1); 929 932 930 933 INSERT INTO mtb_status (id, name, rank) VALUES (1, 'NEW', 0);
Note: See TracChangeset
for help on using the changeset viewer.