/** * @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); }