public function set_language($domain, $lang)
 {
     $this->language_of_domain[$domain] = $lang;
     $string_settings = $this->sitepress->get_setting('st');
     $string_settings['lang_of_domain'] = $this->language_of_domain;
     $this->sitepress->set_setting('st', $string_settings, true);
 }
Ejemplo n.º 2
0
 function language_selector_widget_init()
 {
     if ($this->sitepress->get_setting('setup_complete')) {
         register_widget('ICL_Language_Switcher');
     }
     add_action('template_redirect', 'icl_lang_sel_nav_ob_start', 0);
     add_action('wp_head', 'icl_lang_sel_nav_ob_end');
 }
Ejemplo n.º 3
0
 public function load_icl_migration()
 {
     if (!$this->sitepress || (bool) $this->sitepress->get_setting('wpml_icl_migration_completed') === false) {
         require_once WPML_ICLM_PATH . '/menu/wpml-icl-migration-menu.class.php';
         $migration_menu = new WPML_ICL_Migration_Display();
         $migration_menu->init();
     }
 }
 /**
  * @return array containing strings displayed in the translation service polling status box
  */
 public function get_status_array()
 {
     $data = $this->filter_obsolete($this->project->jobs());
     $button_text = __('Get completed translations', 'sitepress');
     if (($job_in_progress = $this->in_progress_count($data)) == 1) {
         $jobs_in_progress_text = __('1 job has been sent to the translation service.', 'sitepress');
     } else {
         $jobs_in_progress_text = sprintf(__('%d jobs have been sent to the translation service.', 'sitepress'), $job_in_progress);
     }
     $last_picked_up = $this->sitepress->get_setting('last_picked_up');
     $last_time_picked_up = !empty($last_picked_up) ? date_i18n('Y, F jS @g:i a', $last_picked_up) : __('never', 'sitepress');
     $last_pickup_text = sprintf(__('Last time translations were picked up: %s', 'sitepress'), $last_time_picked_up);
     return array('jobs_in_progress_text' => $jobs_in_progress_text, 'button_text' => $button_text, 'last_pickup_text' => $last_pickup_text, 'polling_data' => $this->filter_known_pending($data));
 }
 /**
  * Filters the sticky posts option. If synchronization of sticky posts is activated it will translated
  * wrong language values, if deactivated filter out wrong language values.
  *
  * @param int[]     $posts
  * @param SitePress $sitepress
  *
  * @used-by \SitePress::option_sticky_posts which uses this function to filter the sticky posts array after
  *                                          having removed WPML per-language filtering on the sticky posts option.
  *
  * @return int[]
  */
 public function pre_option_sticky_posts_filter($posts, &$sitepress)
 {
     $posts = $posts ? $posts : get_option('sticky_posts');
     $this->filtered_sticky_posts = array();
     if ($posts) {
         $current_lang = $sitepress->get_current_language();
         $this->prefetch_ids($posts);
         if ($sitepress->get_setting('sync_sticky_flag')) {
             $unfiltered = $posts;
             foreach ($posts as $index => $sticky_post_id) {
                 $posts[$index] = $this->element_id_in($sticky_post_id, $current_lang);
             }
             if ($unfiltered != $posts) {
                 update_option('sticky_posts', array_values(array_unique(array_filter(array_merge($posts, $unfiltered)))));
             }
         } else {
             foreach ($posts as $index => $sticky_post_id) {
                 if ($this->get_element_lang_code($sticky_post_id) !== $current_lang) {
                     $this->filtered_sticky_posts[] = $sticky_post_id;
                     unset($posts[$index]);
                 }
             }
         }
         $posts = array_values(array_unique(array_filter($posts)));
     }
     return $posts;
 }
 /**
  * @return array containing strings displayed in the translation service polling status box
  *
  * @throws Exception in case communication with Translation Proxy fails
  */
 public function get_status_array()
 {
     try {
         $data = $this->filter_obsolete($this->project->jobs());
     } catch (Exception $e) {
         throw new Exception('Got the following error when trying to load status data from Translation Proxy via polling: ' . $e->getMessage(), 0, $e);
     }
     $button_text = __('Get completed translations', 'wpml-translation-management');
     if (($job_in_progress = $this->in_progress_count($data)) == 1) {
         $jobs_in_progress_text = __('1 job has been sent to the translation service.', 'wpml-translation-management');
     } else {
         $jobs_in_progress_text = sprintf(__('%d jobs have been sent to the translation service.', 'wpml-translation-management'), $job_in_progress);
     }
     $last_picked_up = $this->sitepress->get_setting('last_picked_up');
     $last_time_picked_up = !empty($last_picked_up) ? date_i18n('Y, F jS @g:i a', $last_picked_up) : __('never', 'wpml-translation-management');
     $last_pickup_text = sprintf(__('Last time translations were picked up: %s', 'wpml-translation-management'), $last_time_picked_up);
     return array('jobs_in_progress_text' => $jobs_in_progress_text, 'button_text' => $button_text, 'last_pickup_text' => $last_pickup_text, 'polling_data' => $this->filter_known_pending($data));
 }
