public static function languages_map($service)
 {
     $languages_map = array();
     $languages = TranslationProxy_Api::proxy_request("/services/{$service->id}/language_identifiers.json");
     foreach ($languages as $language) {
         $languages_map[$language->iso_code] = $language->value;
     }
     return $languages_map;
 }
 /**
  * @param int|bool $service_id If not given, will use the current service ID (if any)
  * @param bool $force_reload Force reload custom fields from Translation Service
  *
  * @throws TranslationProxy_Api_Error
  * @throws InvalidArgumentException
  * @return array|mixed|null|string
  */
 public static function get_custom_fields($service_id = false, $force_reload = false)
 {
     if (!$service_id) {
         $service_id = self::get_current_service_id();
     }
     if (!$service_id) {
         return false;
     }
     $translation_service = self::get_current_service();
     if ($translation_service && !$force_reload) {
         return isset($translation_service->custom_fields) ? $translation_service->custom_fields : false;
     }
     $params = array('service_id' => $service_id);
     return TranslationProxy_Api::proxy_request('/services/{service_id}/custom_fields.json', $params);
 }
 public static function get_extra_fields_remote($project = null)
 {
     if (!$project) {
         $project = self::get_current_project();
     }
     $api_version = TranslationProxy_Api::API_VERSION;
     $params = array('accesskey' => $project->access_key, 'api_version' => $api_version, 'project_id' => $project->id);
     return TranslationProxy_Api::proxy_request('/projects/{project_id}/extra_fields.json', $params);
 }
 public function get_extra_fields_remote($project)
 {
     $params = array('accesskey' => $project->access_key, 'api_version' => self::API_VERSION, 'project_id' => $project->id);
     return TranslationProxy_Api::proxy_request('/projects/{project_id}/extra_fields.json', $params);
 }
 /**
  * @param string    $state
  * @param null|bool $include_archived `null` ignores this argument, `true` or `false` filters by this argument
  *
  * @return mixed
  */
 private function get_jobs($state = 'any', $include_archived = null)
 {
     $batch = TranslationProxy_Basket::get_batch_data();
     $params = array('project_id' => $this->id, 'accesskey' => $this->access_key, 'state' => $state);
     if (null !== $include_archived) {
         $params['archived'] = $include_archived;
     }
     if ($batch) {
         $params['batch_id'] = $batch ? $batch->id : false;
         return TranslationProxy_Api::proxy_request('/batches/{batch_id}/jobs.json', $params);
     } else {
         //FIXME: remove this once TP will accept the TP Project ID: https://icanlocalize.basecamphq.com/projects/11113143-translation-proxy/todo_items/182251206/comments
         $params['project_id'] = $this->id;
     }
     try {
         return TranslationProxy_Api::proxy_request('/jobs.json', $params);
     } catch (Exception $ex) {
         $this->add_error($ex->getMessage());
         return false;
     }
 }
 /**
  * @param string $state
  *
  * @return mixed
  */
 private function get_jobs($state = 'any')
 {
     $batch = TranslationProxy_Basket::get_batch_data();
     $params = array('project_id' => $this->id, 'accesskey' => $this->access_key, 'state' => $state);
     if ($batch) {
         $params['batch_id'] = $batch ? $batch->id : false;
         return TranslationProxy_Api::proxy_request('/batches/{batch_id}/jobs.json', $params);
     } else {
         //FIXME: remove this once TP will accept the TP Project ID: https://icanlocalize.basecamphq.com/projects/11113143-translation-proxy/todo_items/182251206/comments
         $params['project_id'] = $this->id;
     }
     return TranslationProxy_Api::proxy_request('/jobs.json', $params);
 }
 public function update_job($job_id, $url = null, $state = 'delivered')
 {
     $params = array('job_id' => $job_id, 'project_id' => $this->id, 'accesskey' => $this->access_key, 'job' => array('state' => $state));
     if ($url) {
         $params['job']['url'] = $url;
     }
     try {
         TranslationProxy_Api::proxy_request("/jobs/{job_id}.json", $params, 'PUT');
         return true;
     } catch (Exception $ex) {
         $this->add_error($ex->getMessage());
         return false;
     }
 }
 public function enqueue_migration_in_tp()
 {
     global $sitepress;
     remove_filter('otgs_translation_get_services', 'filter_tp_services');
     $site_id = $sitepress->get_setting('site_id');
     $access_key = $sitepress->get_setting('access_key');
     $delivery = wpml_get_setting_filter(false, 'translation_pickup_method');
     $delivery = $delivery === 'polling' ? 'polling' : 'xmlrpc';
     $service = TranslationProxy_Service::get_service($this->get_icl_service_id());
     $params = array('project' => array('ts_accesskey' => $access_key, 'external_id' => $site_id, 'delivery_method' => $delivery, 'url' => get_option('siteurl'), 'name' => get_option('blogname'), 'description' => get_option('blogdescription'), 'suid' => isset($service->suid) ? $service->suid : ""));
     $project = false;
     $error_data = false;
     try {
         $response = TranslationProxy_Api::proxy_request('/projects/migrate.json', $params, 'POST');
         if (isset($response->project)) {
             $project = (array) $response->project;
             $project_index = $this->icl_project_hash_key();
             $projects = TranslationProxy::get_translation_projects();
             $projects[$project_index] = $project;
             icl_set_setting('icl_translation_projects', $projects, true);
             icl_set_setting('translation_service', TranslationProxy_Service::get_service($this->get_icl_service_id()), true);
         }
     } catch (Exception $e) {
         $error_data = $params;
     }
     if (!$error_data) {
         $this->move_finished_jobs_to_batch();
         if (defined('ICL_DEBUG_MODE') && ICL_DEBUG_MODE) {
             $this->regenerate_wrong_service_data();
         }
     }
     return array($project, $error_data);
 }