Ejemplo n.º 1
0
 /**
  * This method adds an engine in a user's keyring
  */
 private function add()
 {
     $newEngine = null;
     $validEngine = true;
     switch (strtolower($this->provider)) {
         case strtolower(Constants_Engines::MICROSOFT_HUB):
             /**
              * Create a record of type MicrosoftHub
              */
             $newEngine = EnginesModel_MicrosoftHubStruct::getStruct();
             $newEngine->name = $this->name;
             $newEngine->uid = $this->uid;
             $newEngine->type = Constants_Engines::MT;
             $newEngine->extra_parameters['client_id'] = $this->engineData['client_id'];
             $newEngine->extra_parameters['client_secret'] = $this->engineData['secret'];
             break;
         case strtolower(Constants_Engines::MOSES):
             /**
              * Create a record of type Moses
              */
             $newEngine = EnginesModel_MosesStruct::getStruct();
             $newEngine->name = $this->name;
             $newEngine->uid = $this->uid;
             $newEngine->type = Constants_Engines::MT;
             $newEngine->base_url = $this->engineData['url'];
             $newEngine->extra_parameters['client_secret'] = $this->engineData['secret'];
             break;
         case strtolower(Constants_Engines::IP_TRANSLATOR):
             /**
              * Create a record of type IPTranslator
              */
             $newEngine = EnginesModel_IPTranslatorStruct::getStruct();
             $newEngine->name = $this->name;
             $newEngine->uid = $this->uid;
             $newEngine->type = Constants_Engines::MT;
             $newEngine->extra_parameters['client_secret'] = $this->engineData['secret'];
             break;
         case strtolower(Constants_Engines::DEEPLINGO):
             /**
              * Create a record of type IPTranslator
              */
             $newEngine = EnginesModel_DeepLingoStruct::getStruct();
             $newEngine->name = $this->name;
             $newEngine->uid = $this->uid;
             $newEngine->type = Constants_Engines::MT;
             $newEngine->base_url = $this->engineData['url'];
             $newEngine->extra_parameters['client_secret'] = $this->engineData['secret'];
             break;
         case strtolower(Constants_Engines::LETSMT):
             /**
              * Create a record of type LetsMT
              */
             $newEngine = EnginesModel_LetsMTStruct::getStruct();
             $newEngine->name = $this->name;
             $newEngine->uid = $this->uid;
             $newEngine->type = Constants_Engines::MT;
             $newEngine->extra_parameters['client_id'] = $this->engineData['client_id'];
             $newEngine->extra_parameters['system_id'] = $this->engineData['system_id'];
             // whether this has been set or not indicates whether we should
             // return the newly added system's id or the list of available systems
             // for the user to choose from. the check happens later on
             $newEngine->extra_parameters['terms_id'] = $this->engineData['terms_id'];
             $newEngine->extra_parameters['use_qe'] = $this->engineData['use_qe'];
             $newEngine->extra_parameters['source_lang'] = $this->engineData['source_lang'];
             $newEngine->extra_parameters['target_lang'] = $this->engineData['target_lang'];
             if ($newEngine->extra_parameters['use_qe']) {
                 $minQEString = $this->engineData['minimum_qe'];
                 if (!is_numeric($minQEString)) {
                     $this->result['errors'][] = array('code' => -13, 'message' => "Minimum QE score should be a number between 0 and 1.");
                     return;
                 }
                 $minimumQEScore = floatval($minQEString);
                 if ($minimumQEScore < 0 || $minimumQEScore > 1) {
                     $this->result['errors'][] = array('code' => -13, 'message' => "Minimum QE score should be a number between 0 and 1.");
                     return;
                 }
                 $newEngine->extra_parameters['minimum_qe'] = $minimumQEScore;
             }
             break;
         default:
             $validEngine = false;
     }
     if (!$validEngine) {
         $this->result['errors'][] = array('code' => -4, 'message' => "Engine not allowed");
         return;
     }
     $engineDAO = new EnginesModel_EngineDAO(Database::obtain());
     $result = $engineDAO->create($newEngine);
     if (!$result instanceof EnginesModel_EngineStruct) {
         $this->result['errors'][] = array('code' => -9, 'message' => "Creation failed. Generic error");
         return;
     }
     if ($newEngine instanceof EnginesModel_MicrosoftHubStruct) {
         $engine_test = Engine::getInstance($result->id);
         $config = $engine_test->getConfigStruct();
         $config['segment'] = "Hello World";
         $config['source'] = "en-US";
         $config['target'] = "fr-FR";
         $mt_result = $engine_test->get($config);
         if (isset($mt_result['error']['code'])) {
             $this->result['errors'][] = $mt_result['error'];
             $engineDAO->delete($result);
             return;
         }
     } elseif ($newEngine instanceof EnginesModel_IPTranslatorStruct) {
         $engine_test = Engine::getInstance($result->id);
         /**
          * @var $engine_test Engines_IPTranslator
          */
         $config = $engine_test->getConfigStruct();
         $config['source'] = "en-US";
         $config['target'] = "fr-FR";
         $mt_result = $engine_test->ping($config);
         if (isset($mt_result['error']['code'])) {
             $this->result['errors'][] = $mt_result['error'];
             $engineDAO->delete($result);
             return;
         }
     } elseif ($newEngine instanceof EnginesModel_LetsMTStruct && empty($this->engineData['system_id'])) {
         // the user has not selected a translation system. only the User ID and the engine's name has been entered
         // get the list of available systems and return it to the user
         $temp_engine = Engine::getInstance($result->id);
         $config = $temp_engine->getConfigStruct();
         $systemList = $temp_engine->getSystemList($config);
         $engineDAO->delete($result);
         // delete the newly added engine. this is the first time in engineController::add()
         // and the user has not yet selected a translation system
         if (isset($systemList['error']['code'])) {
             $this->result['errors'][] = $systemList['error'];
             return;
         }
         $uiConfig = array('client_id' => array('value' => $this->engineData['client_id']), 'system_id' => array(), 'terms_id' => array());
         foreach ($systemList as $systemID => $systemInfo) {
             $uiConfig['system_id'][$systemID] = array('value' => $systemInfo['name'], 'data' => $systemInfo['metadata']);
         }
         $this->result['name'] = $this->name;
         $this->result['data']['config'] = $uiConfig;
     } elseif ($newEngine instanceof EnginesModel_LetsMTStruct) {
         // The user has added and configured the Tilde MT engine (the System ID has been set)
         // Do a simple translation request so that the system wakes up by the time the user needs it for translating
         $engine_test = Engine::getInstance($result->id);
         $engine_test->wakeUp();
     }
     $this->result['data']['id'] = $result->id;
 }
