"", "form" => "", ); //API $organizationId = ""; $qAPIName = ""; $qAPIKey = ""; $qAPISecret = ""; //---------------------------- // 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; $qMode = isset($_REQUEST["q_mode"]) ? $_REQUEST["q_mode"] : REQ_NON; //---------------------------- // judge post //---------------------------- //---------------------------- // set types //---------------------------- Util::setType($qProjectID, "int"); Util::setType($qToken, "string"); Util::setType($qID, "int"); Util::setType($qMode, "int"); //---------------------------- // Auth-Before validate //---------------------------- if ( $result === RES_OK ){ if ( ! Validate::isToken($qToken, "token_common") ){ $result = RES_NG; $gResult->push("{$WORD($wk, 1)}"); } if ( ! Validate::isNumeric($qID) ){ $result = RES_NG; $gResult->push("{$WORD($wk, 2)}"); } if ( ! Validate::isNumeric($qProjectID) ){ $result = RES_NG; $gResult->push("{$WORD($wk, 3)}"); } } //---------------------------- // Auth //---------------------------- if ( $result === RES_OK ){ $auth = Auth::instance("document"); if( ! $auth->write($qID, $qProjectID) ){ $result = RES_NG; $gResult->push("{$WORD($wk, 4)}"); } } //---------------------------- // Auth-After validate //---------------------------- if ( $result === RES_OK ){ if ( ! Validate::inKeyArray($qMode, Document::BATCH_MODE_TABLE()) ){ $result = RES_NG; $gResult->push("{$WORD($wk, 5)}"); } } //---------------------------- // function //---------------------------- //---------------------------- // process //---------------------------- if ( $result === RES_OK ){ DAO::begin(); $objDAODocument = DAO::instance("document"); $objDAOOrganization = DAO::instance("organization"); if ( $result === RES_OK ){ switch ( $qMode ){ //---------------------- case Document::BATCH_MODE_SOURCE_TEXT: // 原文挿入 case Document::BATCH_MODE_SIMILARITY: // 類似文検索 $objDAODocument->setAuth($auth); $resDAODocument = $objDAODocument->get($qID); if ( ($result = $resDAODocument["result"]) !== RES_OK ){ $result = RES_NG; $gResult->push("{$WORD($wk, 6)}"); } // TMXテキストを読み込む $objDocTmx = new DocTmx(); if ( $result === RES_OK ){ $tmx = $resDAODocument["data"][0]["t_document_text"]; if ( $objDocTmx->load($tmx) === FALSE ){ $result = RES_NG; $gResult->push("{$WORD($wk, 7)}"); } } // 類似文検索に必要な対訳集を修得 $arrBilingual = array(); // 組織情報テーブルよりWebAPI接続情報を取得 $organizationId = User::get("organization_id"); $resDAOOrganizationApiInfo = $objDAOOrganization->getApiInfo($organizationId); if ( $resDAOOrganizationApiInfo["result"] === RES_OK ){ $dataApiInfo = $resDAOOrganizationApiInfo["data"][0]; $qAPIName = $dataApiInfo["t_mtauto_name"]; $qAPIKey = $dataApiInfo["t_mtauto_key"]; $qAPISecret = $dataApiInfo["t_mtauto_secret"]; } $objToolSimilarityWebAPI = new ToolSimilarityWebAPI($qAPIName, $qAPIKey, $qAPISecret); if ( $result === RES_OK && $qMode === Document::BATCH_MODE_SIMILARITY ){ //////////////////////////// // 対訳集一覧取得(WebAPI) // //////////////////////////// $resBilinguaList = $objToolSimilarityWebAPI->getListBilingual( "", "", ToolSimilarityWebAPI::LIMIT_LISTBILINGUAL, ToolSimilarityWebAPI::OFFSET_LISTBILINGUAL ); if ($resBilinguaList){ foreach ( $resBilinguaList as $dataBilingualList ){ $arrBilingual[$dataBilingualList['id']] = $dataBilingualList['name']; } } } // 対訳更新 if ( $result === RES_OK ){ $arrSentence = $objDocTmx->getSentence(); foreach ( $arrSentence as &$sentence ){ $textS = trim($sentence["source_text"]); $textT = trim($sentence["target_text"]); // すでに翻訳が入っている場合 if ( strcmp($textT, "") !== 0 ){ continue; } switch ( $qMode ){ //------------------- // 原文挿入 case Document::BATCH_MODE_SOURCE_TEXT: $textT = $textS; break; //------------------- // 類似文検索 case Document::BATCH_MODE_SIMILARITY: //////////////////////// // 類似文検索(WebAPI) // //////////////////////// $resToolSimilarity = $objToolSimilarityWebAPI->run($textS, SCORE, array_keys($arrBilingual), ToolSimilarityWebAPI::LIMIT_RUN); if ( ! is_array($resToolSimilarity) ){ $result = RES_NG; $gResult->push("{$WORD($wk, 9)}"); } else if ( count($resToolSimilarity) === 0 ){ $textT = ""; } else { $textT = $resToolSimilarity[0]["target"]; } break; } if ( $result === RES_NG ){ break; } $sentence["target_text"] = $textT; } $objDocTmx->setSentence($arrSentence); if ( ($tmx = $objDocTmx->saveXML()) === FALSE ){ $result = RES_NG; $gResult->push("{$WORD($wk, 10)}"); } } if ( $result === RES_OK ){ // *実行 $resDAODocument = $objDAODocument->register($qID, NULL, NULL, NULL, NULL, $tmx); if ( ($result = $resDAODocument["result"]) !== RES_OK ){ $result = RES_NG; $gResult->push("{$WORD($wk, 11)}"); } } break; //---------------------- // 機械翻訳実行 case Document::BATCH_MODE_MT: $resDAODocument = $objDAODocument->register($qID, DAO::T_DOCUMENT_STATE_MTWAIT); $result = $resDAODocument["result"]; break; } } //---------------------------- // 結果 //---------------------------- if ( $result === RES_OK ){ $gResult->push("{$WORD($wk, 12)}"); } else { $gResult->push("{$WORD($wk, 13)}"); } DAO::end($result); } //---------------------------- // menu //---------------------------- { // title --------------------------------------------------------------- $title = "{$WORD($wk, 14)}"; // form ---------------------------------------------------------------- if ( $result === RES_OK ){ // アクション(OK) $arrHtml["form"] = Printer::link("OK", "btn btn-default", NULL, NULL, "./"); } else { // アクション(OK) $arrHtml["form"] = Printer::link("OK", "btn btn-default", NULL, NULL, "./"); } // result -------------------------------------------------------------- $arrHtml["result"] = $gResult->string(TRUE, $result); } ?>