/** * Add colums to blog view * * @since 0.1 * @param $column_name string * @param $blog_id integer * @uses switch_to_blog, mlp_get_available_languages_titles, _e, network_admin_url * mlp_get_language_flag, restore_current_blog, apply_filters * @return $column_name string */ public function add_columns($column_name, $blog_id) { //render column value if ('mlp_interlinked' === $column_name) { switch_to_blog($blog_id); $interlinked = mlp_get_available_languages_titles(); if (count($interlinked) < 2 || !is_array($interlinked)) { _e('nothing', 'multilingualpress'); return; } $linked_blogs = array(); echo '<div class="mlp_interlinked_blogs">'; foreach ($interlinked as $interlinked_blog_id => $interlinked_blog_title) { if ($interlinked_blog_id == $blog_id) { continue; } $linked_blogs[] = sprintf('<a href="%1$s">%2$s</a>', get_blogaddress_by_id($interlinked_blog_id), esc_html($interlinked_blog_title)); } empty($linked_blogs) || (print join(' | ', $linked_blogs)); echo '</div>'; restore_current_blog(); } $column_name = apply_filters('mlp_add_custom_columns', $column_name, $blog_id); return $column_name; }
/** * @param string $column_name not used * @param int $blog_id * @return string|void */ function mlp_render_related_blog_column($column_name, $blog_id) { switch_to_blog($blog_id); $blogs = (array) mlp_get_available_languages_titles(); restore_current_blog(); unset($blogs[$blog_id]); if (empty($blogs)) { return __('none', 'multilingualpress'); } $blogs = array_map('esc_html', $blogs); return '<div class="mlp_interlinked_blogs"><b>' . join('</b><br /><b>', $blogs) . '</b></div>'; }
/** * @return array */ public function get_site_languages() { $languages = mlp_get_available_languages_titles(); unset($languages[get_current_blog_id()]); return $languages; }
/** * AJAX handler. * * Called by the view. The 'exit' is handled there. * * @return array */ public function get_ajax_menu_items() { if (!$this->is_allowed()) { return array(); } $titles = mlp_get_available_languages_titles(TRUE); return $this->prepare_menu_items($titles); }
/** * Get the linked elements and display them as a list * flag from a blogid * * @since 0.1 * @access public * @param int $blog_id ID of a blog * @uses mlp_get_available_languages, mlp_get_available_languages_titles, is_single, * is_page, mlp_get_linked_elements, mlp_get_language_flag, get_current_blog_id, * get_blog_post, get_site_url * @return string output of the bloglist */ public static function show_linked_elements($args) { global $wp_query; $output = ''; $languages = mlp_get_available_languages(); $language_titles = mlp_get_available_languages_titles(); if (!(0 < count($languages))) { return $output; } // returns NULL if there is no post, get_the_ID() throws a notice, // if we don' check this before. $default_post = get_post(); if ($default_post) { $current_element_id = get_the_ID(); } elseif (!empty($wp_query->queried_object) && !empty($wp_query->queried_object->ID)) { $current_element_id = $wp_query->queried_object->ID; } else { $current_element_id = 0; } $linked_elements = array(); // double check to avoid issues with a static front page. if (!is_front_page() && !is_home() && is_singular()) { $linked_elements = mlp_get_linked_elements($current_element_id); } $defaults = array('link_text' => 'text', 'echo' => TRUE, 'sort' => 'blogid', 'show_current_blog' => FALSE); $params = wp_parse_args($args, $defaults); if ('blogid' == $params['sort']) { ksort($languages); } else { asort($languages); } $output .= '<div class="mlp_language_box"><ul>'; foreach ($languages as $language_blog => $language_string) { $current_language = mlp_get_current_blog_language(2); if ($current_language == $language_string && $params['show_current_blog'] == FALSE) { continue; } // Get params $flag = mlp_get_language_flag($language_blog); $title = mlp_get_available_languages_titles(TRUE); // Display type if ('flag' == $params['link_text'] && '' != $flag) { $display = '<img src="' . $flag . '" alt="' . $languages[$language_blog] . '" title="' . $title[$language_blog] . '" />'; } else { if ('text' == $params['link_text'] && !empty($language_titles[$language_blog])) { $display = $language_titles[$language_blog]; } else { if ('text_flag' == $params['link_text']) { $display = '<img src="' . $flag . '" alt="' . $languages[$language_blog] . '" title="' . $title[$language_blog] . '" />'; if (!empty($language_titles[$language_blog])) { $display .= ' ' . $language_titles[$language_blog]; } } else { $display = $languages[$language_blog]; } } } $class = get_current_blog_id() == $language_blog ? 'id="mlp_current_locale"' : ''; // set element to 0 to avoid empty element if (!isset($linked_elements[$language_blog])) { $linked_elements[$language_blog] = 0; } // Check post status $post = $linked_elements[$language_blog] > 0 ? get_blog_post($language_blog, $linked_elements[$language_blog]) : ''; do_action('mlp_before_link'); $link = (is_single() || is_page() || is_home()) && isset($post->post_status) && ('publish' === $post->post_status || 'private' === $post->post_status && is_super_admin()) ? get_blog_permalink($language_blog, $linked_elements[$language_blog]) : get_site_url($language_blog); // apply filter to help others to change the link $link = apply_filters('mlp_linked_element_link', $link, $language_blog, $linked_elements[$language_blog]); do_action('mlp_after_link'); // Output link elements $output .= '<li ' . ($current_language == $language_string ? 'class="current"' : '') . '><a rel="alternate" hreflang="' . self::get_blog_language($language_blog) . '" ' . $class . ' href="' . $link . '">' . $display . '</a></li>'; } $output .= '</ul></div>'; return $output; }
/** * Create the tab and prepend it to the body-tag * * @since 0.1 * @access public * @param string $content * @uses is_single, is_page, get_site_option, mlp_get_linked_elements, mlp_get_available_languages * __, plugins_url, esc_html * @return string $content */ public function frontend_tab($content) { if (!is_single() && !is_page()) { return $content; } // Get post link option $option = get_site_option('inpsyde_multilingual_quicklink_options'); $available_blogs = get_site_option('inpsyde_multilingual'); if (!$option) { $option = array('mlp_quicklink_position' => 'tr'); } // Get the linked elements for the current post // array: blog_id => post_id $linked = mlp_get_linked_elements(get_the_ID()); if (array() == $linked) { return $content; } // Get the blogs that are related to the current blog $languages = mlp_get_available_languages(); if (array() == $languages) { return $content; } $translated = array(); $titles = mlp_get_available_languages_titles(); foreach ($languages as $language_blogid => $language_name) { if ($language_blogid == get_current_blog_id()) { continue; } $url = $this->get_element_permalink($language_blogid, get_the_ID()); if ($url) { $translated[$url] = esc_html($titles[$language_blogid]); } } if (empty($translated)) { return $content; } $position = $option['mlp_quicklink_position']; $switcher = $this->to_html($translated, $position); // position at the top if ('t' === $position[0]) { return $switcher . $content; } return $content . $switcher; }