public static function update_translation_batch($batch_name = false, $tp_id = false) { global $wpdb; $batch_name = $batch_name ? $batch_name : ((bool) $tp_id === false || $tp_id === 'local' ? self::get_generic_batch_name() : TranslationProxy_Basket::get_basket_name()); if (!$batch_name) { return null; } $cache_key = md5($batch_name); $cache_group = 'update_translation_batch'; $cache_found = false; $batch_id = wp_cache_get($cache_key, $cache_group, false, $cache_found); if ($cache_found && $batch_id) { return $batch_id; } $batch_id_sql = "SELECT id FROM {$wpdb->prefix}icl_translation_batches WHERE batch_name=%s"; $batch_id_prepared = $wpdb->prepare($batch_id_sql, array($batch_name)); $batch_id = $wpdb->get_var($batch_id_prepared); if (!$batch_id) { $data = array('batch_name' => $batch_name, 'last_update' => date('Y-m-d H:i:s')); if ($tp_id) { if ($tp_id === 'local') { $tp_id = 0; } $data['tp_id'] = $tp_id; } $wpdb->insert($wpdb->prefix . 'icl_translation_batches', $data); $batch_id = $wpdb->insert_id; wp_cache_set($cache_key, $batch_id, $cache_group); } return $batch_id; }
/** * Returns the name of the current translation basket. * * @return bool|string */ function get_name() { return TranslationProxy_Basket::get_basket_name(); }
public function rollback_basket_commit() { TranslationProxy_Basket::get_basket(true); $basket_name = TranslationProxy_Basket::get_basket_name(); $basket_name = $basket_name ? $basket_name : filter_input(INPUT_POST, 'basket_name', FILTER_SANITIZE_STRING); $batch_id = TranslationProxy::get_batch_id_from_name($basket_name); if ($batch_id) { $batch = new WPML_Translation_Batch($batch_id); $batch->cancel_all_remote_jobs(); } }
/** * 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|int $tp_batch_id * * @link http://git.icanlocalize.com/onthego/translation_proxy/wikis/commit_batch_job * * @return array|bool|mixed|null|stdClass|string */ function commit_batch_job($tp_batch_id = false) { $tp_batch_id = $tp_batch_id ? $tp_batch_id : $this->get_batch_job_id(); if (!$tp_batch_id) { return true; } $params = array("api_version" => TranslationProxy_Api::API_VERSION, 'project_id' => $this->id, 'accesskey' => $this->access_key, 'batch_id' => $tp_batch_id); try { $response = TranslationProxy_Api::proxy_request('/batches/{batch_id}/commit.json', $params, 'PUT', false); $basket_name = TranslationProxy_Basket::get_basket_name(); if ($basket_name) { global $wpdb; $batch_id_sql = "SELECT id FROM {$wpdb->prefix}icl_translation_batches WHERE batch_name=%s"; $batch_id_prepared = $wpdb->prepare($batch_id_sql, array($basket_name)); $batch_id = $wpdb->get_var($batch_id_prepared); $batch_data = array('batch_name' => $basket_name, 'tp_id' => $tp_batch_id, 'last_update' => date('Y-m-d H:i:s')); if (isset($response) && $response) { $batch_data['ts_url'] = serialize($response); } if (!$batch_id) { $wpdb->insert($wpdb->prefix . 'icl_translation_batches', $batch_data); } else { $wpdb->update($wpdb->prefix . 'icl_translation_batches', $batch_data, array('id' => $batch_id)); } } return isset($response) ? $response : false; } catch (Exception $ex) { $this->add_error($ex->getMessage()); return false; } }
private function commit_basket($translation_id) { $basket_networking = wpml_tm_load_basket_networking(); $translator_array = $this->build_translator_array($translation_id); if ($translator_array) { $basket_networking->commit_basket_chunk(array(), TranslationProxy_Basket::get_basket_name(), $translator_array); } $project = TranslationProxy::get_current_project(); $project->commit_batch_job(); TranslationProxy_Basket::delete_all_items_from_basket(); }