tpl_recv = 'input.php'; $this->tpl_pageno = $_REQUEST['pageno']; $this->SHORTTEXT_MAX = STEXT_LEN; $this->MIDDLETEXT_MAX = MTEXT_LEN; $this->LONGTEXT_MAX = LTEXT_LEN; global $arrAUTHORITY; $this->arrAUTHORITY = $arrAUTHORITY; } } $conn = new SC_DbConn(); $objPage = new LC_Page(); $objView = new SC_AdminView(); // 認証可否の判定 $objSess = new SC_Session(); sfIsSuccess($objSess); // member_idが指定されていた場合、編集モードとする。 if(sfIsInt($_GET['id'])) { $objPage->tpl_mode = 'edit'; $objPage->tpl_member_id = $_GET['id']; $objPage->tpl_onfocus = "fnClearText(this.name);"; // DBのメンバー情報を読み出す $data_list = fnGetMember($conn, $_GET['id']); // 該当ユーザを表示させる $objPage->arrForm = $data_list[0]; // ダミーのパスワードをセットしておく。 $objPage->arrForm['password'] = DUMMY_PASS; // ログインIDを保管しておく。 $objPage->tpl_old_login_id = $data_list[0]['login_id']; } else { // 新規作成モード $objPage->tpl_mode = "new"; $objPage->arrForm['authority'] = -1; } // 新規作成モード or 編集モード if( $_POST['mode'] == 'new' || $_POST['mode'] == 'edit') { // 入力エラーチェック $objPage->arrErr = fnErrorCheck($conn); // 入力が正常であった場合は、DBに書き込む if(count($objPage->arrErr) == 0) { if($_POST['mode'] == 'new') { // メンバーの追加 fnInsertMember(); // リロードによる二重登録対策のため、同じページに飛ばす。 header("Location: ". $_SERVER['PHP_SELF'] . "?mode=reload"); exit; } if($_POST['mode'] == 'edit') { // メンバーの追加 if(fnUpdateMember($_POST['member_id'])) { // 親ウィンドウを更新後、自ウィンドウを閉じる。 $url = URL_SYSTEM_TOP . "?pageno=".$_POST['pageno']; $objPage->tpl_onload="fnUpdateParent('".$url."'); window.close();"; } } // 入力エラーが発生した場合 } else { // モードの設定 $objPage->tpl_mode = $_POST['mode']; $objPage->tpl_member_id = $_POST['member_id']; $objPage->tpl_old_login_id = $_POST['old_login_id']; // すでに入力した値を表示する。 $objPage->arrForm = $_POST; // 通常入力のパスワードは引き継がない。 if($objPage->arrForm['password'] != DUMMY_PASS) { $objPage->arrForm['password'] = ''; } } } // リロードの指定があった場合 if( $_GET['mode'] == 'reload') { // 親ウィンドウを更新するようにセットする。 $url = URL_SYSTEM_TOP; $objPage->tpl_onload="fnUpdateParent('".$url."')"; } // テンプレート用変数の割り当て $objView->assignobj($objPage); $objView->display('system/input.tpl'); /* 入力エラーのチェック */ function fnErrorCheck($conn) { $objErr = new SC_CheckError(); $_POST["name"] = mb_convert_kana($_POST["name"] ,"KV"); $_POST["department"] = mb_convert_kana($_POST["department"] ,"KV"); // 名前チェック $objErr->doFunc(array("名前",'name'), array("EXIST_CHECK")); $objErr->doFunc(array("名前",'name',STEXT_LEN,"BIG"), array("MAX_LENGTH_CHECK")); // 編集モードでない場合は、重複チェック if (!isset($objErr->arrErr['name']) && $_POST['mode'] != 'edit') { $sql = "SELECT name FROM dtb_member WHERE del_flg <> 1 AND name = ?"; $result = $conn->getOne($sql, array($_POST['name'])); if ( $result ) { $objErr->arrErr['name'] = "既に登録されている名前なので利用できません。
"; } } // ログインIDチェック $objErr->doFunc(array("ログインID",'login_id'), array("EXIST_CHECK", "ALNUM_CHECK")); $objErr->doFunc(array("ログインID",'login_id',ID_MIN_LEN , ID_MAX_LEN) ,array("NUM_RANGE_CHECK")); // 新規モードもしくは、編集モードでログインIDが変更されている場合はチェックする。 if (!isset($objErr->arrErr['login_id']) && $_POST['mode'] != 'edit' || ($_POST['mode'] == 'edit' && $_POST['login_id'] != $_POST['old_login_id'])) { $sql = "SELECT login_id FROM dtb_member WHERE del_flg <> 1 AND login_id = ?"; $result = $conn->getOne($sql, array($_POST['login_id'])); if ( $result != "" ) { $objErr->arrErr['login_id'] = "既に登録されているIDなので利用できません。
"; } } // パスワードチェック(編集モードでDUMMY_PASSが入力されている場合は、スルーする) if(!($_POST['mode'] == 'edit' && $_POST['password'] == DUMMY_PASS)) { $objErr->doFunc(array("パスワード",'password'), array("EXIST_CHECK", "ALNUM_CHECK")); if (!$arrErr['password']) { // パスワードのチェック $objErr->doFunc( array("パスワード",'password',4 ,15 ) ,array( "NUM_RANGE_CHECK" ) ); } } // 権限チェック $objErr->doFunc(array("権限",'authority'),array("EXIST_CHECK")); return $objErr->arrErr; } /* DBへのデータ挿入 */ function fnInsertMember() { // クエリークラスの宣言 $oquery = new SC_Query(); // INSERTする値を作成する。 $sqlval['name'] = $_POST['name']; $sqlval['department'] = $_POST['department']; $sqlval['login_id'] = $_POST['login_id']; $sqlval['password'] = sha1($_POST['password'] . ":" . AUTH_MAGIC); $sqlval['authority'] = $_POST['authority']; $sqlval['rank']= $oquery->max("dtb_member", "rank") + 1; $sqlval['work'] = "1"; // 稼働に設定 $sqlval['del_flg'] = "0"; // 削除フラグをOFFに設定 $sqlval['creator_id'] = $_SESSION['member_id']; $sqlval['create_date'] = "now()"; $sqlval['update_date'] = "now()"; // INSERTの実行 $ret = $oquery->insert("dtb_member", $sqlval); return $ret; } /* DBへのデータ更新 */ function fnUpdateMember($id) { // クエリークラスの宣言 $oquery = new SC_Query(); // INSERTする値を作成する。 $sqlval['name'] = $_POST['name']; $sqlval['department'] = $_POST['department']; $sqlval['login_id'] = $_POST['login_id']; if($_POST['password'] != DUMMY_PASS) { $sqlval['password'] = sha1($_POST['password'] . ":" . AUTH_MAGIC); } $sqlval['authority'] = $_POST['authority']; $sqlval['update_date'] = "now()"; // UPDATEの実行 $where = "member_id = " . $id; $ret = $oquery->update("dtb_member", $sqlval, $where); return $ret; } /* DBからデータの読み込み */ function fnGetMember($conn, $id) { $sqlse = "SELECT name,department,login_id,authority FROM dtb_member WHERE member_id = ?"; $ret = $conn->getAll($sqlse, Array($id)); return $ret; } ?>