[Svn-src-all:1197] [version-2_5-dev 20085] 会員登録リファクタリング #979
kimoto
admin @ mail.ec-cube.net
2011年 2月 4日 (金) 12:08:45 JST
Subversion committed to /home/svn/open 20085
http://svn.ec-cube.net/open_trac/changeset/20085
┌────────────────────────────┐
│更新者 : kimoto │
│更新日時: 2011-02-04 12:08:44 +0900 (金, 04 2月 2011)│
└────────────────────────────┘
Log:
--------------------------------------------------------
会員登録リファクタリング #979
sfCheckRegisterUserFromEmailを有効活用させていただきました
Changed: [U:修正,A:追加,D:削除]
--------------------------------------------------------
U branches/version-2_5-dev/data/class/SC_CheckError.php
U branches/version-2_5-dev/data/class/helper/SC_Helper_Customer.php
U branches/version-2_5-dev/data/class/pages/entry/LC_Page_Entry.php
U branches/version-2_5-dev/data/class/pages/entry/LC_Page_Entry_EmailMobile.php
変更: branches/version-2_5-dev/data/class/SC_CheckError.php
===================================================================
--- branches/version-2_5-dev/data/class/SC_CheckError.php 2011-02-04 02:52:48 UTC (rev 20084)
+++ branches/version-2_5-dev/data/class/SC_CheckError.php 2011-02-04 03:08:44 UTC (rev 20085)
@@ -794,14 +794,14 @@
$this->createParam($value);
// 年が入力されている。
if ($this->arrParam[$value[1]] > 0) {
-
+
// 年の数字チェック、最小数値制限チェック
$this->doFunc(array($value[0].'(年)', $value[1], START_BIRTH_YEAR), array("NUM_CHECK", "MIN_CHECK"));
// 上のチェックでエラーある場合、中断する。
if (isset($this->arrErr[$value[1]])) {
return;
}
-
+
// 年の最大数値制限チェック
$this->doFunc(array($value[0].'(年)', $value[1], date("Y",strtotime("now"))), array("MAX_CHECK"));
// 上のチェックでエラーある場合、中断する。
@@ -809,7 +809,7 @@
return;
}
}
-
+
// XXX createParam() が二重に呼ばれる問題を抱える
$this->CHECK_DATE($value);
}
@@ -984,6 +984,27 @@
$this->arrErr[$value[1]] = "※ " . $value[0] . "は携帯電話のものではありません。<br />";
}
}
+
+ function CHECK_REGIST_CUSTOMER_EMAIL ($value) {
+ if(isset($this->arrErr[$value[1]])) {
+ return;
+ }
+ $this->createParam($value);
+
+ $register_user_flg = SC_Helper_Customer_Ex::sfCheckRegisterUserFromEmail($this->arrParam[$value[1]]);
+ switch($register_user_flg) {
+ case 1:
+ $this->arrErr[$value[1]] .= "※ すでに会員登録で使用されている" . $value[0] . "です。<br />";
+ break;
+ case 2:
+ $this->arrErr[$value[1]] .= "※ 退会から一定期間の間は、同じ" . $value[0] . "を使用することはできません。<br />";
+ break;
+ default:
+ break;
+ }
+ }
+
+
/**
* 禁止文字列のチェック
* value[0] = 項目名 value[1] = 判定対象文字列
変更: branches/version-2_5-dev/data/class/helper/SC_Helper_Customer.php
===================================================================
--- branches/version-2_5-dev/data/class/helper/SC_Helper_Customer.php 2011-02-04 02:52:48 UTC (rev 20084)
+++ branches/version-2_5-dev/data/class/helper/SC_Helper_Customer.php 2011-02-04 03:08:44 UTC (rev 20085)
@@ -172,29 +172,26 @@
function sfCheckRegisterUserFromEmail($email){
$return = 0;
- $objCustomer = new SC_Customer();
- $objQuery =& SC_Query::getSingletonInstance();
+ $objCustomer = new SC_Customer();
+ $objQuery =& SC_Query::getSingletonInstance();
- $arrRet = $objQuery->select("email, update_date, del_flg"
- ,"dtb_customer"
- ,"email = ? OR email_mobile = ? ORDER BY del_flg"
- ,array($email, $email)
- );
+ $arrRet = $objQuery->select("email, update_date, del_flg",
+ "dtb_customer",
+ "email = ? OR email_mobile = ? ORDER BY del_flg",
+ array($email, $email));
if(count($arrRet) > 0) {
if($arrRet[0]['del_flg'] != '1') {
// 会員である場合
- if (!isset($objErr->arrErr['email'])) $objErr->arrErr['email'] = "";
$return = 1;
} else {
// 退会した会員である場合
$leave_time = SC_Utils_Ex::sfDBDatetoTime($arrRet[0]['update_date']);
- $now_time = time();
- $pass_time = $now_time - $leave_time;
+ $now_time = time();
+ $pass_time = $now_time - $leave_time;
// 退会から何時間-経過しているか判定する。
$limit_time = ENTRY_LIMIT_HOUR * 3600;
if($pass_time < $limit_time) {
- if (!isset($objErr->arrErr['email'])) $objErr->arrErr['email'] = "";
$return = 2;
}
}
@@ -202,15 +199,14 @@
// ログインしている場合、すでに登録している自分のemailの場合はエラーを返さない
if ($objCustomer->getValue('customer_id')){
- $arrRet = $objQuery->select("email, email_mobile"
- ,"dtb_customer"
- ,"customer_id = ? ORDER BY del_flg"
- ,array($objCustomer->getValue('customer_id'))
- );
- if ($email == $arrRet[0]["email"]
- || $email == $arrRet[0]["email_mobile"]){
- $return = 3;
- }
+ $arrRet = $objQuery->select("email, email_mobile",
+ "dtb_customer",
+ "customer_id = ? ORDER BY del_flg",
+ array($objCustomer->getValue('customer_id')));
+
+ if ($email == $arrRet[0]["email"] || $email == $arrRet[0]["email_mobile"]) {
+ $return = 3;
+ }
}
return $return;
}
変更: branches/version-2_5-dev/data/class/pages/entry/LC_Page_Entry.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/entry/LC_Page_Entry.php 2011-02-04 02:52:48 UTC (rev 20084)
+++ branches/version-2_5-dev/data/class/pages/entry/LC_Page_Entry.php 2011-02-04 03:08:44 UTC (rev 20085)
@@ -328,17 +328,8 @@
}
// 現会員の判定 → 現会員もしくは仮登録中は、メアド一意が前提になってるので同じメアドで登録不可
- $register_user_flg = SC_Helper_Customer_Ex::sfCheckRegisterUserFromEmail($arrRet["email"]);
- switch($register_user_flg) {
- case 1:
- $objErr->arrErr["email"] .= "※ すでに会員登録で使用されているメールアドレスです。<br />";
- break;
- case 2:
- $objErr->arrErr["email"] .= "※ 退会から一定期間の間は、同じメールアドレスを使用することはできません。<br />";
- break;
- default:
- break;
- }
+ $objErr->doFunc(array("メールアドレス", "email"), array("CHECK_REGIST_CUSTOMER_EMAIL"));
+
return $objErr->arrErr;
}
変更: branches/version-2_5-dev/data/class/pages/entry/LC_Page_Entry_EmailMobile.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/entry/LC_Page_Entry_EmailMobile.php 2011-02-04 02:52:48 UTC (rev 20084)
+++ branches/version-2_5-dev/data/class/pages/entry/LC_Page_Entry_EmailMobile.php 2011-02-04 03:08:44 UTC (rev 20085)
@@ -43,6 +43,9 @@
*/
function init() {
parent::init();
+
+ $this->objFormParam = new SC_FormParam();
+ $this->lfInitParam();
}
/**
@@ -61,25 +64,22 @@
* @return void
*/
function action() {
- $objCustomer = new SC_Customer;
- $objFormParam = new SC_FormParam;
+ $objCustomer = new SC_Customer;
- $this->lfInitParam($objFormParam);
-
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
- $objFormParam->setParam($_POST);
- $objFormParam->convParam();
- $this->arrErr = $this->lfCheckError($objFormParam, $objCustomer);
+ $this->objFormParam->setParam($_POST);
+ $this->objFormParam->convParam();
+ $this->arrErr = $this->lfCheckError($objCustomer);
if (empty($this->arrErr)) {
- $this->lfRegister($objFormParam, $objCustomer);
+ $this->lfRegister($objCustomer);
$this->tpl_mainpage = 'entry/email_mobile_complete.tpl';
$this->tpl_title = '携帯メール登録完了';
}
}
$this->tpl_name = $objCustomer->getValue('name01');
- $this->arrForm = $objFormParam->getFormParamList();
+ $this->arrForm = $this->objFormParam->getFormParamList();
}
/**
@@ -92,51 +92,49 @@
}
- function lfInitParam(&$objFormParam) {
- $objFormParam->addParam('メールアドレス', 'email_mobile', MTEXT_LEN, 'a',
+ /**
+ * lfInitParam
+ *
+ * @param mixed $objFormParam
+ * @access public
+ * @return void
+ */
+ function lfInitParam() {
+ $this->objFormParam->addParam('メールアドレス', 'email_mobile', MTEXT_LEN, 'a',
array('NO_SPTAB', 'EXIST_CHECK', 'MAX_LENGTH_CHECK', 'CHANGE_LOWER', 'EMAIL_CHAR_CHECK', 'EMAIL_CHECK', 'MOBILE_EMAIL_CHECK'));
}
- function lfCheckError(&$objFormParam, &$objCustomer) {
- $arrRet = $objFormParam->getHashArray();
- $objErr = new SC_CheckError($arrRet);
- $objErr->arrErr = $objFormParam->checkError();
+ /**
+ * lfCheckError
+ *
+ * @param mixed $objFormParam
+ * @param mixed $objCustomer
+ * @access public
+ * @return void
+ */
+ function lfCheckError(&$objCustomer) {
+ $arrRet = $this->objFormParam->getHashArray();
+ $objErr = new SC_CheckError($arrRet);
+ $objErr->arrErr = $this->objFormParam->checkError();
- if (count($objErr->arrErr) > 0) {
- return $objErr->arrErr;
- }
+ $objErr->doFunc(array("メールアドレス", "email_mobile"), array("CHECK_REGIST_CUSTOMER_EMAIL"));
- $email_mobile = strtolower($objFormParam->getValue('email_mobile'));
- $customer_id = $objCustomer->getValue('customer_id');
- $objQuery = new SC_Query();
- // TODO ORDER BY del_flg は必要?
- $arrRet = $objQuery->select('email, email_mobile, update_date, del_flg', 'dtb_customer', '(email = ? OR email_mobile = ?) AND customer_id <> ? ORDER BY del_flg', array($email_mobile, $email_mobile, $customer_id));
-
- if (count($arrRet) > 0) {
- if ($arrRet[0]['del_flg'] != '1') {
- // 会員である場合
- $objErr->arrErr['email_mobile'] .= '※ すでに登録されているメールアドレスです。<br>';
- } else {
- // 退会した会員である場合
- $leave_time = SC_Utils_Ex::sfDBDatetoTime($arrRet[0]['update_date']);
- $now_time = time();
- $pass_time = $now_time - $leave_time;
- // 退会から何時間-経過しているか判定する。
- $limit_time = ENTRY_LIMIT_HOUR * 3600;
- if ($pass_time < $limit_time) {
- $objErr->arrErr['email_mobile'] .= '※ 退会から一定期間の間は、同じメールアドレスを使用することはできません。<br>';
- }
- }
- }
-
return $objErr->arrErr;
}
- function lfRegister(&$objFormParam, &$objCustomer) {
- $customer_id = $objCustomer->getValue('customer_id');
- $email_mobile = strtolower($objFormParam->getValue('email_mobile'));
+ /**
+ * lfRegister
+ *
+ * @param mixed $objFormParam
+ * @param mixed $objCustomer
+ * @access public
+ * @return void
+ */
+ function lfRegister(&$objCustomer) {
+ $customer_id = $objCustomer->getValue('customer_id');
+ $email_mobile = strtolower($this->objFormParam->getValue('email_mobile'));
- $objQuery = new SC_Query();
+ $objQuery = new SC_Query();
$objQuery->update('dtb_customer', array('email_mobile' => $email_mobile), 'customer_id = ?', array($customer_id));
$objCustomer->setValue('email_mobile', $email_mobile);
Svn-src-all メーリングリストの案内