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();
 }