[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 メーリングリストの案内