/**
  * @param int[] $strings
  * @param string $lang
  *
  * @return array
  */
 public function change_language_of_strings($strings, $lang)
 {
     $package_translation = new WPML_Package_Helper();
     $response = $package_translation->change_language_of_strings($strings, $lang);
     if ($response['success']) {
         $strings_in = implode(',', $strings);
         $update_query = "UPDATE {$this->wpdb->prefix}icl_strings SET language=%s WHERE id IN ({$strings_in})";
         $update_prepare = $this->wpdb->prepare($update_query, $lang);
         $this->wpdb->query($update_prepare);
         $response['success'] = true;
         foreach ($strings as $string) {
             icl_update_string_status($string);
         }
     }
     return $response;
 }
 function loaded()
 {
     parent::loaded();
     if ($this->passed_dependencies()) {
         if (icl_get_setting('setup_complete')) {
             $this->add_admin_hooks();
             $this->add_global_hooks();
             if (is_admin()) {
                 $this->run_db_update();
                 if (get_option('wpml-package-translation-refresh-required', true)) {
                     add_action('init', array($this, 'refresh_packages'), 999, 0);
                     update_option('wpml-package-translation-refresh-required', false);
                 }
             }
             $this->package_translation_active = true;
         }
     }
 }
 /**
  * @param     $source_language
  * @param     $target_language
  *
  * @throws WPML_Package_Exception
  */
 public function send_package_to_basket($source_language, $target_language)
 {
     global $sitepress, $iclTranslationManagement;
     $package = $this->package;
     $package_id = $package->ID;
     $basket = TranslationProxy_Basket::get_basket();
     $language_name = $sitepress->get_display_language_name($target_language);
     $send_to_basket = true;
     $package_helper = new WPML_Package_Helper();
     $post = $package_helper->get_translatable_item(null, $package_id);
     $post_title = esc_html($post->title);
     $element_type = $package->get_element_type_prefix() . '_' . $post->kind_slug;
     $trid = $sitepress->get_element_trid($package_id, $element_type);
     $job_id = $iclTranslationManagement->get_translation_job_id($trid, $target_language);
     if ($job_id) {
         $job_details = $iclTranslationManagement->get_translation_job($job_id);
         $send_to_basket = $this->validate_package_status($job_details, $post_title, $language_name);
     }
     if ($send_to_basket) {
         $basket['package'][$package_id]['from_lang'] = $source_language;
         $basket['package'][$package_id]['to_langs'][$target_language] = 1;
         // set basket language if not already set
         if (!isset($basket['source_language'])) {
             $basket['source_language'] = $source_language;
         }
     }
     TranslationProxy_Basket::update_basket($basket);
 }
 public function change_language_of_strings($domain, $langs, $to_lang, $set_as_default)
 {
     $package_translation = new WPML_Package_Helper();
     $package_translation->change_language_of_strings_in_domain($domain, $langs, $to_lang);
     if (!empty($langs)) {
         foreach ($langs as &$lang) {
             $lang = "'" . $lang . "'";
         }
         $langs = implode(',', $langs);
         $string_ids = $this->wpdb->get_col($this->wpdb->prepare("SELECT id FROM {$this->wpdb->prefix}icl_strings WHERE context=%s AND language IN ({$langs})", $domain));
         foreach ($string_ids as $str_id) {
             $this->string_factory->find_by_id($str_id)->set_language($to_lang);
         }
     }
     if ($set_as_default) {
         $lang_of_domain = new WPML_Language_Of_Domain($this->sitepress);
         $lang_of_domain->set_language($domain, $to_lang);
     }
     $string_ids = $this->wpdb->get_col($this->wpdb->prepare("SELECT id FROM {$this->wpdb->prefix}icl_strings WHERE context = %s", $domain));
     foreach ($string_ids as $strid) {
         $this->string_factory->find_by_id($strid)->update_status();
     }
     return array('success' => true);
 }
 /**
  * @param object $cat
  *
  * @return string
  */
 private function get_category_string_context($cat)
 {
     $package_helper = new WPML_Package_Helper();
     return $package_helper->get_string_context_from_package($this->lm_helper->get_package($cat->term_id, 'category'));
 }