Ejemplo n.º 7
0
 function post_type_link_filter($post_link, $post, $leavename, $sample)
 {
     if (!$this->sitepress->is_translated_post_type($post->post_type) || !($ld = $this->sitepress->get_element_language_details($post->ID, 'post_' . $post->post_type))) {
         return $post_link;
     }
     if (isset($this->post_link_cache[$post->ID][$leavename . '#' . $sample])) {
         $post_link = $this->post_link_cache[$post->ID][$leavename . '#' . $sample];
     } else {
         $st_settings = $this->sitepress->get_setting('st');
         $strings_language = !empty($st_settings['strings_language']) ? $st_settings['strings_language'] : 'en';
         // fix permalink when object is not in the current language
         if ($ld->language_code != $strings_language) {
             $slug_settings = $this->sitepress->get_setting('posts_slug_translation');
             $slug_settings = !empty($slug_settings['types'][$post->post_type]) ? $slug_settings['types'][$post->post_type] : null;
             if ((bool) $slug_settings === true) {
                 $slug_this = $this->get_slug_by_type($post->post_type);
                 $slug_real = $this->get_translated_slug($slug_this, $ld->language_code);
                 if (empty($slug_real)) {
                     return $post_link;
                 }
                 global $wp_rewrite;
                 if (isset($wp_rewrite->extra_permastructs[$post->post_type])) {
                     $struct_original = $wp_rewrite->extra_permastructs[$post->post_type]['struct'];
                     $lslash = false !== strpos($struct_original, '/' . $slug_this) ? '/' : '';
                     $wp_rewrite->extra_permastructs[$post->post_type]['struct'] = preg_replace('@' . $lslash . $slug_this . '/@', $lslash . $slug_real . '/', $struct_original);
                     remove_filter('post_type_link', array($this, 'post_type_link_filter'), 1);
                     // high priority
                     $post_link = get_post_permalink($post->ID, $leavename, $sample);
                     add_filter('post_type_link', array($this, 'post_type_link_filter'), 1, 4);
                     // high priority
                     $wp_rewrite->extra_permastructs[$post->post_type]['struct'] = $struct_original;
                 } else {
                     $post_link = str_replace($slug_this . '=', $slug_real . '=', $post_link);
                 }
             }
             $this->post_link_cache[$post->ID][$leavename . '#' . $sample] = $post_link;
         }
     }
     return $post_link;
 }
Ejemplo n.º 8
0
 public function maybe_migrate_string_name()
 {
     global $wpdb;
     $slug_settings = $this->sitepress->get_setting('posts_slug_translation');
     if (!isset($slug_settings['string_name_migrated'])) {
         $queryable_post_types = get_post_types(array('publicly_queryable' => true));
         foreach ($queryable_post_types as $type) {
             $post_type_obj = get_post_type_object($type);
             $slug = trim($post_type_obj->rewrite['slug'], '/');
             if ($slug) {
                 // First check if we should migrate from the old format URL slug: slug
                 $string_id = $wpdb->get_var($wpdb->prepare("SELECT id\r\r\n\t\t\t\t\t\t\t\t\t\t\tFROM {$wpdb->prefix}icl_strings\r\r\n\t\t\t\t\t\t\t\t\t\t\tWHERE name = %s AND value = %s", 'URL slug: ' . $slug, $slug));
                 if ($string_id) {
                     // migrate it to URL slug: post_type
                     $st_update['name'] = 'URL slug: ' . $type;
                     $wpdb->update($wpdb->prefix . 'icl_strings', $st_update, array('id' => $string_id));
                 }
             }
         }
         $slug_settings['string_name_migrated'] = true;
         $this->sitepress->set_setting('posts_slug_translation', $slug_settings, true);
     }
 }
 /**
  * @return bool|string
  */
 private function get_user_xliff_version()
 {
     return $this->sitepress->get_setting("tm_xliff_version", false);
 }
Ejemplo n.º 10
0
 private function get_strings_per_page()
 {
     $st_settings = $this->sitepress->get_setting('st');
     return isset($st_settings['strings_per_page']) ? $st_settings['strings_per_page'] : WPML_ST_DEFAULT_STRINGS_PER_PAGE;
 }
 public function __construct(&$sitepress, WPML_ST_Upgrade_Command_Factory $command_factory)
 {
     $this->sitepress = $sitepress;
     $this->string_settings = $this->sitepress->get_setting('st', array());
     $this->command_factory = $command_factory;
 }