"", "title" => "", "result" => "", "form" => "", ); //---------------------------- // request parameter //---------------------------- $qProjectID = isset($_SESSION["project_id"]) ? $_SESSION["project_id"] : REQ_NON; $qToken = isset($_REQUEST["q_token"]) ? $_REQUEST["q_token"] : REQ_NON; $qID = isset($_REQUEST["q_id"]) ? $_REQUEST["q_id"] : REQ_NON; $qTitle = isset($_REQUEST["q_title"]) ? $_REQUEST["q_title"] : REQ_NON; $qTargetAllDocument = isset($_REQUEST["q_target_all_document"]) ? $_REQUEST["q_target_all_document"] : REQ_NON; $qTargetDocumentID = isset($_REQUEST["q_target_document_id"]) ? $_REQUEST["q_target_document_id"] : REQ_NON; $qCompleteRegister = isset($_REQUEST["q_complete_register"]) ? $_REQUEST["q_complete_register"] : REQ_NON; $qRegisterTermRootID = isset($_REQUEST["q_register_term_root_id"]) ? $_REQUEST["q_register_term_root_id"] : 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; //---------------------------- // judge post //---------------------------- $isPost = ($qToken !== REQ_NON); //---------------------------- // set types //---------------------------- Util::setType($qToken, "string"); Util::setType($qProjectID, "int"); Util::setType($qID, "int"); Util::setType($qTitle, "string"); Util::setType($qTargetAllDocument, "int"); Util::setType($qTargetDocumentID, "int"); Util::setType($qCompleteRegister, "int"); Util::setType($qRegisterTermRootID, "int"); Util::setType($qlangS, "string"); Util::setType($qlangT, "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 ( $isPost ){ if ( ! Validate::isNumeric($qID) ){ $result = RES_NG; $gResult->push("{$WORD($wk, 2)}"); } } else { if ( ! Validate::isNumeric($qID) ){ $qID = INIT_ID; } } if ( ! Validate::isNumeric($qProjectID) ){ $result = RES_NG; $gResult->push("{$WORD($wk, 3)}"); } } //---------------------------- // Auth //---------------------------- if ( $result === RES_OK ){ $auth = Auth::instance("exterm"); $authTermRoot = Auth::instance("term_root", Term::KIND_TERM); if ( ! $auth->write($qID, $qProjectID) ){ $result = RES_NG; $gResult->push("{$WORD($wk, 4)}"); } } //---------------------------- // Auth-After validate //---------------------------- if ( $result === RES_OK ){ if ( ! Validate::inKeyArray($qTargetAllDocument, $G_ONOFF_TABLE) ){ if ( $isPost ){ $qTargetAllDocument = OFF; } else { $qTargetAllDocument = ON; $qTargetDocumentID = INIT_ID; } } if ( $qTargetAllDocument === ON ){ $qTargetDocumentID = INIT_ID; } else if ( $qTargetDocumentID == REQ_NON ){ $result = RES_NG; $gResult->push("{$WORD($wk, 5)}"); } if ( $isPost ){ if ( ! Validate::inKeyArray($qCompleteRegister, View_exterm::COMPLETE_REGISTER_TABLE()) ){ $qCompleteRegister = View_exterm::COMPLETE_REGISTER_NONE; $qRegisterTermRootID = INIT_ID; } else { switch ( $qCompleteRegister ){ case View_exterm::COMPLETE_REGISTER_NONE: $qRegisterTermRootID = INIT_ID; break; case View_exterm::COMPLETE_REGISTER_NEW: $qRegisterTermRootID = INIT_ID; break; case View_exterm::COMPLETE_REGISTER_SELECT: if ( ! Validate::isNumeric($qRegisterTermRootID) ){ $result = RES_NG; $gResult->push("{$WORD($wk, 6)}"); } break; } } } } //---------------------------- // process //---------------------------- if ( $result === RES_OK ){ DAO::begin(); $objDAOExterm = DAO::instance("exterm"); $objDAOProject = DAO::instance("project"); $objDAODocument = DAO::instance("document"); $objDAODocumentText = DAO::instance("document_text"); $objViewExterm = View::instance("exterm"); $objViewTermRoot = View::instance("term_root", Term::KIND_TERM); $objProject = new Project($qProjectID); if ( $arrAppended = $objProject->getAppended() ){ // 使用可能文書一覧 if ( isset($arrAppended["document_webapi_exterm"]) ){ $arrDocument = $arrAppended["document_webapi_exterm"]; } // 使用可能用語集一覧 if ( isset($arrAppended["term-normal_webapi_exterm"]) ){ $arrTermRoot = $arrAppended["term-normal_webapi_exterm"]; } } // 登録 -------------------- if ( $isPost ){ // 登録し、IDを取得する if ( $result === RES_OK ){ $state = DAO::T_EXTERM_STATE_NORMAL; if ( $qCompleteRegister === View_exterm::COMPLETE_REGISTER_NEW ){ $state = DAO::T_EXTERM_STATE_PROVISIONAL; } $resDAOExterm = $objDAOExterm->register($qID, $state, $qTitle, $qlangS, $qlangT, $qRegisterTermRootID, $qProjectID, User::get("id")); $result = $resDAOExterm["result"]; if ( $result === RES_OK ){ $qID = $resDAOExterm["id"]; } } if ( $result === RES_OK ){ $dir = Setting::get("PATH_DATA_EXTERM")."/{$qID}"; if ( ! Tool::makeDir($dir) ){ $result = RES_NG; $gResult->push("{$WORD($wk, 10)}"); } else { chmod($dir, 0770); } } // 用語抽出するファイル生成 if ( $result === RES_OK ){ $arrTargetDocument = array(); if ( $qTargetAllDocument === ON ){ $arrTargetDocument = array_keys($arrDocument); } else { $arrTargetDocument = $qTargetDocumentID; } if ( count($arrTargetDocument) > 0 ){ $f = fopen("{$dir}/{$qID}.tsv", "w"); $offset = 0; $limit = 1000; do { $resDAODocumentText = $objDAODocumentText->get($arrTargetDocument, NULL, $limit, $offset); if ( $resDAODocumentText["result"] === RES_OK ){ foreach ( $resDAODocumentText["data"] as $dataDocumentText ){ $textS = $dataDocumentText["t_document_text_s"]; $textS = mb_convert_encoding($textS, "UTF-8", "UTF-8,EUC-JP,SJIS,JIS,ASCII"); $textS = preg_replace("/(\r|\n)/", "", $textS); $textT = $dataDocumentText["t_document_text_t"]; $textT = mb_convert_encoding($textT, "UTF-8", "UTF-8,EUC-JP,SJIS,JIS,ASCII"); $textT = preg_replace("/(\r|\n)/", "", $textT); fwrite($f, "{$textS}\t{$textT}\n"); } } $offset += $limit; } while ( $resDAODocumentText["count"] > $offset ); fclose($f); } else { $result = RES_NG; } if ( $result !== RES_OK ){ $gResult->push("{$WORD($wk, 11)}"); } } } else { if ( $result === RES_OK ){ if ( $qID === INIT_ID ){ $qTitle = $objDAOExterm->getInit("t_exterm_title"); } } if ( $result === RES_OK ){ } } DAO::end($result); } //---------------------------- // menu //---------------------------- { // menu ---------------------------------------------------------------- if ( $result !== RES_NG ){ $arrMenu = array(); $arrMenu[100] = $objViewTermRoot->tab(Term::KIND_TERM, View_term_root::TAB_LIST, $authTermRoot, $qProjectID); $arrMenu[101] = $objViewTermRoot->tab(Term::KIND_TERM, View_term_root::TAB_NEW, $authTermRoot, $qProjectID); $arrMenu[102] = $objViewTermRoot->tab(Term::KIND_TERM, View_term_root::TAB_SEARCH, $authTermRoot, $qProjectID); $arrMenu[0] = $objViewExterm->tab(View_exterm::TAB_LIST, $auth, $qProjectID); $arrMenu[1] = $objViewExterm->tab(View_exterm::TAB_NEW, $auth, $qProjectID); $arrHtml["menu"] = Printer::menuTab($arrMenu, 1); } // title --------------------------------------------------------------- $title = "{$WORD($wk, 12)}"; // form ---------------------------------------------------------------- if ( $result === RES_OK ){ if ( $isPost ){ if ( $qCompleteRegister === View_exterm::COMPLETE_REGISTER_NEW ){ $arrRequest = array( "q_kind" => Term::KIND_TERM, "q_exterm_id" => $qID, "q_project_id" => $qProjectID, ); header("Location: /content/term_root/edit.html?".http_build_query($arrRequest)); } else { $arrRequest = array( "q_project_id" => $qProjectID, ); header("Location: /content/exterm/?".http_build_query($arrRequest)); } } else { $arrControl = array(); $arrAction = array(); // フォーム(タイトル) $arrControl[] = array( "id" => "q_title", "name" => "{$WORD($wk, 13)}", "form" => array( Printer::input("text", "q_title", "q_title", $qTitle, NULL, array("placeholder" => "{$WORD($wk, 14)}")), ), ); // フォーム(言語) $arrControl[] = array( "id" => "q_lang", "name" => "言語", "form" => array( Printer::select("q_lang_s", "q_lang_s", $G_EXTERM_LANG_TABLE, LANG_JA), Printer::icon("icon-arrow-right"), Printer::select("q_lang_t", "q_lang_t", $G_EXTERM_LANG_TABLE, LANG_EN), ), ); // フォーム(抽出対象) $arrControl[] = array( "id" => "q_target_all_document", "name" => "{$WORD($wk, 15)}", "form" => array( $objViewExterm->formTarget($arrDocument, $qTargetAllDocument === ON ? array() : $qTargetDocumentID), ), "validate" => array( "required_target_document" => FALSE, ), "required" => TRUE, ); $arrControl[] = array( "id" => "q_complete_register", "name" => "{$WORD($wk, 16)}", "form" => array( $objViewExterm->formCompleteRegisterTermRoot(FALSE, $arrTermRoot, $qRegisterTermRootID), ), "validate" => array( "required_complete_register" => TRUE, ), ); // フォーム(プロジェクトID) $arrControl[] = array( "id" => NULL, "name" => NULL, "form" => array( Printer::input("hidden", "q_project_id", "q_project_id", $qProjectID), ), ); // フォーム(ID) $arrControl[] = array( "id" => NULL, "name" => NULL, "form" => array( Printer::input("hidden", "q_id", "q_id", $qID), ), ); // フォーム(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"); // アクション(キャンセル) $arrAction[] = Printer::link("Cancel", "btn btn-default", NULL, NULL, "./"); $arrHtml["form"] = Printer::form("form_exterm", "form_exterm", "./edit.html", "post", $arrControl, $arrAction); } } else { // アクション(OK) $arrHtml["form"] = Printer::link("OK", "btn btn-default", NULL, NULL, "./"); } // result -------------------------------------------------------------- $arrHtml["result"] = $gResult->string(TRUE, $result); } ?>