コード例 #1
0
 public function get_translator_name()
 {
     $this->maybe_load_basic_data();
     if ($this->basic_data->translation_service == TranslationProxy::get_current_service_id()) {
         $this->basic_data->translator_name = TranslationProxy_Translator::get_translator_name($this->basic_data->translator_id);
     } else {
         $this->basic_data->translator_name = false;
     }
     return $this->basic_data->translator_name;
 }
コード例 #2
0
 function ajax_calls($call, $data)
 {
     global $wpdb, $sitepress;
     switch ($call) {
         case 'assign_translator':
             $translator_data = TranslationProxy_Service::get_translator_data_from_wpml($data['translator_id']);
             $service_id = $translator_data['translation_service'];
             $translator_id = $translator_data['translator_id'];
             $assign_translation_job = $this->assign_translation_job($data['job_id'], $translator_id, $service_id, $data['job_type']);
             if ($assign_translation_job) {
                 $translator_edit_link = '';
                 if ($translator_id) {
                     if ($service_id == TranslationProxy::get_current_service_id()) {
                         $job = $this->get_translation_job($data['job_id']);
                         /** @var $ICL_Pro_Translation WPML_Pro_Translation */
                         global $ICL_Pro_Translation;
                         $ICL_Pro_Translation->send_post($job->original_doc_id, array($job->language_code), $translator_id, $data['job_id']);
                         $project = TranslationProxy::get_current_project();
                         $translator_edit_link = TranslationProxy_Popup::get_link($project->translator_contact_iframe_url($translator_id), array('title' => __('Contact the translator', 'sitepress'), 'unload_cb' => 'icl_thickbox_refresh')) . esc_html(TranslationProxy_Translator::get_translator_name($translator_id)) . "</a> ({$project->service}->name)";
                     } else {
                         $translator_edit_link = '<a href="' . TranslationManagement::get_translator_edit_url($data['translator_id']) . '">' . esc_html($wpdb->get_var($wpdb->prepare("SELECT display_name FROM {$wpdb->users} WHERE ID=%d", $data['translator_id']))) . '</a>';
                     }
                 }
                 echo wp_json_encode(array('error' => 0, 'message' => $translator_edit_link, 'status' => TranslationManagement::status2text(ICL_TM_WAITING_FOR_TRANSLATOR), 'service' => $service_id));
             } else {
                 echo wp_json_encode(array('error' => 1));
             }
             break;
         case 'icl_cf_translation':
         case 'icl_tcf_translation':
             if (!empty($data['cf'])) {
                 foreach ($data['cf'] as $k => $v) {
                     $cft[base64_decode($k)] = $v;
                 }
                 if (isset($cft)) {
                     $this->settings[$call === 'icl_tcf_translation' ? WPML_TERM_META_SETTING_INDEX_PLURAL : WPML_POST_META_SETTING_INDEX_PLURAL] = $cft;
                     $this->save_settings();
                 }
             }
             echo '1|';
             break;
         case 'icl_doc_translation_method':
             $this->settings['doc_translation_method'] = intval($data['t_method']);
             $sitepress->set_setting('doc_translation_method', $this->settings['doc_translation_method']);
             $sitepress->save_settings(array('hide_how_to_translate' => empty($data['how_to_translate'])));
             if (isset($data['tm_block_retranslating_terms'])) {
                 $sitepress->set_setting('tm_block_retranslating_terms', $data['tm_block_retranslating_terms']);
             } else {
                 $sitepress->set_setting('tm_block_retranslating_terms', '');
             }
             if (isset($data['tm_block_retranslating_terms'])) {
                 $sitepress->set_setting('tm_block_retranslating_terms', $data['tm_block_retranslating_terms']);
             } else {
                 $sitepress->set_setting('tm_block_retranslating_terms', '');
             }
             $this->save_settings();
             echo '1|';
             break;
         case 'reset_duplication':
             $this->reset_duplicate_flag($_POST['post_id']);
             break;
         case 'set_duplication':
             $new_id = $this->set_duplicate($_POST['wpml_original_post_id'], $_POST['post_lang']);
             wp_send_json_success(array('id' => $new_id));
             break;
         case 'make_duplicates':
             $mdata['iclpost'] = array($data['post_id']);
             $langs = explode(',', $data['langs']);
             foreach ($langs as $lang) {
                 $mdata['duplicate_to'][$lang] = 1;
             }
             $this->make_duplicates($mdata);
             do_action('wpml_new_duplicated_terms', (array) $mdata['iclpost'], false);
             break;
     }
 }
