"", "result" => "", "title" => "", "form" => "", "form-reg" => "", "form-role" => "", ); //---------------------------- // request parameter //---------------------------- $qProjectID = isset($_SESSION["project_id"]) ? $_SESSION["project_id"] : REQ_NON; $qID = isset($_REQUEST["q_id"]) ? $_REQUEST["q_id"] : REQ_NON; $qToken = isset($_REQUEST["q_token"]) ? $_REQUEST["q_token"] : REQ_NON; $qTarget = isset($_REQUEST["q_target"]) ? $_REQUEST["q_target"] : REQ_NON; $qUserRole = isset($_REQUEST["q_user_role"]) ? $_REQUEST["q_user_role"] : REQ_NON; //---------------------------- // judge post //---------------------------- $isPost = ($qToken !== REQ_NON); //---------------------------- // set types //---------------------------- Util::setType($qProjectID, "int"); Util::setType($qID, "int"); Util::setType($qToken, "string"); Util::setType($qTarget, "string"); Util::setType($qUserRole, "string"); //---------------------------- // Auth-Before validate //---------------------------- if ( $result === RES_OK ){ if ( $isPost ){ if ( ! Validate::isToken($qToken, "q_token") ){ $result = RES_NG; $gResult->push("{$WORD($wk, 1)}"); } } if ( ! Validate::isNumeric($qProjectID) ){ $result = RES_NG; $gResult->push("{$WORD($wk, 2)}"); } if ( ! Validate::isNumeric($qID) ){ $qID = NULL; } } if ( $result === RES_OK ){ if ( Validate::isNumeric($qID) ){ $organizationID = DAO::storedFunction("get_organization_id_by_user_id", $qID); } else { $organizationID = NULL; } } //---------------------------- // Auth //---------------------------- if ( $result === RES_OK ){ $auth = Auth::instance("project"); if ( ! $auth->write_isMember($qProjectID, $organizationID) ){ $result = RES_NG; $gResult->push("{$WORD($wk, 3)}"); } } //---------------------------- // Auth-After validate //---------------------------- if ( $result === RES_OK ){ if ( $isPost ){ if ( ! Validate::isString($qTarget) ){ $result = RES_NG; $gResult->push("{$WORD($wk, 4)}"); } } if ( Validate::isNumeric($qID) ){ $userIDNumeric = $qID; } if ( ! Validate::isArray($qUserRole) ){ $qUserRole = NULL; } } //---------------------------- // process //---------------------------- if ( $result === RES_OK ){ DAO::begin(); $objDAOOrganization = DAO::instance("organization"); $objDAOProjectUser = DAO::instance("project_user"); $objDAOUser = DAO::instance("user"); $objViewProjectUser = View::instance("project_user"); // 更新 -------------------- if ( $isPost ){ if ( $result === RES_OK ){ $arrUserRole = array(); // 更新するユーザーID $arrTargetUser = explode(",", $qTarget); foreach ( $arrTargetUser as $targetUserID ){ $arrUserRole[$targetUserID] = array(); } // 役割を指定 $setProjectManager = FALSE; if ( is_array($qUserRole) ){ foreach ( $qUserRole as $userRole ){ list($userID, $role) = explode("_", $userRole); $arrUserRole[$userID][] = $role; if ( (int) $role === Task::ROLE_RPMG ){ $setProjectManager = TRUE; } } } if ( ! $setProjectManager ){ //更新しないユーザーに管理者がいる場合はOK $resDAOProjectUser = $objDAOProjectUser->get($qProjectID, NULL, Task::ROLE_RPMG); if ( $resDAOProjectUser["result"] === RES_OK ){ foreach ( $resDAOProjectUser["data"] as $dataProjectUser ){ $userID = $dataProjectUser["t_user_id"]; if ( array_search($userID, $arrTargetUser) === FALSE ){ $setProjectManager = TRUE; break; } } } } if ( ! $setProjectManager ){ $result = RES_NG; $gResult->push("{$WORD($wk, 5)}"); } if ( $result === RES_OK ){ $resDAOProjectUser = $objDAOProjectUser->update($qProjectID, $arrUserRole); $result = $resDAOProjectUser["result"]; if ( $result === RES_OK ){ $gResult->push("{$WORD($wk, 6)}"); } else { $gResult->push("{$WORD($wk, 7)}"); } } } } else { // 組織一覧取得 -------------------- if ( $result === RES_OK ){ $objDAOOrganization->setAuth( Auth::instance("organization") ); $resDAOOrganization = $objDAOOrganization->get(NULL, NULL, TRUE); $result = $resDAOOrganization["result"]; // 指定の組織の権限があるか確認 $arrOrganization = array(); if ( $result === RES_OK ){ foreach ( $resDAOOrganization["data"] as $dataOrganization ){ $orgID = $dataOrganization["t_organization_id"]; if ( $auth->write_isMember($qProjectID, $orgID) ){ $arrOrganization[$orgID] = $dataOrganization; } } if ( count($arrOrganization) === 0 ){ $result = RES_NO_DATA; } } if ( $result === RES_OK ){ // } else if ( $result === RES_NO_DATA ){ $result = RES_NG; $gResult->push("{$WORD($wk, 8)}"); } else { $gResult->push("{$WORD($wk, 9)}"); } } // プロジェクト所属ユーザー取得 -------------------- if ( $result === RES_OK ){ $arrOrg[] = User::get("organization_id"); $resDAOProjectUser = $objDAOProjectUser->get($qProjectID, $qID); if ( $resDAOProjectUser["result"] === RES_OK ){ foreach ( $resDAOProjectUser["data"] as $dataProjectUser ){ $orgID = $dataProjectUser["t_organization_id"]; if ( array_search($orgID, $arrOrg) === FALSE ){ $arrOrg[] = $orgID; } } } else if ( $resDAOProjectUser["result"] === RES_NG ) { $result = $resDAOProjectUser["result"]; $gResult->push("{$WORD($wk, 10)}"); } } // 対象ユーザー取得 -------------------- if ( $result === RES_OK ){ $objDAOUser->setAuth( Auth::instance("user") ); $resDAOUser = $objDAOUser->get($qID, NULL, DAO::T_USER_STATE_ACTIVE, NULL, $arrOrg); $result = $resDAOUser["result"]; if ( $result === RES_OK ){ foreach ( $resDAOUser["data"] as $dataUser ){ $userID = $dataUser["t_user_id"]; $userName = $dataUser["t_user_name"]; $arrTargetUser[] = $userID; $arrUser[$userID] = $dataUser; } } else { $result = RES_NG; $gResult->push("{$WORD($wk, 11)}"); } } // 対象ユーザー取得(役割が設定されているが、卒業したメンバー) -------------------- if ( $result === RES_OK ){ $resDAOProjectUser = $objDAOProjectUser->get($qProjectID, $qID); $result = $resDAOProjectUser["result"]; if ( $result === RES_OK ){ foreach ( $resDAOProjectUser["data"] as $dataProjectUser ){ $role = $dataProjectUser["t_project_user_role"]; $userID = $dataProjectUser["t_user_id"]; $key = "{$userID}_{$role}"; $arrProjectUser[] = $key; // 卒業したメンバー if ( ! in_array($userID, $arrTargetUser) ){ $objDAOUser->setAuth( Auth::instance("user") ); $resDAOUser = $objDAOUser->get($userID); if ( $resDAOUser["result"] === RES_OK ){ $arrTargetUser[] = $userID; $arrUser[$userID] = $resDAOUser["data"][0]; } } } } else if ( $result === RES_NO_DATA ){ $result = RES_OK; } else { $gResult->push("{$WORD($wk, 12)}"); } } if ( $result === RES_OK ){ $arrHtml["form-reg"] = $objViewProjectUser->formReg($arrUser, $arrOrganization); $arrHtml["form-role"] = $objViewProjectUser->formRoleTable($arrUser, $arrProjectUser); } } DAO::end($result); } //---------------------------- // html //---------------------------- { // menu ---------------------------------------------------------------- if ( $result !== RES_NG ){ $arrMenu = array(); //----- $arrMenu[0] = $objViewProjectUser->tab(View_project_user::TAB_LIST, $auth, $qProjectID); $arrMenu[1] = $objViewProjectUser->tab(View_project_user::TAB_EDIT, $auth, $qProjectID); //----- $arrHtml["menu"] = Printer::menuTab($arrMenu, 1); } // title --------------------------------------------------------------- $title = "{$WORD($wk, 13)}"; // form ---------------------------------------------------------------- if ( $result === RES_OK ){ if ( $isPost ){ // アクション(OK) $arrHtml["form"] = Printer::link("{$WORD($wk, 14)}", "btn btn-default", NULL, NULL, "./"); header("Location: ./?q_project_id={$qProjectID}"); } else { if ( ! $qID ){ $arrHtml["title"] = $objViewProjectUser->wizard(); } //-------------------------------- // ユーザー選択フォーム //-------------------------------- $arrControl = array(); $arrAction = array(); // フォーム(ユーザー) $arrControl[] = array( "id" => NULL, "name" => NULL, "form" => $arrHtml["form-reg"], ); // アクション // アクション(OK) $arrAction[] = Printer::input("submit", NULL, NULL, "{$WORD($wk, 15)}", "btn btn-primary"); // アクション(キャンセル) $arrAction[] = Printer::link("Cancel", "btn btn-default", NULL, NULL, "./"); $arrHtml["form-reg"] = Printer::form("form_project_member_select", "form_project_member_select", NULL, NULL, $arrControl, $arrAction, NULL, FALSE); $arrControl = array(); $arrAction = array(); // フォーム(ユーザー) $arrControl[] = array( "id" => NULL, "name" => NULL, "form" => $arrHtml["form-role"], ); // フォーム(id) $arrControl[] = array( "id" => NULL, "name" => NULL, "form" => Printer::input("hidden", "q_id", "q_id", $qProjectID), ); // フォーム(対象ユーザー) $arrControl[] = array( "id" => NULL, "name" => NULL, "form" => Printer::input("hidden", "q_target", "q_target", implode(",", $arrTargetUser)), ); // フォーム(token) $arrControl[] = array( "id" => NULL, "name" => NULL, "form" => Printer::input("hidden", "q_token", "q_token", Util::token()), ); // アクション // アクション(OK) $arrAction[] = Printer::input("submit", NULL, NULL, "OK", "btn btn-primary"); if ( ! $qID ){ // アクション(Back) $arrAction[] = Printer::link("{$WORD($wk, 16)}", "btn btn-default", NULL, NULL, NULL, "minhon.member.onClickBack();"); } // アクション(キャンセル) $arrAction[] = Printer::link("Cancel", "btn btn-default", NULL, NULL, "./"); $arrHtml["form"] = Printer::form("form_project_member_edit", "form_project_member_edit", "./edit.html", "post", $arrControl, $arrAction, NULL, FALSE); } } else { // アクション(OK) $arrHtml["form"] = Printer::link("OK", "btn btn btn-default", NULL, NULL, "./"); } // result -------------------------------------------------------------- $arrHtml["result"] = $gResult->string(TRUE, $result); } ?>