'
  • ', 'post' => '
  • ', 'show_count' => 'true', 'show_current' => 'true', 'show_unreadable' => 'true', 'snippet' => '', 'content_type' => 'post'); parse_str($arguments, $args); $args = array_merge($default_args, $args); if (!$gengo->languages) { echo $args['pre'] . __('No Languages Defined', GENGO_DOMAIN) . $args['post']; } else { $titles = ($args['snippet']) ? $gengo->get_synblocks($args['snippet']) : array(); $home = trailingslashit($gengo->site_home); if ($wp_rewrite->using_index_permalinks()) $home .= $wp_rewrite->index; $totals = $gengo->get_totals($args['content_type']); asort($gengo->languages); foreach ($gengo->languages as $language_id => $entry) { if ($post_count = $totals[$language_id]) { if ('false' != $args['show_count']) $count_string = " ($post_count)"; $gengo->forced_append = true; if (('false' != $args['show_unreadable']) || (false !== strpos($gengo->viewable_code_string, $entry->code))) { $title = $titles[$language_id] ? $titles[$language_id] : $entry->language; if (false === $gengo->is_set_language($language_id)) { echo "$args[pre]code\" href=\"" . $gengo->append_link_language($home, $entry->code) . "\" hreflang=\"" . $entry->code . "\">$title$count_string$args[post]"; } else { if ('false' != $args['show_current']) { echo "$args[pre]code\">$title$count_string$args[post]"; } } } } } } } /** * Modified version of WordPress' own link_pages. * DEPRECATED * * @param string $before * @param string $after * @param string $next_or_number * @param string $nextpagelink * @param string $previouspagelink * @param string $pagelink * @param string $more_file */ function gengo_link_pages($before = '
    ', $after = '
    ', $next_or_number = 'number', $nextpagelink = 'next page', $previouspagelink = 'previous page', $pagelink = '%', $more_file = '') { _deprecated_function(__FUNCTION__, '0.0', 'gengo_wp_link_pages()'); $args = compact('before', 'after', 'next_or_number', 'nextpagelink', 'previouspagelink', 'pagelink', 'more_file'); return gengo_wp_link_pages($args); } /** * Modified version of WordPress' own wp_link_pages. * * @param string|array $args Optional. Overwrite the defaults. * @return string Formatted output in HTML. */ function gengo_wp_link_pages($args = '') { $defaults = array( 'before' => '

    ' . __('Pages:'), 'after' => '

    ', 'link_before' => '', 'link_after' => '', 'next_or_number' => 'number', 'nextpagelink' => __('Next page'), 'previouspagelink' => __('Previous page'), 'pagelink' => '%', 'more_file' => '', 'echo' => 1 ); $r = wp_parse_args( $args, $defaults ); extract( $r, EXTR_SKIP ); global $gengo,$post, $page, $numpages, $multipage, $more, $pagenow; if ( $more_file != '' ) $file = $more_file; else $file = $pagenow; $output = ''; if ( $multipage ) { $permalinks = get_option('permalink_structure'); if ( '' == $permalinks || in_array($post->post_status, array('draft', 'pending')) ) $link_base = get_permalink(); else $link_base = ($gengo->language_supplied) ? substr(trailingslashit(get_permalink()), 0, -3) : get_permalink(); if ( 'number' == $next_or_number ) { $output .= $before; for ( $i = 1; $i < ($numpages+1); $i = $i + 1 ) { $j = str_replace('%',"$i",$pagelink); $output .= ' '; if ( ($i != $page) || ((!$more) && ($page==1)) ) { if ( 1 == $i ) { $output .= ''; } else { if ( '' == $permalinks || in_array($post->post_status, array('draft', 'pending')) ) $link = $link_base . '&page=' . $i; else $link = trailingslashit($link_base) . user_trailingslashit($i, 'single_paged'); if ( $gengo->language_preference && ('' != $permalinks) ) $link = $gengo->append_link_language($link, $gengo->language_preference[0]->code); $output .= ''; } } $output .= $link_before; $output .= $j; $output .= $link_after; if ( ($i != $page) || ((!$more) && ($page==1)) ) $output .= ''; } $output .= $after; } else { if ( $more ) { $output .= $before; $i = $page - 1; if ( $i && $more ) { if ( 1 == $i ) { $output .= '' . $link_before. $previouspagelink . $link_after . ''; } else { if ( '' == $permalinks || in_array($post->post_status, array('draft', 'pending')) ) $link = $link_base . '&page=' . $i; else $link = trailingslashit($link_base) . user_trailingslashit($i, 'single_paged'); if ( $gengo->language_preference && ('' != $permalinks) ) $link = $gengo->append_link_language($link, $gengo->language_preference[0]->code); $output .= '' . $link_before. $previouspagelink . $link_after . ''; } } $i = $page + 1; if ( $i <= $numpages && $more ) { if ( 1 == $i ) { $output .= '' . $link_before. $nextpagelink . $link_after . ''; } else { if ( '' == $permalinks || in_array($post->post_status, array('draft', 'pending')) ) $link = $link_base . '&page=' . $i; else $link = trailingslashit($link_base) . user_trailingslashit($i, 'single_paged'); if ( $gengo->language_preference && ('' != $permalinks) ) $link = $gengo->append_link_language($link, $gengo->language_preference[0]->code); $output .= '' . $link_before. $nextpagelink . $link_after . ''; } } $output .= $after; } } } if ( $echo ) echo $output; return $output; } /** * Modified version of WordPress' own previous_posts_link. * * @param string $label */ function gengo_previous_posts_link($label = 'Newer Entries »') { global $gengo, $paged; if (!is_single() && ($paged > 1)) { $nextpage = intval($paged) - 1; if ($nextpage < 1) $nextpage = 1; $link = get_pagenum_link($nextpage); if ($gengo->language_preference) $link = str_replace("/{$gengo->viewable_code_string}/page/$nextpage/", "/page/$nextpage/{$gengo->viewable_code_string}/", $link); echo '' . preg_replace('/&([^#])(?![a-z]{1,8};)/', '&$1', $label) . ''; } } /** * Modified version of WordPress' own next_posts_link. * * @param string $label * @param int $max_page */ function gengo_next_posts_link($label = '« Older Entries', $max_page = 0) { global $gengo, $paged, $max_num_pages, $result, $request, $posts_per_page, $wpdb, $wp_query; if ( !$max_page ) { $max_page = $wp_query->max_num_pages; } if (!$paged) $paged = 1; (int) $nextpage = intval($paged) + 1; # echo $max_page;#."/".$paged; if (!is_single() && ($nextpage <= $max_page)) { $link = get_pagenum_link($nextpage); foreach ($gengo->language_preference_id as $id) $string .= ($string) ? GENGO_LANGUAGE_DIVIDER . $gengo->languages[$id]->code : $gengo->languages[$id]->code; if ($gengo->language_preference) $link = str_replace("/$string/page/$nextpage/", "/page/$nextpage/$string/", $link); echo '' . preg_replace('/&([^#])(?![a-z]{1,8};)/', '&$1', $label) . ''; } } /** * Returns a text snippet * * @param string $block_name * @param bool $return * @return string */ function gengo_synblock($block_name, $return = false) { return gengo_snippet($block_name, $return); } /** * Prints or returns a text snippet * * @param string $block_name * @param bool $return */ function gengo_snippet($block_name, $return = false) { global $gengo; if ($code = $gengo->language_preference[0]->code) { if ($return) return $gengo->get_synblock($block_name, $gengo->language_preference_id[0]); else echo $gengo->get_synblock($block_name, $gengo->language_preference_id[0]); } } /** * Prints or returns the trackback url * * @param bool $display */ function gengo_trackback_url($display = true) { global $gengo, $id, $post; $url = get_settings('permalink_structure') ? substr(trailingslashit(get_permalink()), 0, -3) . 'trackback/' : get_settings('siteurl') . '/wp-trackback.php?p=' . $id; $url = $gengo->append_link_language($url, $post->code); if ($display) echo $url; else return $url; } /** * Prints an unordered list of viewing languages, with JS controls * * @param string $title */ function gengo_viewing_languages($title = 'GENGO_DEFAULT') { global $gengo; if ('GENGO_DEFAULT' == $title) $title = '

    ' . __('Current Languages', GENGO_DOMAIN) . '

    '; echo $title; ?> ' . __('Available Languages', GENGO_DOMAIN) . ''; echo $title; ?> ' . __('Language Control', GENGO_DOMAIN) . ''; echo $title; ?>
    using_index_permalinks()) $index = $wp_rewrite->index; $url = $gengo->append_link_language(trailingslashit(get_settings('home')) . $index, $gengo->viewable_code_string); if ("index.php" == substr($url, -9)) $url = substr($url, 0, -9); if ($return) return $url; else echo $url; } // Checks whether we are on a language page. function is_language($specific = '') { global $gengo; if (!$code = $gengo->language_preference[0]->code) return false; if ($specific) { if (false !== $gengo->is_set_language($gengo->codes2ids[$specific])) return true; return false; } return true; } function the_template_language($return = false) { global $gengo; if ($return) return $gengo->language_preference[0]->language; else echo $gengo->language_preference[0]->language; } function the_template_code($return = false) { global $gengo; if ($return) return $gengo->language_preference[0]->code; else echo $gengo->language_preference[0]->code; } function the_template_locale($return = false) { global $gengo; if ($return) return $gengo->language_preference[0]->locale; else echo $gengo->language_preference[0]->locale; } function the_template_direction($return = false) { global $gengo; if ($return) return $gengo->language_preference[0]->rtl ? 'rtl' : 'ltr'; else echo $gengo->language_preference[0]->rtl ? 'rtl' : 'ltr'; } // Echoes the language of the current post. function the_language($return = false) { global $post; if ($return) return $post->language; else echo $post->language; } // Echoes or returns the language code of the current post. Thanks to Martin Gottstein for the idea. function the_language_code($return = false) { global $post; if ($return) return $post->code; else echo $post->code; } // Echoes or returns the language locale of the current post. function the_language_locale($return = false) { global $post; if ($return) return $post->locale; else echo $post->locale; } // Echoes or returns the language text direction of the current post. function the_language_direction($return = false) { global $post; if ($return) return $post->rtl ? 'rtl' : 'ltr'; else echo $post->rtl ? 'rtl' : 'ltr'; } // Outputs a string of all the languages a reader can read. function the_viewable_languages($aspect, $glue = ', ', $return = false) { global $gengo; $viewable_count = count($gengo->language_preference_id); if (1 == $viewable_count) $string = $gengo->languages[$gengo->language_preference_id[0]]->language; else { $i = 0; foreach ($gengo->language_preference_id as $id) { if ($i++) $string .= ($i == $viewable_count) ? " $aspect " : $glue; $string .= $gengo->languages[$id]->language; } } if ($return) return $string; else echo $string; } // Outputs a string of language codes in use on this page. function the_viewable_codes($return = false) { global $gengo; if ($return) return $gengo->viewable_code_string; else echo $gengo->viewable_code_string; } // Outputs a div containing all the summaries for this article. Use in The Loop. function the_summaries($lang = 'xml:lang,lang', $title = 'GENGO_DEFAULT') { global $gengo, $post; if (!$summaries = $gengo->post_language_cache[$post->ID]->summaries) return; $lowest = 10000; $default_id = 0; $viewable_summaries = array(); foreach ($summaries as $summary_id => $summary) { if (false !== ($order = $gengo->is_viewable_language($summary['summary_language']))) { $viewable_summaries[$summary_id] = $summary; if ($order < $lowest) { $default_id = $summary_id; $lowest = $order; } } } if (!$viewable_summaries) return; if (!$default_id) $default_id = $summaries[0]['summary_id']; if (($sum_count = count($viewable_summaries)) > 1) { ?>
    $summary) { if ($lang) { $attributes = explode(',', $lang); $lang_atts = ''; foreach($attributes as $attribute) { $lang_atts .= ' ' . $attribute . '="' . $gengo->languages[$summary['summary_language']]->code . '"'; } } ?>

    >

    ' . $gengo->languages[$summary['summary_language']]->language . ' '; } if ($sum_count > 1) echo $link_list; ?>

    false, 'pre' => '', 'inner' => '
  • ', 'title_none' => 'GENGO_DEFAULT', 'title_exists' => 'GENGO_DEFAULT', 'show_authors' => false, 'show_dates' => '', 'show_current' => false, 'snippet' => '', 'show_translation_title' => false); parse_str($arguments, $args); $args = array_merge($default_args, $args); $titles = ($args['snippet']) ? $gengo->get_synblocks($args['snippet']) : array(); // TODO: Change to use the cache. if (!$translations = $gengo->get_the_translations()) { if ($args['return']) return array(); if ('GENGO_DEFAULT' == $args['title_none']) $args['title_none'] = '

    ' . __('No Translations', GENGO_DOMAIN) . '

    '; echo $args['title_none']; return; } if ($args['return']) return $translations; if ('GENGO_DEFAULT' == $args['title_exists']) $args['title_exists'] = '

    ' . __('Other Languages:', GENGO_DOMAIN) . '

    '; echo $args['title_exists'] . $args['pre']; foreach ($translations as $translation) { if ($i++) echo $args['inner']; $title = $titles[$translation['translation_language']] ? $titles[$translation['translation_language']] : ''; if ($args['show_translation_title']) { echo $title; $title = $translation['translation_title']; } echo $gengo->translation_link($translation, 'a', $title); if ($args['show_author']) echo ' (' . $translation['translation_author'] . ')'; if ($args['show_date']) echo ' ' . mysql2date($args['show_date'], $translation['translation_date']); } if ($args['show_current']) { $title = $args['snippet'] ? $titles[$gengo->codes2ids[the_language_code(true)]] : the_language(true); echo $args['inner'] . $title; } echo $args['post']; } function the_translations_comments($show_count = true) { global $gengo, $wpdb, $post; if (!$translations = $this->post_language_cache[$post->ID]->translations) return; foreach ($translations as $translation) { if (!$translation['translation_comments']) continue; $comments_string .= $gengo->translation_link($translation, 'comments'); if ($show_count) $comments_string .= " ($translation[translation_comments]) "; } if ($comments_string) printf(__('View Comments in: %s', GENGO_DOMAIN), $comments_string); } include_once(GENGO_PATH . '/gengo_extra_functions.php'); ?>