예제 #1
0
 public function send_basket_items()
 {
     $basket_name = filter_input(INPUT_POST, 'basket_name', FILTER_SANITIZE_STRING);
     if ($basket_name) {
         TranslationProxy_Basket::set_basket_name($basket_name);
     }
     $basket = TranslationProxy_Basket::get_basket();
     $basket_items_types = TranslationProxy_Basket::get_basket_items_types();
     if (!$basket) {
         $message_content = __('No items found in basket', 'sitepress');
     } else {
         $total_count = 0;
         $message_content_details = '';
         foreach ($basket_items_types as $item_type_name => $item_type) {
             if (isset($basket[$item_type_name])) {
                 $count_item_type = count($basket[$item_type_name]);
                 $total_count += $count_item_type;
                 $message_content_details .= '<br/>';
                 $message_content_details .= '- ' . $item_type_name . '(s): ' . $count_item_type;
             }
         }
         $message_content = sprintf(__('%s items in basket:', 'sitepress'), $total_count);
         $message_content .= $message_content_details;
     }
     $container = $message_content;
     $result = array('message' => $container, 'basket' => $basket, 'allowed_item_types' => array_keys($basket_items_types));
     wp_send_json_success($result);
 }
 function set_name($basket_name)
 {
     TranslationProxy_Basket::set_basket_name($basket_name);
 }
 /**
  * Sends all jobs from basket in batch mode to translation proxy
  *
  * @param array $data POST data
  *
  * @return bool    Returns false in case of errors (read from TranslationManagement::get_messages('error') to get errors details)
  */
 function send_all_jobs($data)
 {
     if (!isset($data) || !is_array($data)) {
         return false;
     }
     // 1. get wp_option with basket
     $basket_name = TranslationProxy_Basket::get_basket_name();
     if (!$basket_name) {
         $basket_name = isset($data['basket_name']) ? $data['basket_name'] : false;
         if ($basket_name) {
             TranslationProxy_Basket::set_basket_name($basket_name);
         }
     }
     $this->set_translation_jobs_basket($data);
     // check if we have local and remote translators
     $translators = isset($data['translators']) ? $data['translators'] : array();
     // find all target languages for remote service (it is required to create proper batch in translation proxy)
     $this->set_remote_target_languages($translators);
     // save information about target languages for remote service
     TranslationProxy_Basket::set_remote_target_languages($this->remote_target_languages);
     $basket_items_types = TranslationProxy_Basket::get_basket_items_types();
     foreach ($basket_items_types as $item_type_name => $item_type) {
         $type_basket_items = array();
         if (isset($this->translation_jobs_basket[$item_type_name])) {
             $type_basket_items = $this->translation_jobs_basket[$item_type_name];
         }
         do_action('wpml_tm_send_' . $item_type_name . '_jobs', $item_type_name, $item_type, $type_basket_items, $translators, $basket_name);
     }
     // check if there were no errors
     return !$this->messages_by_type('error');
 }
 /**
  * @param bool $source_language
  * @param      $target_languages
  *
  * @internal param bool $name
  * @return bool|TranslationProxy_Batch
  */
 public function create_batch_job($source_language, $target_languages)
 {
     $batch_name = TranslationProxy_Basket::get_basket_name();
     $extra_fields = TranslationProxy_Basket::get_basket_extra_fields();
     if (!$source_language) {
         $source_language = TranslationProxy_Basket::get_source_language();
     }
     if (!$target_languages) {
         $target_languages = TranslationProxy_Basket::get_remote_target_languages();
     }
     if (!$source_language || !$target_languages) {
         return false;
     }
     if (!$batch_name) {
         $batch_name = sprintf(__('%s: WPML Translation Jobs', 'wpml-translation-management'), get_option('blogname'));
     }
     TranslationProxy_Basket::set_basket_name($batch_name);
     $params = array("api_version" => TranslationProxy_Api::API_VERSION, "project_id" => $this->id, "accesskey" => $this->access_key, 'batch' => array('source_language' => $source_language, 'target_languages' => $target_languages, 'name' => $batch_name));
     if ($extra_fields) {
         $params['extra_fields'] = $extra_fields;
     }
     try {
         $response = TranslationProxy_Api::proxy_request('/projects/{project_id}/batches.json', $params, 'POST', false);
         $batch = false;
         if ($response) {
             $batch = $response->batch;
             TranslationProxy_Basket::set_batch_data($batch);
         }
         return $batch;
     } catch (Exception $ex) {
         $this->add_error($ex->getMessage());
         return false;
     }
 }