Ejemplo n.º 2
0
 /**
  * This method adds an engine in a user's keyring
  */
 private function add()
 {
     $newEngine = null;
     $validEngine = true;
     switch (strtolower($this->provider)) {
         case strtolower(Constants_Engines::MICROSOFT_HUB):
             /**
              * Create a record of type MicrosoftHub
              */
             $newEngine = EnginesModel_MicrosoftHubStruct::getStruct();
             $newEngine->name = $this->name;
             $newEngine->uid = $this->uid;
             $newEngine->type = Constants_Engines::MT;
             $newEngine->extra_parameters['client_id'] = $this->engineData['client_id'];
             $newEngine->extra_parameters['client_secret'] = $this->engineData['secret'];
             break;
         case strtolower(Constants_Engines::MOSES):
             /**
              * Create a record of type Moses
              */
             $newEngine = EnginesModel_MosesStruct::getStruct();
             $newEngine->name = $this->name;
             $newEngine->uid = $this->uid;
             $newEngine->type = Constants_Engines::MT;
             $newEngine->base_url = $this->engineData['url'];
             $newEngine->extra_parameters['client_secret'] = $this->engineData['secret'];
             break;
         case strtolower(Constants_Engines::IP_TRANSLATOR):
             /**
              * Create a record of type IPTranslator
              */
             $newEngine = EnginesModel_IPTranslatorStruct::getStruct();
             $newEngine->name = $this->name;
             $newEngine->uid = $this->uid;
             $newEngine->type = Constants_Engines::MT;
             $newEngine->extra_parameters['client_secret'] = $this->engineData['secret'];
             break;
         case strtolower(Constants_Engines::DEEPLINGO):
             /**
              * Create a record of type IPTranslator
              */
             $newEngine = EnginesModel_DeepLingoStruct::getStruct();
             $newEngine->name = $this->name;
             $newEngine->uid = $this->uid;
             $newEngine->type = Constants_Engines::MT;
             $newEngine->base_url = $this->engineData['url'];
             $newEngine->extra_parameters['client_secret'] = $this->engineData['secret'];
             break;
         default:
             $validEngine = false;
     }
     if (!$validEngine) {
         $this->result['errors'][] = array('code' => -4, 'message' => "Engine not allowed");
         return;
     }
     $engineDAO = new EnginesModel_EngineDAO(Database::obtain());
     $result = $engineDAO->create($newEngine);
     if (!$result instanceof EnginesModel_EngineStruct) {
         $this->result['errors'][] = array('code' => -9, 'message' => "Creation failed. Generic error");
         return;
     }
     if ($newEngine instanceof EnginesModel_MicrosoftHubStruct) {
         $engine_test = Engine::getInstance($result->id);
         $config = $engine_test->getConfigStruct();
         $config['segment'] = "Hello World";
         $config['source'] = "en-US";
         $config['target'] = "fr-FR";
         $mt_result = $engine_test->get($config);
         if (isset($mt_result['error']['code'])) {
             $this->result['errors'][] = $mt_result['error'];
             $engineDAO->delete($result);
             return;
         }
     } elseif ($newEngine instanceof EnginesModel_IPTranslatorStruct) {
         $engine_test = Engine::getInstance($result->id);
         /**
          * @var $engine_test Engines_IPTranslator
          */
         $config = $engine_test->getConfigStruct();
         $config['source'] = "en-US";
         $config['target'] = "fr-FR";
         $mt_result = $engine_test->ping($config);
         if (isset($mt_result['error']['code'])) {
             $this->result['errors'][] = $mt_result['error'];
             $engineDAO->delete($result);
             return;
         }
     }
     $this->result['data']['id'] = $result->id;
 }