"", "result" => "", "form" => "", ); //---------------------------- // request parameter //---------------------------- $qToken = isset($_REQUEST["q_token"]) ? $_REQUEST["q_token"] : REQ_NON; $qID = isset($_REQUEST["q_id"]) ? $_REQUEST["q_id"] : REQ_NON; $qName = isset($_REQUEST["q_name"]) ? $_REQUEST["q_name"] : REQ_NON; $qStart = isset($_REQUEST["q_start"]) ? $_REQUEST["q_start"] : REQ_NON; $qEnd = isset($_REQUEST["q_end"]) ? $_REQUEST["q_end"] : REQ_NON; $qText = isset($_REQUEST["q_text"]) ? $_REQUEST["q_text"] : REQ_NON; $qLangS = isset($_REQUEST["q_lang_s"]) ? $_REQUEST["q_lang_s"] : REQ_NON; $qLangT = isset($_REQUEST["q_lang_t"]) ? $_REQUEST["q_lang_t"] : REQ_NON; $qArrDict = isset($_REQUEST["q_dict"]) ? $_REQUEST["q_dict"] : REQ_NON; $qCopyID = isset($_REQUEST["q_copy_id"]) ? $_REQUEST["q_copy_id"] : REQ_NON; //---------------------------- // judge post //---------------------------- $isPost = ($qToken !== REQ_NON); //---------------------------- // set types //---------------------------- Util::setType($qToken, "string"); Util::setType($qID, "int"); Util::setType($qName, "string"); Util::setType($qStart, "string"); Util::setType($qEnd, "string"); Util::setType($qText, "string"); Util::setType($qLangS, "string"); Util::setType($qLangT, "string"); Util::setType($qArrDict, "string"); Util::setType($qCopyID, "int"); //---------------------------- // 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($qID) ){ $result = RES_NG; $gResult->push("{$WORD($wk, 2)}"); } } else { if ( ! Validate::isNumeric($qID) ){ $qID = INIT_ID; } } } if ( $result === RES_OK ){ if ( Validate::isNumeric($qCopyID) ){ $mode = MODE_COPY; $qID = INIT_ID; } else if ( $qID === INIT_ID ){ $mode = MODE_NEW; } else { $mode = MODE_EDIT; } } //---------------------------- // Auth //---------------------------- if ( $result === RES_OK ){ $auth = Auth::instance("project"); if ( ! $auth->write($qID) ){ $result = RES_NG; $gResult->push("{$WORD($wk, 3)}"); } // コピー元が読み込み可能か確認する if ( $mode === MODE_COPY && ! $auth->processCopy($qCopyID) ){ $result = RES_NG; $gResult->push("{$WORD($wk, 4)}"); } } //---------------------------- // Auth-After validate //---------------------------- if ( $result === RES_OK ){ if ( $isPost ){ if ( ! Validate::isString($qName) ){ $result = RES_NG; $gResult->push("{$WORD($wk, 5)}"); } if ( ! Validate::isDate($qStart) ){ $qStart = date("Y/m/d"); } if ( ! Validate::isDate($qEnd) ){ $qEnd = DAO::NULL; } if ( ! Validate::isLang($qLangS) ){ $result = RES_NG; $gResult->push("{$WORD($wk, 6)}"); } foreach ( $qLangT as $langT ){ if ( ! Validate::isLang($langT) ){ $result = RES_NG; $gResult->push("{$WORD($wk, 7)}"); break; } } $qDict = str_repeat("-", 63); if ( is_array($qArrDict) ){ foreach ( $qArrDict as $id => $flag ){ if ( in_array($flag, $G_ONOFF_TABLE) ){ $qDict = substr($qDict, 0, -($id+1)) . $flag . substr($qDict, -$id); $qDict = substr($qDict, 0, 63); } } } } } //---------------------------- // function //---------------------------- //---------------------------- // process //---------------------------- if ( $result === RES_OK ){ DAO::begin(); $objDAOBbs = DAO::instance("bbs"); $objDAOProject = DAO::instance("project"); $objDAOWorkflow = DAO::instance("workflow"); $objDAOProjectUser = DAO::instance("project_user"); $objViewProject = View::instance("project"); // 更新 -------------------- if ( $isPost ){ // プロジェクト if ( $result === RES_OK ){ $resDAOProject = $objDAOProject->register($qID, NULL, $qLangS, $qLangT, $qName, $qStart, $qEnd, $qText, $qDict, User::get("id"), User::get("organization_id")); $result = $resDAOProject["result"]; if ( $result === RES_OK ){ $qID = $resDAOProject["id"]; } } if ( $mode === MODE_NEW || $mode === MODE_COPY ){ // ワークフロー if ( $result === RES_OK ){ $resDAOWorkflow = $objDAOWorkflow->register(INIT_ID, "workflow", NULL, NULL, $qID); $result = $resDAOWorkflow["result"]; if ( $result === RES_OK ){ $workflowID = $resDAOWorkflow["id"]; } } // 掲示板 if ( $result === RES_OK ){ $resDAOBbs = $objDAOBbs->register(INIT_ID, "BBS", "", $qID); $result = $resDAOBbs["result"]; } // 役割(project-managerの自動割当) if ( $result === RES_OK ){ $arrUserRole = array( User::get("id") => array(Task::ROLE_RPMG) ); $resDAOProjectUser = $objDAOProjectUser->register($qID, $arrUserRole); $result = $resDAOProjectUser["result"]; } } if ( $result === RES_OK && $mode === MODE_COPY ){ $doc = new DocProject(); $doc->create($qCopyID); $validateError = array(); if ( $doc->validate($validateError) ){ // ワークフロー詳細登録 if ( ($workflowDetail = $doc->importWorkflow($qID, $workflowID)) === FALSE ){ $result = RES_NG; } // メンバー登録 else if ( ($arrUserRole = $doc->importMembers($qID, TRUE, User::get("id"))) === FALSE ){ $result = RES_NG; } // 文書登録 else if ( ($arrDocuments = $doc->importDocuments($qID, FALSE, User::get("id"))) === FALSE ){ $result = RES_NG; } // 用語集登録 else if ( ($arrTermRoots = $doc->importTermRoots(Term::KIND_TERM, $qID, FALSE, User::get("id"), User::get("organization_id"))) === FALSE ){ $result = RES_NG; } // 翻訳メモリ登録 else if ( ($arrBilingualRoots = $doc->importTermRoots(Term::KIND_BILINGUAL, $qID, FALSE, User::get("id"), User::get("organization_id"))) === FALSE ){ $result = RES_NG; } // データ登録 else if ( ($arrDatas = $doc->importData($qID, FALSE, User::get("id"), User::get("organization_id"))) === FALSE ){ $result = RES_NG; } // タスク登録 else if ( ($doc->importTask($qID, FALSE, User::get("id"), $workflowID, $qStart, $arrUserRole, $arrDocuments, $arrTermRoots, $arrBilingualRoots, $arrDatas)) === FALSE ){ $result = RES_NG; } if ( count($doc->importMessage) > 0 ){ $gResult->arrStrRes = array_merge($gResult->arrStrRes, $doc->importMessage); } } else { $result = RES_NG; foreach( $validateError as $error ){ $gResult->push($error); } } } if ( $result === RES_OK ){ switch ( $mode ){ case MODE_NEW: $gResult->push("{$WORD($wk, 8)}"); break; case MODE_EDIT: $gResult->push("{$WORD($wk, 9)}"); break; case MODE_COPY: $gResult->push("{$WORD($wk, 10)}"); break; } } else { $gResult->push("{$WORD($wk, 11)}"); } } else { if ( $result === RES_OK ){ switch ( $mode ){ // 新規 -------------------- case MODE_NEW: $qName = $objDAOProject->getInit("t_project_name"); $qStart = $objDAOProject->getInit("t_project_start"); $qEnd = $objDAOProject->getInit("t_project_end"); $qLangS = $objDAOProject->getInit("t_project_lang_s"); $qLangT = $objDAOProject->getInit("t_project_lang_t"); $qText = $objDAOProject->getInit("t_project_text"); $qDict = $objDAOProject->getInit("t_project_qredit_dictionary"); break; // 編集 -------------------- case MODE_EDIT: $objDAOProject->setAuth($auth); $resDAOProject = $objDAOProject->get($qID); $result = $resDAOProject["result"]; if ( $result === RES_OK ){ $dataProject = $resDAOProject["data"][0]; $qName = $dataProject["t_project_name"]; $qStart = $dataProject["t_project_start"]; $qEnd = $dataProject["t_project_end"]; $qLangS = $dataProject["t_project_lang_s"]; $qLangT = $dataProject["t_project_lang_t"]; $qText = $dataProject["t_project_text"]; $qDict = $dataProject["t_project_qredit_dictionary"]; } else { $result = RES_NG; $gResult->push("{$WORD($wk, 12)}"); } break; // コピー -------------------- case MODE_COPY: $objDAOProject->setAuth($auth); $resDAOProject = $objDAOProject->get($qCopyID); $result = $resDAOProject["result"]; if ( $result === RES_OK ){ $dataProject = $resDAOProject["data"][0]; $qName = $dataProject["t_project_name"]; $qStart = $dataProject["t_project_start"]; $qEnd = $dataProject["t_project_end"]; $qLangS = $dataProject["t_project_lang_s"]; $qLangT = $dataProject["t_project_lang_t"]; $qText = $dataProject["t_project_text"]; $qDict = $dataProject["t_project_qredit_dictionary"]; } else { $result = RES_NG; $gResult->push("{$WORD($wk, 13)}"); } break; } } } DAO::end($result); } //---------------------------- // html //---------------------------- { // menu ---------------------------------------------------------------- if ( $result !== RES_NG ){ $arrMenu = array(); switch ( $mode ){ case MODE_NEW: case MODE_COPY: $arrMenu[0] = $objViewProject->tab_list($auth); $arrMenu[-1] = $objViewProject->tab(View_project::TAB_NEW, $auth); break; case MODE_EDIT: $arrMenu[-1] = $objViewProject->tab(View_project::TAB_EDIT, $auth, $qID); $arrMenu[1] = $objViewProject->tab(View_project::TAB_STRUCTURE, $auth, $qID); } //----- $arrHtml["menu"] = Printer::menuTab($arrMenu, -1); } // title --------------------------------------------------------------- switch ( $mode ){ case MODE_NEW: case MODE_COPY: $title = "{$WORD($wk, 14)}"; break; case MODE_EDIT: $title = "{$WORD($wk, 15)}"; break; } // form ---------------------------------------------------------------- if ( $result === RES_OK ){ if ( $isPost ){ // アクション(OK) $arrHtml["form"] = Printer::link("{$WORD($wk, 16)}", "btn btn-default", NULL, NULL, "./detail.html?q_project_id={$qID}"); header("Location: ./detail.html?q_project_id={$qID}"); } else { $arrControl = array(); $arrAction = array(); // フォーム(名前) $arrControl[] = array( "id" => "q_name", "name" => "{$WORD($wk, 17)}", "form" => array( Printer::input("text", "q_name", "q_name", $qName, NULL, array("placeholder" => "{$WORD($wk, 18)}")), ), "validate" => array( "required" => TRUE, ), "required" => TRUE, ); // フォーム(開始日) $arrControl[] = array( "id" => "q_start", "name" => "{$WORD($wk, 19)}", "form" => array( Printer::input("text", "q_start", "q_start", $qStart, NULL, array("placeholder" => "{$WORD($wk, 20)}")), Printer::icon("icon-arrow-right"), Printer::input("text", "q_end", "q_end", $qEnd), ), "validate" => array( "date" => TRUE, ), ); $arrControl[] = array( "id" => "q_end", "name" => NULL, "form" => NULL, "validate" => array( "date" => TRUE, ), ); // フォーム(原言語) $arrControl[] = array( "id" => "q_lang_s", "name" => "{$WORD($wk, 21)}", "form" => array( Printer::select("q_lang_s", "q_lang_s", $G_LANG_TABLE, $qLangS), ), "required" => TRUE, ); // フォーム(訳言語) $arrControl[] = array( "id" => "q_lang_t[]", "name" => "{$WORD($wk, 22)}", "form" => array( Printer::checkbox(NULL, "q_lang_t[]", $G_LANG_TABLE, $qLangT), ), "validate" => array( "required" => true, ), "required" => TRUE, ); // フォーム(コメント) $arrControl[] = array( "id" => "q_text", "name" => "{$WORD($wk, 23)}", "form" => array( Printer::textarea("q_text", "q_text", $qText), ), "fullsize" => TRUE, ); // フォーム(使用辞書) $arrControl[]= array( "id" => "q_dictionary", "name" => "{$WORD($wk, 24)}", "form" => array( $objViewProject->dictionary( $qDict, FALSE ), ), ); // フォーム(id) $arrControl[] = array( "id" => NULL, "name" => NULL, "form" => Printer::input("hidden", "q_id", "q_id", $qID), ); if ( $mode === MODE_COPY ){ // フォーム(copy_id) $arrControl[] = array( "id" => NULL, "name" => NULL, "form" => Printer::input("hidden", "q_copy_id", "q_copy_id", $qCopyID), ); } // フォーム(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"); // アクション(キャンセル) $cancelUrl = "./"; if ( $mode === MODE_EDIT ){ $cancelUrl = "./detail.html?q_project_id={$qID}"; } $arrAction[] = Printer::link("Cancel", "btn btn-default", NULL, NULL, $cancelUrl); $arrHtml["form"] = Printer::form("form_project", "form_project", "./edit.html", "post", $arrControl, $arrAction); } } else { // アクション(OK) $arrHtml["form"] = Printer::link("OK", "btn btn-default", NULL, NULL, "/content/project/"); } // result -------------------------------------------------------------- $arrHtml["result"] = $gResult->string(TRUE, $result); } ?>