コード例 #3
0
 /**
  * Get all string jobs sent to remote translation service
  * This function takes the same input array as does $iclTranslationManagement->get_translation_jobs
  * 'from' should contain the language code for the source of the translation job
  * 'to' specifies the target language code
  * 'status' follows the same conventions as for normal jobs so 1 and 2 are waiting for translator and 10 is
  * complete. Other values are not supported for strings at this point and will lead to empty results
  *
  * @param array   $args
  * @param bool    $only_ids
  *
  * @return array Array of jobs, every job is object
  * @global object $wpdb
  * @global object $sitepress
  *
  */
 public function get_strings_jobs($args = array(), $only_ids = false)
 {
     global $wpdb, $sitepress;
     $translator_id = "";
     $from = "";
     $to = "";
     $status = "";
     $service = false;
     extract($args, EXTR_OVERWRITE);
     $where = !empty($from) ? $wpdb->prepare(" AND sc.language = %s ", $from) : '';
     $where .= !empty($to) ? $wpdb->prepare(" AND st.language = %s ", $to) : '';
     $where .= $status ? $where .= $wpdb->prepare(" AND st.status = %d ", $status == ICL_TM_IN_PROGRESS ? ICL_TM_WAITING_FOR_TRANSLATOR : $status) : '';
     $service = is_numeric($translator_id) ? 'local' : $service;
     $service = $service !== 'local' && strpos($translator_id, "ts-") !== false ? substr($translator_id, 3) : $service;
     $where .= $service === 'local' ? $wpdb->prepare(" AND st.translator_id = %s ", $translator_id) : '';
     $where .= $service !== false ? $wpdb->prepare(" AND st.translation_service = %s ", $service) : '';
     $cols = "st.id, tb.id AS batch_id" . ($only_ids === false ? ",\n                         s.language AS source_language_code,\n                         st.language AS language_code,\n                         st.status,\n                         st.string_id,\n                         s.name,\n                         s.value,\n                         tb.id AS batch_id,\n                         st.translation_service,\n                         st.translator_id,\n                         u.display_name as translator_name,\n                         COUNT( st.id ) as strings_count" : "");
     $query = "\tSELECT\n\t\t\t\t\t{$cols}\n\t\t\t\t\tFROM {$wpdb->prefix}icl_string_translations AS st\n\t\t\t\t\tINNER JOIN {$wpdb->prefix}icl_strings AS s\n\t\t\t\t\t\tON st.string_id = s.id\n\t\t\t\t\tINNER JOIN {$wpdb->prefix}icl_translation_batches AS tb\n\t\t\t\t\t\tON tb.id = st.batch_id\n\t\t\t\t\tLEFT JOIN {$wpdb->users} u\n\t\t\t\t      ON st.translator_id = u.ID\n\t\t\t\t\tWHERE 1 {$where}\n\t\t\t\t\tGROUP BY st.id, s.id";
     $result = $wpdb->get_results($query);
     if ($only_ids === false) {
         foreach ($result as $num => $value) {
             $lang_from = $sitepress->get_language_details($value->source_language_code);
             $lang_to = $sitepress->get_language_details($value->language_code);
             $lang_text = $lang_from['display_name'] . ' &raquo; ' . $lang_to['display_name'];
             $result[$num]->lang_text = $lang_text;
             if ($value->translation_service == TranslationProxy::get_current_service_id()) {
                 $result[$num]->translator_name = TranslationProxy_Translator::get_translator_name($value->translator_id);
             }
         }
     }
     return $result;
 }