/** * @param WPML_WP_API $wpml_wp_api */ public function load_pro_translation($wpml_wp_api) { global $ICL_Pro_Translation; if (!isset($ICL_Pro_Translation) && ($wpml_wp_api->is_admin() || defined('XMLRPC_REQUEST'))) { $job_factory = wpml_tm_load_job_factory(); $ICL_Pro_Translation = new WPML_Pro_Translation($job_factory); } }
/** * Creates the polling status object for a given Translation Proxy Project * * @param TranslationProxy_Project $project * * @return WPML_TP_Polling_Status */ public function polling_status($project) { $job_factory = wpml_tm_load_job_factory(); $wpdb = $this->sitepress->wpdb(); $wpml_tm_records = new WPML_TM_Records($wpdb); $cms_id_helper = new WPML_TM_CMS_ID($wpml_tm_records, $job_factory); return new WPML_TP_Polling_Status($project, $this->sitepress, $cms_id_helper); }
function icl_pickup_translations() { if (!wpml_is_action_authenticated('icl_pickup_translations')) { die('Wrong Nonce'); } global $ICL_Pro_Translation, $wpdb; $job_factory = wpml_tm_load_job_factory(); $wpml_tm_records = new WPML_TM_Records($wpdb); $cms_id_helper = new WPML_TM_CMS_ID($wpml_tm_records, $job_factory); $pickup = new WPML_TP_Polling_Pickup($ICL_Pro_Translation, $cms_id_helper); wp_send_json_success($pickup->poll_job($_POST)); }
function icl_pickup_translations() { if (!wpml_is_action_authenticated('icl_pickup_translations')) { die('Wrong Nonce'); } global $ICL_Pro_Translation, $wpdb, $wpml_post_translations, $wpml_term_translations; $job_factory = wpml_tm_load_job_factory(); $wpml_tm_records = new WPML_TM_Records($wpdb, $wpml_post_translations, $wpml_term_translations); $cms_id_helper = new WPML_TM_CMS_ID($wpml_tm_records, $job_factory); $project = TranslationProxy::get_current_project(); $remote_sync_factory = new WPML_TP_Remote_Sync_Factory($project, $ICL_Pro_Translation, $cms_id_helper); $pickup = new WPML_TP_Polling_Pickup($ICL_Pro_Translation, $remote_sync_factory); wp_send_json_success($pickup->poll_job($_POST)); }
public function get_job_element_data($job, $job_data) { $job_data['pickup:id'] = $job['id']; $job_data['pickup:cms_id'] = $job['cms_id']; $job_data['pickup:job_state'] = $job['job_state']; $job_data['pickup:source_language'] = $job['source_language']; $job_data['pickup:target_language'] = $job['target_language']; $job_data['pickup:batch_id'] = isset($job['batch']['id']) ? $job['batch']['id'] : null; $translation_id = $this->pro_translation->get_cms_id_helper()->get_translation_id($job['cms_id']); if ($translation_id) { $tm_load_job_factory = wpml_tm_load_job_factory(); $job_element = $tm_load_job_factory->job_by_translation_id($translation_id); if (is_object($job_element)) { $job_data = $this->get_job_data_to_log($job_data, $job_element); $job_data = $this->get_document_data_to_log($job_data, $job_element->get_original_document()); } } else { $job_data['message'] = "Couldn't find a translation ID for cms_id " . $job['cms_id']; } return $job_data; }
/** * @return WPML_TM_Xliff_Frontend */ function setup_xliff_frontend() { global $sitepress; $job_factory = wpml_tm_load_job_factory(); $xliff_frontend = new WPML_TM_Xliff_Frontend($job_factory, $sitepress); add_action('init', array($xliff_frontend, 'init'), isset($_POST['xliff_upload']) || isset($_GET['wpml_xliff_action']) && $_GET['wpml_xliff_action'] === 'download' ? 1501 : 10); return $xliff_frontend; }
/** * @return WPML_TM_Xliff_Frontend */ function setup_xliff_frontend() { global $sitepress; $job_factory = wpml_tm_load_job_factory(); $xliff_frontend = new WPML_TM_Xliff_Frontend($job_factory, $sitepress); add_action('init', array($xliff_frontend, 'init'), $xliff_frontend->get_init_priority()); return $xliff_frontend; }
/** * Get information about translators from current project. Works only for ICL as a Translation Service * * @param bool $force * * @return array|bool */ public static function get_icl_translator_status($force = false) { /** @var SitePress $sitepress */ /** @var WPML_Pro_Translation $ICL_Pro_Translation */ global $sitepress, $ICL_Pro_Translation; if (!$ICL_Pro_Translation) { $job_factory = wpml_tm_load_job_factory(); $ICL_Pro_Translation = new WPML_Pro_Translation($job_factory); } if (!TranslationProxy::translator_selection_available()) { return array(); } $project = TranslationProxy::get_current_project(); if (!$project) { return array(); } $cache_key = md5(serialize($project)); $cache_group = 'get_icl_translator_status'; $found = false; $result = wp_cache_get($cache_key, $cache_group, false, $found); if ($found) { return $result; } $translator_status = array(); $website_details = self::get_website_details(new TranslationProxy_Project(TranslationProxy::get_current_service()), $force); if (false === (bool) $website_details) { return array(); } $language_pairs = array(); if (isset($website_details['translation_languages']['translation_language'])) { $translation_languages = $website_details['translation_languages']['translation_language']; if (!isset($translation_languages[0])) { $buf = $translation_languages; $translation_languages = array(0 => $buf); } foreach ($translation_languages as $lang) { $translators = $_tr = array(); $max_rate = false; if (isset($lang['translators'], $lang['translators']['translator']) && !empty($lang['translators'])) { if (!isset($lang['translators']['translator'][0])) { $_tr[0] = $lang['translators']['translator']; } else { $_tr = $lang['translators']['translator']; } foreach ($_tr as $t) { if (false === $max_rate || $t['attr']['amount'] > $max_rate) { $max_rate = $t['attr']['amount']; } $translators[] = array('id' => $t['attr']['id'], 'nickname' => $t['attr']['nickname'], 'contract_id' => $t['attr']['contract_id']); } } $language_pairs[] = array('from' => $sitepress->get_language_code($ICL_Pro_Translation->server_languages_map($lang['attr']['from_language_name'], true)), 'to' => $sitepress->get_language_code($ICL_Pro_Translation->server_languages_map($lang['attr']['to_language_name'], true)), 'have_translators' => $lang['attr']['have_translators'], 'available_translators' => $lang['attr']['available_translators'], 'applications' => $lang['attr']['applications'], 'contract_id' => $lang['attr']['contract_id'], 'id' => $lang['attr']['id'], 'translators' => $translators, 'max_rate' => $max_rate); } } $translator_status['icl_lang_status'] = $language_pairs; if (isset($res['client']['attr'])) { $translator_status['icl_balance'] = $res['client']['attr']['balance']; $translator_status['icl_anonymous_user'] = $res['client']['attr']['anon']; } if (isset($res['html_status']['value'])) { $translator_status['icl_html_status'] = html_entity_decode($res['html_status']['value']); $translator_status['icl_html_status'] = preg_replace_callback('#<a([^>]*)href="([^"]+)"([^>]*)>#i', create_function('$matches', 'global $sitepress; return TranslationProxy_Popup::get_link($matches[2]);'), $translator_status['icl_html_status']); } if (isset($res['translators_management_info']['value'])) { $translator_status['translators_management_info'] = html_entity_decode($res['translators_management_info']['value']); $translator_status['translators_management_info'] = preg_replace_callback('#<a([^>]*)href="([^"]+)"([^>]*)>#i', create_function('$matches', 'global $sitepress; return TranslationProxy_Popup::get_link($matches[2]);'), $translator_status['translators_management_info']); } $translator_status['icl_support_ticket_id'] = null; if (isset($res['attr']['support_ticket_id'])) { $translator_status['icl_support_ticket_id'] = (int) $res['attr']['support_ticket_id']; } wp_cache_set($cache_key, $translator_status, $cache_group); return $translator_status; }