/**
  * Adds a translation job record in icl_translate_job
  *
  * @param mixed $rid
  * @param mixed $translator_id
  * @param       $translation_package
  *
  * @return bool|int
  */
 function add_translation_job($rid, $translator_id, $translation_package)
 {
     global $wpdb, $current_user;
     get_currentuserinfo();
     if (empty($this->settings)) {
         $this->init();
     }
     if (!$current_user->ID) {
         $manager_id = $wpdb->get_var($wpdb->prepare("SELECT manager_id FROM {$wpdb->prefix}icl_translate_job WHERE rid=%d ORDER BY job_id DESC LIMIT 1", $rid));
     } else {
         $manager_id = $current_user->ID;
     }
     $translation_status = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->prefix}icl_translation_status WHERE rid=%d", $rid));
     // if we have a previous job_id for this rid mark it as the top (last) revision
     list($prev_job_id, $prev_job_translated) = $wpdb->get_row($wpdb->prepare("\r\n\t\t\t\t\tSELECT job_id, translated FROM {$wpdb->prefix}icl_translate_job WHERE rid=%d AND revision IS NULL\r\n\t\t", $rid), ARRAY_N);
     $prev_translation = array();
     if (!is_null($prev_job_id)) {
         if (!$prev_job_translated) {
             // Job id needed to generate the xliff file
             return $prev_job_id;
         }
         $last_rev = $wpdb->get_var($wpdb->prepare("\r\n\t\t\t\tSELECT MAX(revision) AS rev FROM {$wpdb->prefix}icl_translate_job WHERE rid=%d AND revision IS NOT NULL\r\n\t\t\t", $rid));
         $wpdb->update($wpdb->prefix . 'icl_translate_job', array('revision' => $last_rev + 1), array('job_id' => $prev_job_id));
         $prev_job = $this->get_translation_job($prev_job_id);
         if (isset($prev_job->original_doc_id)) {
             $original_post = get_post($prev_job->original_doc_id);
             foreach ($prev_job->elements as $element) {
                 $prev_translation[$element->field_type] = $element->field_data_translated;
                 switch ($element->field_type) {
                     case 'title':
                         if (self::decode_field_data($element->field_data, $element->field_format) == $original_post->post_title) {
                             //$unchanged[$element->field_type] = $element->field_data_translated;
                             $unchanged[$element->field_type] = true;
                         }
                         break;
                     case 'body':
                         if (self::decode_field_data($element->field_data, $element->field_format) == $original_post->post_content) {
                             //$unchanged[$element->field_type] = $element->field_data_translated;
                             $unchanged[$element->field_type] = true;
                         }
                         break;
                     case 'excerpt':
                         if (self::decode_field_data($element->field_data, $element->field_format) == $original_post->post_excerpt) {
                             //$unchanged[$element->field_type] = $element->field_data_translated;
                             $unchanged[$element->field_type] = true;
                         }
                         break;
                     default:
                         if (false !== strpos($element->field_type, 'field-') && !empty($this->settings['custom_fields_translation'])) {
                             $cf_name = preg_replace('#^field-#', '', $element->field_type);
                             if (self::decode_field_data($element->field_data, $element->field_format) == get_post_meta($prev_job->original_doc_id, $cf_name, 1)) {
                                 //$unchanged[$element->field_type] = $element->field_data_translated;
                                 $unchanged[$element->field_type] = true;
                             }
                         } else {
                             // taxonomies
                             if (strpos($element->field_type, 't_', 0)) {
                                 $ttid = substr($element->field_type, 2);
                                 $term_name = $wpdb->get_var($wpdb->prepare("SELECT name FROM {$wpdb->terms} WHERE term_id = (SELECT term_id FROM {$wpdb->term_taxonomy} WHERE term_taxonomy_id = %d LIMIT 1)", $ttid));
                                 if ($element->field_data == $this->encode_field_data($term_name, $element->field_format)) {
                                     $unchanged[$element->field_type] = true;
                                 }
                             }
                         }
                 }
             }
         }
     }
     $translate_job_insert_data = array('rid' => $rid, 'translator_id' => $translator_id, 'translated' => 0, 'manager_id' => $manager_id);
     $wpdb->insert($wpdb->prefix . 'icl_translate_job', $translate_job_insert_data);
     $job_id = $wpdb->insert_id;
     $package_helper = new WPML_Element_Translation_Package();
     $package_helper->save_package_to_job($translation_package, $job_id, $prev_translation);
     if ($translation_status->translation_service == 'local') {
         if (isset($this->settings['notification']['new-job']) && $this->settings['notification']['new-job'] == ICL_TM_NOTIFICATION_IMMEDIATELY) {
             if ($job_id) {
                 if (empty($translator_id)) {
                     do_action('wpml_tm_new_job_notification', $job_id);
                 } else {
                     do_action('wpml_tm_assign_job_notification', $job_id, $translator_id);
                 }
             }
         }
         do_action('wpml_added_local_translation_job', $job_id);
     }
     return $job_id;
 }