Changeset 20362
- Timestamp:
- 2011/02/24 00:12:13 (13 years ago)
- 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 73 73 $this->tpl_pageno = $this->lfCheckPageNo($_REQUEST['pageno']); 74 74 75 $objFormParam = new SC_FormParam(); 76 $arrErr = array(); 77 $arrForm = array(); 78 75 79 switch($this->getMode()) { 76 80 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 79 108 80 109 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 } 82 135 break; 83 136 84 137 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 } 86 168 break; 87 169 } … … 98 180 } 99 181 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値 138 188 * @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')); 151 200 } 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 * パラメータの妥当性検証を行う. 166 216 * 167 217 * @param void 168 218 * @return array エラー情報の連想配列 169 219 */ 170 function validate NewMode() {171 $arrErr = $ this->objForm->checkError();220 function validateData(&$objFormParam, &$arrParams, $mode) { 221 $arrErr = $objFormParam->checkError(); 172 222 if (isset($arrErr) && count($arrErr) > 0) return $arrErr; 173 223 174 224 // ログインID・パスワードの文字数チェック 175 225 $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 178 234 179 235 $arrErr = $objErr->arrErr; 180 236 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; 188 257 } 189 258 … … 191 260 } 192 261 193 /**194 * editアクションの実行195 * メンバーデータの更新を行う.196 *197 * @param void198 * @return void199 */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 void234 * @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 void265 * @return void266 */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 }299 262 300 263 /**
Note: See TracChangeset
for help on using the changeset viewer.