/**
  * @param TranslationProxy_Project $project
  * @param bool $batch_mode
  * @param int $translator_id
  * @param WPML_TM_CMS_ID $cms_id_helper
  * @param TranslationManagement $tm_instance
  * @param null|string $note
  *
  * @return array
  */
 function send_to_tp($project, $batch_mode, $translator_id, &$cms_id_helper, &$tm_instance, $note = null)
 {
     global $wpdb;
     $this->maybe_load_basic_data();
     $file = $this->to_xliff_file();
     $title = $this->get_title();
     $cms_id = $cms_id_helper->cms_id_from_job_id($this->get_id());
     $url = $this->get_url(true);
     $word_count = $this->estimate_word_count();
     $note = isset($note) ? $note : '';
     $is_update = intval($this->get_resultant_element_id());
     $source_language = $this->get_source_language_code();
     $target_language = $this->get_language_code();
     try {
         if ($batch_mode) {
             $res = $project->send_to_translation_batch_mode($file, $title, $cms_id, $url, $source_language, $target_language, $word_count, $translator_id, $note, $is_update);
         } else {
             $res = $project->send_to_translation($file, $title, $cms_id, $url, $source_language, $target_language, $word_count, $translator_id, $note, $is_update);
         }
     } catch (Exception $err) {
         // The translation entry will be removed
         $res = 0;
     }
     $translation_id = $this->get_translation_id();
     if ($res) {
         $tm_instance->update_translation_status(array('translation_id' => $translation_id, 'translator_id' => $translator_id, 'status' => ICL_TM_IN_PROGRESS, 'needs_update' => 0));
     } else {
         $previous_state = $wpdb->get_var($wpdb->prepare("\tSELECT _prevstate\n\t\t\t\t\t\t\t\t\tFROM {$wpdb->prefix}icl_translation_status\n\t\t\t\t\t\t\t\t\tWHERE translation_id=%d\n\t\t\t\t\t\t\t\t\tLIMIT 1", $translation_id));
         if (!empty($previous_state)) {
             $previous_state = unserialize($previous_state);
             $data = array('status' => $previous_state['status'], 'translator_id' => $previous_state['translator_id'], 'needs_update' => $previous_state['needs_update'], 'md5' => $previous_state['md5'], 'translation_service' => $previous_state['translation_service'], 'translation_package' => $previous_state['translation_package'], 'timestamp' => $previous_state['timestamp'], 'links_fixed' => $previous_state['links_fixed']);
             $data_where = array('translation_id' => $translation_id);
             $wpdb->update($wpdb->prefix . 'icl_translation_status', $data, $data_where);
         } else {
             $data = array('status' => ICL_TM_NOT_TRANSLATED, 'needs_update' => 0);
             $data_where = array('translation_id' => $translation_id);
             $wpdb->update($wpdb->prefix . 'icl_translation_status', $data, $data_where);
         }
         $err = true;
     }
     return array(isset($err) ? $err : false, $project, $res);
 }