[Svn-src-all:1470] [version-2_5-dev 20362] #974 [管理画面]システム設定 メンバー登録小窓 再リファクタリング
homan
admin @ mail.ec-cube.net
2011年 2月 24日 (木) 00:12:13 JST
Subversion committed to /home/svn/open 20362
http://svn.ec-cube.net/open_trac/changeset/20362
┌────────────────────────────┐
│更新者 : homan │
│更新日時: 2011-02-24 00:12:13 +0900 (木, 24 2月 2011)│
└────────────────────────────┘
Log:
--------------------------------------------------------
#974 [管理画面]システム設定 メンバー登録小窓 再リファクタリング
Changed: [U:修正,A:追加,D:削除]
--------------------------------------------------------
U branches/version-2_5-dev/data/class/pages/admin/system/LC_Page_Admin_System_Input.php
変更: branches/version-2_5-dev/data/class/pages/admin/system/LC_Page_Admin_System_Input.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/admin/system/LC_Page_Admin_System_Input.php 2011-02-23 13:52:23 UTC (rev 20361)
+++ branches/version-2_5-dev/data/class/pages/admin/system/LC_Page_Admin_System_Input.php 2011-02-23 15:12:13 UTC (rev 20362)
@@ -72,17 +72,99 @@
// ページ送りの処理 $_REQUEST['pageno']が信頼しうる値かどうかチェックする。
$this->tpl_pageno = $this->lfCheckPageNo($_REQUEST['pageno']);
+ $objFormParam = new SC_FormParam();
+ $arrErr = array();
+ $arrForm = array();
+
switch($this->getMode()) {
case 'new':
- $this->execNewMode();
+ // パラメータの初期化
+ $this->initForm($objFormParam, $_POST);
+
+ // エラーチェック
+ $arrErr = $this->validateData($objFormParam, $_POST, $this->getMode());
+ $this->arrForm = $objFormParam->getHashArray();
+
+ if(SC_Utils_Ex::isBlank($arrErr)) {
+
+ $this->insertMemberData($this->arrForm);
+ // 親ウィンドウを更新後、自ウィンドウを閉じる。
+ $url = ADMIN_SYSTEM_URLPATH . "?pageno=" . $this->arrForm['pageno'];
+ $this->tpl_onload = "fnUpdateParent('".$url."'); window.close();";
+
+ } else {
+ // 入力された値を保持する
+ $this->tpl_mode = $this->getMode();
+ $this->tpl_member_id = '';
+ $this->tpl_old_login_id = '';
+
+ // パスワードは保持しない
+ $this->arrForm['password'] = '';
+ // エラー情報をセットする
+ $this->arrErr = $arrErr;
+ }
break;
+
case 'edit':
- $this->execEditMode();
+ // パラメータの初期化
+ $this->initForm($objFormParam, $_POST, $this->getMode());
+
+ // エラーチェック
+ $arrErr = $this->validateData($objFormParam, $_POST, $this->getMode());
+ $this->arrForm = $objFormParam->getHashArray();
+
+ if(SC_Utils_Ex::isBlank($arrErr)) {
+
+ $this->updateMemberData($this->arrForm['member_id'], $this->arrForm);
+ // 親ウィンドウを更新後、自ウィンドウを閉じる。
+ $url = ADMIN_SYSTEM_URLPATH . "?pageno=" . $this->arrForm['pageno'];
+ $this->tpl_onload = "fnUpdateParent('".$url."'); window.close();";
+
+ } else {
+ // 入力された値を保持する
+ $this->tpl_mode = $this->getMode();
+ $this->tpl_member_id = $this->arrForm['member_id'];
+ $this->tpl_old_login_id = $this->arrForm['old_login_id'];
+
+ // パスワードは保持しない
+ $this->arrForm['password'] = '';
+ // エラー情報をセットする
+ $this->arrErr = $arrErr;
+ }
break;
default:
- $this->execDefaultMode();
+
+ // $_GET['id'](member_id)が登録済みのものかチェック。
+ // 登録されていない場合は不正なものとして、新規扱いとする。
+ $clean_id = "";
+ $clean_mode_flg = "new";
+
+ // idが0より大きい数字で整数の場合
+ if (isset($_GET['id']) && SC_Utils::sfIsInt($_GET['id']) && $_GET['id'] > 0) {
+ if ($this->memberDataExists('member_id = ? AND del_flg = 0', $_GET['id'])) {
+ $clean_id = $_GET['id'];
+ $clean_mode_flg = "edit";
+ }
+ }
+
+ switch($clean_mode_flg) {
+ case 'edit':
+ $this->tpl_mode = $clean_mode_flg;
+ $this->tpl_member_id = $clean_id;
+ $this->tpl_onfocus = "fnClearText(this.name);";
+ $this->arrForm = $this->getMemberData($clean_id);
+ $this->arrForm['password'] = DEFAULT_PASSWORD;
+ $this->tpl_old_login_id = $this->arrForm['login_id'];
+ break;
+
+ case 'new':
+ default:
+ $this->tpl_mode = $clean_mode_flg;
+ $this->arrForm['authority'] = -1;
+ break;
+ }
break;
}
$this->setTemplate($this->tpl_mainpage);
@@ -97,206 +179,87 @@
parent::destroy();
}
- /**
- * newアクションの実行
- * メンバーデータの新規登録を行う.
- *
- * @param void
- * @return void
- */
- function execNewMode() {
- $this->objForm = $this->initNewMode();
-
- $arrErr = $this->validateNewMode();
-
- $this->arrForm = $this->objForm->getHashArray();
-
- if (count($arrErr) > 0) {
- // 入力された値を保持する
- $this->tpl_mode = $this->getMode();
- $this->tpl_member_id = '';
- $this->tpl_old_login_id = '';
-
- // パスワードは保持しない
- $this->arrForm['password'] = '';
- // エラー情報をセットする
- $this->arrErr = $arrErr;
- return;
- }
-
- $this->insertMemberData($this->arrForm);
- // 親ウィンドウを更新後、自ウィンドウを閉じる。
- $url = ADMIN_SYSTEM_URLPATH . "?pageno=" . $this->arrForm['pageno'];
- $this->tpl_onload = "fnUpdateParent('".$url."'); window.close();";
- }
-
/**
- * newアクションの初期化.
- * SC_FormParamのインスタンスをメンバ変数にセットする.
+ * フォームパラメータ初期化
*
+ * @param object $objFormParam
+ * @param array $arrParams $_POST値
* @param string $mode editの時は指定
- * @return object SC_FormParamのインスタンス
+ * @return void
*/
- function initNewMode($mode = "") {
- $objForm = new SC_FormParam();
+ function initForm(&$objFormParam, &$arrParams, $mode = "") {
- $objForm->addParam('メンバーID', 'member_id', INT_LEN, 'n', array('NUM_CHECK'));
- $objForm->addParam('名前', 'name', STEXT_LEN, 'KV', array('EXIST_CHECK', 'MAX_LENGTH_CHECK'));
- $objForm->addParam('所属', 'department', STEXT_LEN, 'KV', array('MAX_LENGTH_CHECK'));
- $objForm->addParam('ログインID', 'login_id', '' , '', array('EXIST_CHECK', 'ALNUM_CHECK'));
- $objForm->addParam('変更前ログインID', 'old_login_id', '' , '', array('ALNUM_CHECK'));
- if ($mode == "edit" && $_POST['password'] == DEFAULT_PASSWORD) {
- $objForm->addParam('パスワード', 'password', '' , '', array('EXIST_CHECK'));
+ $objFormParam->addParam('メンバーID', 'member_id', INT_LEN, 'n', array('NUM_CHECK'));
+ $objFormParam->addParam('名前', 'name', STEXT_LEN, 'KV', array('EXIST_CHECK', 'MAX_LENGTH_CHECK'));
+ $objFormParam->addParam('所属', 'department', STEXT_LEN, 'KV', array('MAX_LENGTH_CHECK'));
+ $objFormParam->addParam('ログインID', 'login_id', '' , '', array('EXIST_CHECK', 'ALNUM_CHECK'));
+ $objFormParam->addParam('変更前ログインID', 'old_login_id', '' , '', array('ALNUM_CHECK'));
+ if ($mode == "edit" && $arrParams['password'] == DEFAULT_PASSWORD) {
+ $objFormParam->addParam('パスワード', 'password', '' , '', array('EXIST_CHECK'));
} else {
- $objForm->addParam('パスワード', 'password', '' , '', array('EXIST_CHECK', 'ALNUM_CHECK'));
+ $objFormParam->addParam('パスワード', 'password', '' , '', array('EXIST_CHECK', 'ALNUM_CHECK'));
}
- $objForm->addParam('権限', 'authority', INT_LEN, '', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK'));
- $objForm->addParam('稼働/非稼働', 'work', INT_LEN, '', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK'));
- $objForm->addParam('ページ', 'pageno', INT_LEN, 'n', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK'));
+ $objFormParam->addParam('権限', 'authority', INT_LEN, '', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK'));
+ $objFormParam->addParam('稼働/非稼働', 'work', INT_LEN, '', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK'));
+ $objFormParam->addParam('ページ', 'pageno', INT_LEN, 'n', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK'));
- $objForm->setParam($_POST);
- $objForm->convParam();
+ $objFormParam->setParam($arrParams);
+ $objFormParam->convParam();
- return $objForm;
}
- /**
- * newアクションのパラメータ検証を行う.
- *
- * @param void
- * @return array エラー情報の連想配列
- */
- function validateNewMode() {
- $arrErr = $this->objForm->checkError();
- if (isset($arrErr) && count($arrErr) > 0) return $arrErr;
- // ログインID・パスワードの文字数チェック
- $objErr = new SC_CheckError();
- $objErr->doFunc(array("パスワード", 'password', ID_MIN_LEN, ID_MAX_LEN), array("NUM_RANGE_CHECK"));
- $objErr->doFunc(array("ログインID", 'login_id', ID_MIN_LEN, ID_MAX_LEN), array("NUM_RANGE_CHECK"));
- $arrErr = $objErr->arrErr;
-
- // 管理者名が登録済みでないか
- if ($this->memberDataExists('name = ?', $_POST['name'])) {
- $arrErr['name'] = "既に登録されている名前なので利用できません。<br>";
- }
- // ログインIDが登録済みでないか
- if ($this->memberDataExists('login_id = ?', $_POST['login_id'])) {
- $arrErr['login_id'] = "既に登録されているIDなので利用できません。<br>";
- }
-
- return $arrErr;
- }
-
/**
- * editアクションの実行
- * メンバーデータの更新を行う.
+ * パラメータの妥当性検証を行う.
*
* @param void
- * @return void
- */
- function execEditMode() {
- if (SC_Helper_Session_Ex::isValidToken() !== true) {
- SC_Utils::sfDispError('');
- }
-
- $this->objForm = $this->initNewMode("edit");
-
- $arrErr = $this->validateEditMode();
-
- $this->arrForm = $this->objForm->getHashArray();
-
- if (count($arrErr) > 0) {
- // 入力された値を保持する
- $this->tpl_mode = $this->getMode();
- $this->tpl_member_id = $this->arrForm['member_id'];
- $this->tpl_old_login_id = $this->arrForm['old_login_id'];
-
- // パスワードは保持しない
- $this->arrForm['password'] = '';
- // エラー情報をセットする
- $this->arrErr = $arrErr;
- return;
- }
-
- $this->updateMemberData($this->arrForm['member_id'], $this->arrForm);
- // 親ウィンドウを更新後、自ウィンドウを閉じる。
- $url = ADMIN_SYSTEM_URLPATH . "?pageno=" . $this->arrForm['pageno'];
- $this->tpl_onload = "fnUpdateParent('".$url."'); window.close();";
- }
-
- /**
- * editアクションのパラメータ検証を行う.
- *
- * @param void
* @return array エラー情報の連想配列
*/
- function validateEditMode() {
- $arrErr = $this->objForm->checkError();
+ function validateData(&$objFormParam, &$arrParams, $mode) {
+ $arrErr = $objFormParam->checkError();
if (isset($arrErr) && count($arrErr) > 0) return $arrErr;
// ログインID・パスワードの文字数チェック
$objErr = new SC_CheckError();
- $objErr->doFunc(array("パスワード", 'password', ID_MIN_LEN, ID_MAX_LEN), array("SPTAB_CHECK" ,"NUM_RANGE_CHECK"));
- $objErr->doFunc(array("ログインID", 'login_id', ID_MIN_LEN, ID_MAX_LEN), array("SPTAB_CHECK" ,"NUM_RANGE_CHECK"));
+ if($mode == "new") {
+ $objErr->doFunc(array("パスワード", 'password', ID_MIN_LEN, ID_MAX_LEN), array("NUM_RANGE_CHECK"));
+ $objErr->doFunc(array("ログインID", 'login_id', ID_MIN_LEN, ID_MAX_LEN), array("NUM_RANGE_CHECK"));
+ } elseif($mode == "edit") {
+ $objErr->doFunc(array("パスワード", 'password', ID_MIN_LEN, ID_MAX_LEN), array("SPTAB_CHECK" ,"NUM_RANGE_CHECK"));
+ $objErr->doFunc(array("ログインID", 'login_id', ID_MIN_LEN, ID_MAX_LEN), array("SPTAB_CHECK" ,"NUM_RANGE_CHECK"));
+ }
+
$arrErr = $objErr->arrErr;
- // ログインIDが変更されている場合はチェックする。
- if ($_POST['login_id'] != $_POST['old_login_id']) {
+ switch($mode) {
+ case "new":
+ // 管理者名が登録済みでないか
+ if ($this->memberDataExists('name = ?', $arrParams['name'])) {
+ $arrErr['name'] = "既に登録されている名前なので利用できません。<br>";
+ }
// ログインIDが登録済みでないか
- if ($this->memberDataExists('login_id = ?', $_POST['login_id'])) {
+ if ($this->memberDataExists('login_id = ?', $arrParams['login_id'])) {
$arrErr['login_id'] = "既に登録されているIDなので利用できません。<br>";
}
+ break;
+ case "edit":
+ // ログインIDが変更されている場合はチェックする。
+ if ($arrParams['login_id'] != $arrParams['old_login_id']) {
+ // ログインIDが登録済みでないか
+ if ($this->memberDataExists('login_id = ?', $arrParams['login_id'])) {
+ $arrErr['login_id'] = "既に登録されているIDなので利用できません。<br>";
+ }
+ }
+ break;
}
return $arrErr;
}
- /**
- * defaultアクションを実行する.
- * 初回表示時に実行される.
- * $GET['id']が渡された場合、編集モードとして表示,
- * 無い場合は新規登録モードとして表示する.
- *
- * @param void
- * @return void
- */
- function execDefaultMode() {
- // $_GET['id'](member_id)が登録済みのものかチェック。
- // 登録されていない場合は不正なものとして、新規扱いとする。
- $clean_id = "";
- $clean_mode_flg = "new";
-
- // idが0より大きい数字で整数の場合
- if (isset($_GET['id']) && SC_Utils::sfIsInt($_GET['id']) && $_GET['id'] > 0) {
- if ($this->memberDataExists('member_id = ? AND del_flg = 0', $_GET['id'])) {
- $clean_id = $_GET['id'];
- $clean_mode_flg = "edit";
- }
- }
-
- switch($clean_mode_flg) {
- case 'edit':
- $this->tpl_mode = $clean_mode_flg;
- $this->tpl_member_id = $clean_id;
- $this->tpl_onfocus = "fnClearText(this.name);";
- $this->arrForm = $this->getMemberData($clean_id);
- $this->arrForm['password'] = DEFAULT_PASSWORD;
- $this->tpl_old_login_id = $this->arrForm['login_id'];
- break;
-
- case 'new':
- default:
- $this->tpl_mode = $clean_mode_flg;
- $this->arrForm['authority'] = -1;
- break;
- }
- }
-
/**
* DBからmember_idに対応する管理者データを取得する
*
Svn-src-all メーリングリストの案内