Changeset 20362


Ignore:
Timestamp:
2011/02/24 00:12:13 (13 years ago)
Author:
homan
Message:

#974 [管理画面]システム設定 メンバー登録小窓 再リファクタリング

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_5-dev/data/class/pages/admin/system/LC_Page_Admin_System_Input.php

    r20345 r20362  
    7373        $this->tpl_pageno = $this->lfCheckPageNo($_REQUEST['pageno']); 
    7474 
     75        $objFormParam = new SC_FormParam(); 
     76        $arrErr = array(); 
     77        $arrForm = array(); 
     78 
    7579        switch($this->getMode()) { 
    7680        case 'new': 
    77             $this->execNewMode(); 
    78             break; 
     81            // パラメータの初期化 
     82            $this->initForm($objFormParam, $_POST); 
     83 
     84            // エラーチェック 
     85            $arrErr = $this->validateData($objFormParam, $_POST, $this->getMode()); 
     86            $this->arrForm = $objFormParam->getHashArray(); 
     87 
     88            if(SC_Utils_Ex::isBlank($arrErr)) { 
     89 
     90                $this->insertMemberData($this->arrForm); 
     91                // 親ウィンドウを更新後、自ウィンドウを閉じる。 
     92                $url = ADMIN_SYSTEM_URLPATH . "?pageno=" . $this->arrForm['pageno']; 
     93                $this->tpl_onload = "fnUpdateParent('".$url."'); window.close();"; 
     94 
     95            } else { 
     96                // 入力された値を保持する 
     97                $this->tpl_mode      = $this->getMode(); 
     98                $this->tpl_member_id = ''; 
     99                $this->tpl_old_login_id = ''; 
     100 
     101                // パスワードは保持しない 
     102                $this->arrForm['password'] = ''; 
     103                // エラー情報をセットする 
     104                $this->arrErr = $arrErr; 
     105            } 
     106            break; 
     107 
    79108 
    80109        case 'edit': 
    81             $this->execEditMode(); 
     110            // パラメータの初期化 
     111            $this->initForm($objFormParam, $_POST, $this->getMode()); 
     112 
     113            // エラーチェック 
     114            $arrErr = $this->validateData($objFormParam, $_POST, $this->getMode()); 
     115            $this->arrForm = $objFormParam->getHashArray(); 
     116 
     117            if(SC_Utils_Ex::isBlank($arrErr)) { 
     118 
     119                $this->updateMemberData($this->arrForm['member_id'], $this->arrForm); 
     120                // 親ウィンドウを更新後、自ウィンドウを閉じる。 
     121                $url = ADMIN_SYSTEM_URLPATH . "?pageno=" . $this->arrForm['pageno']; 
     122                $this->tpl_onload = "fnUpdateParent('".$url."'); window.close();"; 
     123 
     124            } else { 
     125                // 入力された値を保持する 
     126                $this->tpl_mode      = $this->getMode(); 
     127                $this->tpl_member_id = $this->arrForm['member_id']; 
     128                $this->tpl_old_login_id = $this->arrForm['old_login_id']; 
     129 
     130                // パスワードは保持しない 
     131                $this->arrForm['password'] = ''; 
     132                // エラー情報をセットする 
     133                $this->arrErr = $arrErr; 
     134            } 
    82135            break; 
    83136 
    84137        default: 
    85             $this->execDefaultMode(); 
     138 
     139            // $_GET['id'](member_id)が登録済みのものかチェック。 
     140            // 登録されていない場合は不正なものとして、新規扱いとする。 
     141            $clean_id = ""; 
     142            $clean_mode_flg = "new"; 
     143         
     144            // idが0より大きい数字で整数の場合 
     145            if (isset($_GET['id']) && SC_Utils::sfIsInt($_GET['id']) && $_GET['id'] > 0) { 
     146                if ($this->memberDataExists('member_id = ? AND del_flg = 0', $_GET['id'])) { 
     147                    $clean_id = $_GET['id']; 
     148                    $clean_mode_flg = "edit"; 
     149                } 
     150            } 
     151 
     152            switch($clean_mode_flg) { 
     153            case 'edit': 
     154                $this->tpl_mode      = $clean_mode_flg; 
     155                $this->tpl_member_id = $clean_id; 
     156                $this->tpl_onfocus   = "fnClearText(this.name);"; 
     157                $this->arrForm       = $this->getMemberData($clean_id); 
     158                $this->arrForm['password'] = DEFAULT_PASSWORD; 
     159                $this->tpl_old_login_id    = $this->arrForm['login_id']; 
     160                break; 
     161 
     162            case 'new': 
     163            default: 
     164                $this->tpl_mode = $clean_mode_flg; 
     165                $this->arrForm['authority'] = -1; 
     166                break; 
     167            } 
    86168            break; 
    87169        } 
     
    98180    } 
    99181 
    100     /** 
    101      * newアクションの実行 
    102      * メンバーデータの新規登録を行う. 
    103      * 
    104      * @param void 
    105      * @return void 
    106      */ 
    107     function execNewMode() { 
    108  
    109         $this->objForm = $this->initNewMode(); 
    110  
    111         $arrErr = $this->validateNewMode(); 
    112  
    113         $this->arrForm = $this->objForm->getHashArray(); 
    114  
    115         if (count($arrErr) > 0) { 
    116             // 入力された値を保持する 
    117             $this->tpl_mode      = $this->getMode(); 
    118             $this->tpl_member_id = ''; 
    119             $this->tpl_old_login_id = ''; 
    120  
    121             // パスワードは保持しない 
    122             $this->arrForm['password'] = ''; 
    123             // エラー情報をセットする 
    124             $this->arrErr = $arrErr; 
    125             return; 
    126         } 
    127  
    128         $this->insertMemberData($this->arrForm); 
    129         // 親ウィンドウを更新後、自ウィンドウを閉じる。 
    130         $url = ADMIN_SYSTEM_URLPATH . "?pageno=" . $this->arrForm['pageno']; 
    131         $this->tpl_onload = "fnUpdateParent('".$url."'); window.close();"; 
    132     } 
    133  
    134     /** 
    135      * newアクションの初期化. 
    136      * SC_FormParamのインスタンスをメンバ変数にセットする. 
    137      * 
     182 
     183    /** 
     184     * フォームパラメータ初期化 
     185     * 
     186     * @param object $objFormParam 
     187     * @param array  $arrParams $_POST値 
    138188     * @param string $mode editの時は指定 
    139      * @return object SC_FormParamのインスタンス 
    140      */ 
    141     function initNewMode($mode = "") { 
    142         $objForm = new SC_FormParam(); 
    143  
    144         $objForm->addParam('メンバーID', 'member_id', INT_LEN, 'n', array('NUM_CHECK')); 
    145         $objForm->addParam('名前', 'name', STEXT_LEN, 'KV', array('EXIST_CHECK', 'MAX_LENGTH_CHECK')); 
    146         $objForm->addParam('所属', 'department', STEXT_LEN, 'KV', array('MAX_LENGTH_CHECK')); 
    147         $objForm->addParam('ログインID', 'login_id', '' , '', array('EXIST_CHECK', 'ALNUM_CHECK')); 
    148         $objForm->addParam('変更前ログインID', 'old_login_id', '' , '', array('ALNUM_CHECK')); 
    149         if ($mode == "edit" && $_POST['password'] == DEFAULT_PASSWORD) { 
    150             $objForm->addParam('パスワード', 'password', '' , '', array('EXIST_CHECK')); 
     189     * @return void 
     190     */ 
     191    function initForm(&$objFormParam, &$arrParams, $mode = "") { 
     192 
     193        $objFormParam->addParam('メンバーID', 'member_id', INT_LEN, 'n', array('NUM_CHECK')); 
     194        $objFormParam->addParam('名前', 'name', STEXT_LEN, 'KV', array('EXIST_CHECK', 'MAX_LENGTH_CHECK')); 
     195        $objFormParam->addParam('所属', 'department', STEXT_LEN, 'KV', array('MAX_LENGTH_CHECK')); 
     196        $objFormParam->addParam('ログインID', 'login_id', '' , '', array('EXIST_CHECK', 'ALNUM_CHECK')); 
     197        $objFormParam->addParam('変更前ログインID', 'old_login_id', '' , '', array('ALNUM_CHECK')); 
     198        if ($mode == "edit" && $arrParams['password'] == DEFAULT_PASSWORD) { 
     199            $objFormParam->addParam('パスワード', 'password', '' , '', array('EXIST_CHECK')); 
    151200        } else { 
    152             $objForm->addParam('パスワード', 'password', '' , '', array('EXIST_CHECK', 'ALNUM_CHECK')); 
    153         } 
    154         $objForm->addParam('権限', 'authority', INT_LEN, '', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK')); 
    155         $objForm->addParam('稼働/非稼働', 'work', INT_LEN, '', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK')); 
    156         $objForm->addParam('ページ', 'pageno', INT_LEN, 'n', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK')); 
    157  
    158         $objForm->setParam($_POST); 
    159         $objForm->convParam(); 
    160  
    161         return $objForm; 
    162     } 
    163  
    164     /** 
    165      * newアクションのパラメータ検証を行う. 
     201            $objFormParam->addParam('パスワード', 'password', '' , '', array('EXIST_CHECK', 'ALNUM_CHECK')); 
     202        } 
     203        $objFormParam->addParam('権限', 'authority', INT_LEN, '', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK')); 
     204        $objFormParam->addParam('稼働/非稼働', 'work', INT_LEN, '', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK')); 
     205        $objFormParam->addParam('ページ', 'pageno', INT_LEN, 'n', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK')); 
     206 
     207        $objFormParam->setParam($arrParams); 
     208        $objFormParam->convParam(); 
     209 
     210    } 
     211 
     212 
     213 
     214    /** 
     215     * パラメータの妥当性検証を行う. 
    166216     * 
    167217     * @param void 
    168218     * @return array エラー情報の連想配列 
    169219     */ 
    170     function validateNewMode() { 
    171         $arrErr = $this->objForm->checkError(); 
     220    function validateData(&$objFormParam, &$arrParams, $mode) { 
     221        $arrErr = $objFormParam->checkError(); 
    172222        if (isset($arrErr) && count($arrErr) > 0) return $arrErr; 
    173223 
    174224        // ログインID・パスワードの文字数チェック 
    175225        $objErr = new SC_CheckError(); 
    176         $objErr->doFunc(array("パスワード", 'password', ID_MIN_LEN, ID_MAX_LEN), array("NUM_RANGE_CHECK")); 
    177         $objErr->doFunc(array("ログインID", 'login_id', ID_MIN_LEN, ID_MAX_LEN), array("NUM_RANGE_CHECK")); 
     226        if($mode == "new") { 
     227            $objErr->doFunc(array("パスワード", 'password', ID_MIN_LEN, ID_MAX_LEN), array("NUM_RANGE_CHECK")); 
     228            $objErr->doFunc(array("ログインID", 'login_id', ID_MIN_LEN, ID_MAX_LEN), array("NUM_RANGE_CHECK")); 
     229        } elseif($mode == "edit") { 
     230            $objErr->doFunc(array("パスワード", 'password', ID_MIN_LEN, ID_MAX_LEN), array("SPTAB_CHECK" ,"NUM_RANGE_CHECK")); 
     231            $objErr->doFunc(array("ログインID", 'login_id', ID_MIN_LEN, ID_MAX_LEN), array("SPTAB_CHECK" ,"NUM_RANGE_CHECK")); 
     232        } 
     233 
    178234 
    179235        $arrErr = $objErr->arrErr; 
    180236 
    181         // 管理者名が登録済みでないか 
    182         if ($this->memberDataExists('name = ?', $_POST['name'])) { 
    183             $arrErr['name'] = "既に登録されている名前なので利用できません。<br>"; 
    184         } 
    185         // ログインIDが登録済みでないか 
    186         if ($this->memberDataExists('login_id = ?', $_POST['login_id'])) { 
    187             $arrErr['login_id'] = "既に登録されているIDなので利用できません。<br>"; 
     237        switch($mode) { 
     238        case "new":  
     239            // 管理者名が登録済みでないか 
     240            if ($this->memberDataExists('name = ?', $arrParams['name'])) { 
     241                $arrErr['name'] = "既に登録されている名前なので利用できません。<br>"; 
     242            } 
     243            // ログインIDが登録済みでないか 
     244            if ($this->memberDataExists('login_id = ?', $arrParams['login_id'])) { 
     245                $arrErr['login_id'] = "既に登録されているIDなので利用できません。<br>"; 
     246            } 
     247            break; 
     248        case "edit": 
     249            // ログインIDが変更されている場合はチェックする。 
     250            if ($arrParams['login_id'] != $arrParams['old_login_id']) { 
     251                // ログインIDが登録済みでないか 
     252                if ($this->memberDataExists('login_id = ?', $arrParams['login_id'])) { 
     253                    $arrErr['login_id'] = "既に登録されているIDなので利用できません。<br>"; 
     254                } 
     255            } 
     256            break; 
    188257        } 
    189258 
     
    191260    } 
    192261 
    193     /** 
    194      * editアクションの実行 
    195      * メンバーデータの更新を行う. 
    196      * 
    197      * @param void 
    198      * @return void 
    199      */ 
    200     function execEditMode() { 
    201         if (SC_Helper_Session_Ex::isValidToken() !== true) { 
    202             SC_Utils::sfDispError(''); 
    203         } 
    204  
    205         $this->objForm = $this->initNewMode("edit"); 
    206  
    207         $arrErr = $this->validateEditMode(); 
    208  
    209         $this->arrForm = $this->objForm->getHashArray(); 
    210  
    211         if (count($arrErr) > 0) { 
    212             // 入力された値を保持する 
    213             $this->tpl_mode      = $this->getMode(); 
    214             $this->tpl_member_id = $this->arrForm['member_id']; 
    215             $this->tpl_old_login_id = $this->arrForm['old_login_id']; 
    216  
    217             // パスワードは保持しない 
    218             $this->arrForm['password'] = ''; 
    219             // エラー情報をセットする 
    220             $this->arrErr = $arrErr; 
    221             return; 
    222         } 
    223  
    224         $this->updateMemberData($this->arrForm['member_id'], $this->arrForm); 
    225         // 親ウィンドウを更新後、自ウィンドウを閉じる。 
    226         $url = ADMIN_SYSTEM_URLPATH . "?pageno=" . $this->arrForm['pageno']; 
    227         $this->tpl_onload = "fnUpdateParent('".$url."'); window.close();"; 
    228     } 
    229  
    230     /** 
    231      * editアクションのパラメータ検証を行う. 
    232      * 
    233      * @param void 
    234      * @return array エラー情報の連想配列 
    235      */ 
    236     function validateEditMode() { 
    237         $arrErr = $this->objForm->checkError(); 
    238         if (isset($arrErr) && count($arrErr) > 0) return $arrErr; 
    239  
    240         // ログインID・パスワードの文字数チェック 
    241         $objErr = new SC_CheckError(); 
    242         $objErr->doFunc(array("パスワード", 'password', ID_MIN_LEN, ID_MAX_LEN), array("SPTAB_CHECK" ,"NUM_RANGE_CHECK")); 
    243         $objErr->doFunc(array("ログインID", 'login_id', ID_MIN_LEN, ID_MAX_LEN), array("SPTAB_CHECK" ,"NUM_RANGE_CHECK")); 
    244  
    245         $arrErr = $objErr->arrErr; 
    246  
    247         // ログインIDが変更されている場合はチェックする。 
    248         if ($_POST['login_id'] != $_POST['old_login_id']) { 
    249             // ログインIDが登録済みでないか 
    250             if ($this->memberDataExists('login_id = ?', $_POST['login_id'])) { 
    251                 $arrErr['login_id'] = "既に登録されているIDなので利用できません。<br>"; 
    252             } 
    253         } 
    254  
    255         return $arrErr; 
    256     } 
    257  
    258     /** 
    259      * defaultアクションを実行する. 
    260      * 初回表示時に実行される. 
    261      * $GET['id']が渡された場合、編集モードとして表示, 
    262      * 無い場合は新規登録モードとして表示する. 
    263      * 
    264      * @param void 
    265      * @return void 
    266      */ 
    267     function execDefaultMode() { 
    268  
    269         // $_GET['id'](member_id)が登録済みのものかチェック。 
    270         // 登録されていない場合は不正なものとして、新規扱いとする。 
    271         $clean_id = ""; 
    272         $clean_mode_flg = "new"; 
    273          
    274         // idが0より大きい数字で整数の場合 
    275         if (isset($_GET['id']) && SC_Utils::sfIsInt($_GET['id']) && $_GET['id'] > 0) { 
    276             if ($this->memberDataExists('member_id = ? AND del_flg = 0', $_GET['id'])) { 
    277                 $clean_id = $_GET['id']; 
    278                 $clean_mode_flg = "edit"; 
    279             } 
    280         } 
    281  
    282         switch($clean_mode_flg) { 
    283         case 'edit': 
    284             $this->tpl_mode      = $clean_mode_flg; 
    285             $this->tpl_member_id = $clean_id; 
    286             $this->tpl_onfocus   = "fnClearText(this.name);"; 
    287             $this->arrForm       = $this->getMemberData($clean_id); 
    288             $this->arrForm['password'] = DEFAULT_PASSWORD; 
    289             $this->tpl_old_login_id    = $this->arrForm['login_id']; 
    290             break; 
    291  
    292         case 'new': 
    293         default: 
    294             $this->tpl_mode = $clean_mode_flg; 
    295             $this->arrForm['authority'] = -1; 
    296             break; 
    297         } 
    298     } 
    299262 
    300263    /** 
Note: See TracChangeset for help on using the changeset viewer.