/**
  * 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;
 }