public function migrate_one_icl_job() { global $wpdb; $translation = $wpdb->get_row($wpdb->prepare(" \tSELECT s.translation_id, s.status, s.rid, j.job_id\n\t\t\t\t\t\t\t\t\t\t\tFROM {$wpdb->prefix}icl_translation_status s\n\t\t\t\t\t\t\t\t\t\t\tJOIN (SELECT MAX(jj.job_id) AS job_id, jj.rid FROM {$wpdb->prefix}icl_translate_job jj GROUP BY jj.rid) AS j\n\t\t\t\t\t\t\t\t\t\t\t\tON j.rid = s.rid\n\t\t\t\t\t\t\t\t\t\t\tWHERE s.translation_service = 'icl'\n\t\t\t\t\t\t\t\t\t\t\t\tAND s.status = %d\n\t\t\t\t\t\t\t\t\t\t\tLIMIT 1", ICL_TM_IN_PROGRESS)); if (!$translation) { return 0; } $translation_id = $translation->translation_id; $batch_id = TranslationProxy_Batch::update_translation_batch('ICanLocalize Migration ' . $translation_id); $wpdb->update($wpdb->prefix . 'icl_translation_status', array('batch_id' => $batch_id, 'status' => ICL_TM_COMPLETE), array('translation_id' => $translation_id)); $job = new WPML_Post_Translation_Job($translation->job_id); $job->load_terms_from_post_into_job(); $this->delete_legacy_term_job_rows($translation->job_id); $rev = $wpdb->get_var($wpdb->prepare("SELECT max(revision) FROM {$wpdb->prefix}icl_translate_job WHERE rid = %d AND job_id < %d LIMIT 1", $translation->rid, $translation->job_id)); $wpdb->query($wpdb->prepare("UPDATE {$wpdb->prefix}icl_translate_job SET revision = %d WHERE job_id = %d", $rev + 1, $translation->job_id)); $this->add_translation_id_to_basket($translation_id); $this->commit_basket($translation_id); return $this->get_icl_job_count(); }
function wpml_set_job_translated_term_values($job_id, $delete = false) { $job_object = new WPML_Post_Translation_Job($job_id); $job_object->load_terms_from_post_into_job($delete); }
/** * @param WP_Post|WPML_Package $post * @param array $target_languages * @param int $translator_id * @param int $job_id * *@return bool|int */ function send_post($post, $target_languages, $translator_id, $job_id) { /** @var TranslationManagement $iclTranslationManagement */ global $sitepress, $iclTranslationManagement; $this->maybe_init_translation_management($iclTranslationManagement); if (is_numeric($post)) { $post = get_post($post); } if (!$post) { return false; } $post_id = $post->ID; $post_type = $post->post_type; $element_type_prefix = $iclTranslationManagement->get_element_type_prefix_from_job_id($job_id); $element_type = $element_type_prefix . '_' . $post_type; $note = get_post_meta($post_id, '_icl_translator_note', true); if (!$note) { $note = null; } $err = false; $res = false; $source_language = $sitepress->get_language_for_element($post_id, $element_type); $target_language = is_array($target_languages) ? end($target_languages) : $target_languages; if (empty($target_language) || $target_language === $source_language) { return false; } $translation = $this->tmg->get_element_translation($post_id, $target_language, $element_type); if (!$translation) { // translated the first time $err = true; } if (!$err && ($translation->needs_update || $translation->status == ICL_TM_NOT_TRANSLATED || $translation->status == ICL_TM_WAITING_FOR_TRANSLATOR)) { $project = TranslationProxy::get_current_project(); if ($iclTranslationManagement->is_external_type($element_type_prefix)) { $job_object = new WPML_External_Translation_Job($job_id); } else { $job_object = new WPML_Post_Translation_Job($job_id); $job_object->load_terms_from_post_into_job(); } list($err, $project, $res) = $job_object->send_to_tp($project, $translator_id, $this->cms_id_helper, $this->tmg, $note); if ($err) { $this->enqueue_project_errors($project); } } return $err ? false : $res; //last $ret }
private function save_terms_for_job($job_id) { require_once WPML_TM_PATH . '/inc/translation-jobs/wpml-translation-jobs-collection.class.php'; $job = new WPML_Post_Translation_Job($job_id); $job->save_terms_to_post(); }