/**
  * Synchronizes language pairs with ICL
  *
  * @global object $sitepress
  *
  * @param $project
  * @param $language_pairs
  *
  */
 public static function update_language_pairs($project, $language_pairs)
 {
     global $sitepress;
     $params = array('site_id' => $project->ts_id, 'accesskey' => $project->ts_access_key, 'create_account' => 0);
     $lang_server = array();
     foreach ($sitepress->get_active_languages() as $lang) {
         $lang_server[$lang['code']] = WPML_Pro_Translation::server_languages_map($lang['english_name']);
     }
     // update account - add language pair
     $incr = 0;
     foreach ($language_pairs as $k => $v) {
         foreach ($v as $k2 => $v2) {
             $incr++;
             $params['from_language' . $incr] = $lang_server[$k];
             $params['to_language' . $incr] = $lang_server[$k2];
         }
     }
     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 = new ICanLocalizeQuery();
     $icl_query->updateAccount($params);
 }
 /**
  * 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;
 }