function get_icl_translator_status(&$iclsettings, $res = null) { if ($res == null) { // check what languages we have translators for. require_once ICL_PLUGIN_PATH . '/lib/Snoopy.class.php'; require_once ICL_PLUGIN_PATH . '/lib/xml2array.php'; require_once ICL_PLUGIN_PATH . '/lib/icl_api.php'; $icl_query = false; if (empty($iclsettings['site_id'])) { // Must be for support if (!empty($iclsettings['support_site_id'])) { $icl_query = new ICanLocalizeQuery($iclsettings['support_site_id'], $iclsettings['support_access_key']); } } else { $icl_query = new ICanLocalizeQuery($iclsettings['site_id'], $iclsettings['access_key']); } if ($icl_query === false) { return; } $res = $icl_query->get_website_details(); } if (isset($res['translation_languages']['translation_language'])) { // reset $this->settings['icl_lang_status'] $iclsettings['icl_lang_status'] = array(); $translation_languages = $res['translation_languages']['translation_language']; if (!isset($translation_languages[0])) { $buf = $translation_languages; $translation_languages = array(0 => $buf); } $target = array(); foreach ($translation_languages as $lang) { $translators = $_tr = array(); $max_rate = false; if (isset($lang['translators']) && !empty($lang['translators'])) { if (!isset($lang['translators']['translator'][0])) { $_tr[0] = $lang['translators']['translator']; } else { $_tr = $lang['translators']['translator']; } foreach ($_tr as $t) { if ($max_rate === false || $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']); } } $target[] = array('from' => $this->get_language_code(ICL_Pro_Translation::server_languages_map($lang['attr']['from_language_name'], true)), 'to' => $this->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); } $iclsettings['icl_lang_status'] = $target; } if (isset($res['client']['attr'])) { $iclsettings['icl_balance'] = $res['client']['attr']['balance']; $iclsettings['icl_anonymous_user'] = $res['client']['attr']['anon']; } if (isset($res['html_status']['value'])) { $iclsettings['icl_html_status'] = html_entity_decode($res['html_status']['value']); $iclsettings['icl_html_status'] = preg_replace_callback('#<a([^>]*)href="([^"]+)"([^>]*)>#i', create_function('$matches', 'global $sitepress; return $sitepress->create_icl_popup_link($matches[2], array(\'unload_cb\'=>\'icl_pt_reload_translation_box\'));'), $iclsettings['icl_html_status']); } if (isset($res['translators_management_info']['value'])) { $iclsettings['translators_management_info'] = html_entity_decode($res['translators_management_info']['value']); $iclsettings['translators_management_info'] = preg_replace_callback('#<a([^>]*)href="([^"]+)"([^>]*)>#i', create_function('$matches', 'global $sitepress; return $sitepress->create_icl_popup_link($matches[2], array(\'unload_cb\'=>\'icl_pt_reload_translation_box\'));'), $iclsettings['translators_management_info']); } $iclsettings['icl_support_ticket_id'] = @intval($res['attr']['support_ticket_id']); }
/** * Sends request to ICL to get website details (including language pairs) * * @param TranslationProxy_Project $project * * @return array */ private static function get_website_details($project) { require_once ICL_PLUGIN_PATH . '/lib/Snoopy.class.php'; require_once ICL_PLUGIN_PATH . '/lib/xml2array.php'; require_once ICL_PLUGIN_PATH . '/lib/icl_api.php'; $site_id = $project->ts_id; $access_key = $project->ts_access_key; $default = array(); if (empty($site_id)) { return $default; } try { $icl_query = new ICanLocalizeQuery($site_id, $access_key); $result = $icl_query->get_website_details(); } catch (Exception $e) { return $default; } return $result; }
function create_icl_account() { global $sitepress; $site_id = false; $access_key = false; $user = $this->create_user_account(); require_once ICL_PLUGIN_PATH . '/lib/icl_api.php'; $icl_query = new ICanLocalizeQuery(); list($site_id, $access_key) = $icl_query->createAccount($user, TA_URL_ENDPOINT); if (!$site_id) { $user['pickup_type'] = ICL_PRO_TRANSLATION_PICKUP_POLLING; list($site_id, $access_key) = $icl_query->createAccount($user, TA_URL_ENDPOINT); } if ($site_id) { if ($user['pickup_type'] == ICL_PRO_TRANSLATION_PICKUP_POLLING) { $sitepress->set_setting('translation_pickup_method', ICL_PRO_TRANSLATION_PICKUP_POLLING); } $icl_query = new ICanLocalizeQuery($site_id, $access_key); $website_details = $icl_query->get_website_details(TA_URL_ENDPOINT); TranslationProxy_Translator::get_icl_translator_status($website_details); } return array($site_id, $access_key); }
// update account - add language pair $incr = 0; foreach ($this->settings['language_pairs'] as $k => $v) { foreach ($v as $k2 => $v2) { $incr++; $data['from_language' . $incr] = $lang_server[$k]; $data['to_language' . $incr] = $lang_server[$k2]; } } $data['site_id'] = $this->settings['site_id']; $data['accesskey'] = $this->settings['access_key']; $data['create_account'] = 0; $icl_query->updateAccount($data); } $icl_query = new ICanLocalizeQuery($this->settings['site_id'], $this->settings['access_key']); $website_details = $icl_query->get_website_details(); if (empty($website_details)) { echo '<p class="error">'; printf(__('There was a problem connecting to ICanLocalize. Please close this window and try again. If the problem persists please <a%s>contact us</a>.', 'sitepress'), ' target="_blank" href="http://wpml.org/?page_id=5255"'); echo '</p>'; exit; } $translation_languages = $website_details['translation_languages']['translation_language']; if (isset($translation_languages['attr'])) { $buff = $translation_languages; unset($translation_languages); $translation_languages[0] = $buff; unset($buff); } foreach ((array) $translation_languages as $lpair) { if ($lpair['attr']['from_language_name'] == $lang_server[$from_lang] && $lpair['attr']['to_language_name'] == $lang_server[$to_lang]) {
/** * Sends request to ICL to get website details (including language pairs) * * @param TranslationProxy_Project $project * @param bool $force * * @return array */ private static function get_website_details($project, $force = false) { require_once ICL_PLUGIN_PATH . '/lib/Snoopy.class.php'; require_once ICL_PLUGIN_PATH . '/inc/utilities/xml2array.php'; require_once ICL_PLUGIN_PATH . '/lib/icl_api.php'; $site_id = $project->ts_id; $access_key = $project->ts_access_key; $default = array(); if (!$site_id) { return $default; } $icl_query = new ICanLocalizeQuery($site_id, $access_key); return $icl_query->get_website_details($force); }