/**
  * Format a Movie's languages for display
  * 
  * @since    2.0
  * 
  * @param    string    $data field value
  * 
  * @return   string    Formatted output
  */
 public static function format_movie_spoken_languages($data)
 {
     if (is_null($data) || '' == $data) {
         return $data;
     }
     $data = explode(',', $data);
     foreach ($data as $i => $d) {
         $d = trim($d);
         if ('1' == wpmoly_o('translate-languages')) {
             $title = WPMOLY_L10n::get_language_standard_name($d);
             $title = __($title, 'wpmovielibrary-iso');
         } else {
             $title = $d;
         }
         $url = apply_filters('wpmoly_movie_meta_link', array('key' => 'spoken_languages', 'value' => $d, 'type' => 'meta', 'text' => $title, 'title' => sprintf(__('More movies in %s', 'wpmovielibrary'), $title)));
         $data[$i] = $url;
     }
     $data = implode(', ', $data);
     $output = self::format_movie_field($data);
     return $output;
 }
 /**
  * Generate a list of all languages used in movies
  * 
  * @since    2.0
  * 
  * @param    boolean    $count Shall we add count?
  * 
  * @return   array   
  */
 public static function get_used_languages($count = false)
 {
     $used_languages = array();
     if (true !== $count) {
         $count = false;
     }
     $languages = self::get_used_meta('spoken_languages', $count);
     foreach ($languages as $i => $language) {
         $_language = WPMOLY_L10n::get_language_standard_name($language['name']);
         if ($_language != $language['name']) {
             if (!$count) {
                 $used_languages[$language['name']] = __($_language, 'wpmovielibrary-iso');
             } else {
                 $used_languages[$language['name']] = sprintf('%s (%s)', __($_language, 'wpmovielibrary-iso'), sprintf(_n('%d movie', '%d movies', $language['count'], 'wpmovielibrary'), $language['count']));
             }
         }
     }
     $used_languages = array_unique($used_languages);
     return $used_languages;
 }
 /**
  * Filter page's title to feature letters, meta, value in archives
  * pages' titles. Hooked to 'the_title' and 'wp_title' filters.
  * 
  * @since    2.1.1
  * 
  * @param    string        $title Current title
  * @param    int|string    $id Current page ID if current filter if 'the_title', separator if filter is 'wp_title'
  * 
  * @return   string    
  */
 public function movie_archives_title($title, $id = null)
 {
     // Exclude admin
     if (is_admin()) {
         return $title;
     }
     // 'wp_title' filter second parameter is separator, not id
     $filter = current_filter();
     $sep = ' | ';
     if ('wp_title' == $filter) {
         $id = get_the_ID();
     }
     // Exclude not-archive pages
     if (!in_array($id, $this->pages)) {
         return $title;
     }
     $is_movie = $id == $this->pages['movie'];
     $translate = '1' == wpmoly_o('rewrite-enable');
     $rewrite_movie = '1' == wpmoly_o('movie-archives-title-rewrite');
     $rewrite_taxonomy = '1' == wpmoly_o('tax-archives-title-rewrite');
     if ($is_movie && !$rewrite_movie || !$is_movie && !$rewrite_taxonomy) {
         return $title;
     }
     $page = array_search($id, $this->pages);
     $titles = array('movie' => __('Movies', 'wpmovielibrary'), 'collection' => __('Collections', 'wpmovielibrary'), 'genre' => __('Genres', 'wpmovielibrary'), 'actor' => __('Actors', 'wpmovielibrary'));
     /**
      * Filter Archive Pages Titles
      * 
      * @since    2.1.1
      * 
      * @param    array    $titles Default Archive Pages titles
      * 
      * @return   array    Filtered titles
      */
     $titles = apply_filters('wpmoly_filter_archive_pages_titles', $titles);
     /**
      * Filter Archive Page's default title
      * 
      * @since    2.1.1
      * 
      * @param    string    $title Current Archive Page title
      * @param    int       $id Current Archive Page Post ID
      * 
      * @return   string    Filtered title
      */
     $title = apply_filters("wpmoly_filter_{$page}_archive_page_default_title", $titles[$page], $id);
     if (!is_single($id) && !is_page($id) || 'the_title' == $filter && !in_the_loop()) {
         return $title;
     }
     $meta = get_query_var('meta');
     $detail = get_query_var('detail');
     $value = get_query_var('value');
     $sorting = get_query_var('sorting');
     $_detail = '';
     $_meta = '';
     if ($is_movie && $rewrite_movie) {
         if ('' != $meta) {
             if ($translate) {
                 $meta = WPMOLY_L10n::untranslate_rewrite($meta);
             }
             $supported = WPMOLY_Settings::get_supported_movie_meta();
             if (isset($supported[$meta])) {
                 $_meta = $supported[$meta]['title'];
             }
             if ('' != $value) {
                 $value = WPMOLY_L10n::untranslate_rewrite($value);
             }
         } elseif ('' != $detail) {
             if ($translate) {
                 $detail = WPMOLY_L10n::untranslate_rewrite($detail);
             }
             $supported = WPMOLY_Settings::get_supported_movie_detail();
             if (isset($supported[$detail])) {
                 $_detail = $supported[$detail]['title'];
             }
             if ('' != $value) {
                 $value = WPMOLY_L10n::untranslate_rewrite($value);
             }
         }
         if ('production_countries' == $meta) {
             $value = WPMOLY_L10n::get_country_standard_name($value);
             $value = __($value, 'wpmovielibrary-iso');
         } else {
             if ('spoken_languages' == $meta) {
                 $value = WPMOLY_L10n::get_language_standard_name($value);
                 $value = __($value, 'wpmovielibrary-iso');
             } else {
                 $value = __($value, 'wpmovielibrary');
             }
         }
         if ('' == $_meta && '' != $_detail) {
             $_meta = $_detail;
         }
         if ('' != $_meta && '' == $value) {
             $title = sprintf(__('Movies by %s', 'wpmovielibrary'), $_meta);
         } elseif ('' != $_meta && '' != $value) {
             $title = sprintf(__('Movies by %s: %s', 'wpmovielibrary'), ucwords($_meta), $value);
         } else {
             $title = __('Movies', 'wpmovielibrary');
         }
     }
     if ('' != $sorting) {
         $sorting = self::parse_query_vars(compact('sorting'));
         if (isset($sorting['letter']) && '' != $sorting['letter']) {
             $title .= sprintf(' − %s ', sprintf(__('Letter %s', 'wpmovielibrary'), $sorting['letter']));
         }
         if (isset($sorting['paged']) && '' != $sorting['paged'] && 'wp_title' == $filter) {
             $title .= sprintf(__(' %s Page %d ', 'wpmovielibrary'), $sep, $sorting['paged']);
         }
     }
     /**
      * Filter Page's Post title as used in (get_)the_title()
      * 
      * @since    2.1.1
      * 
      * @param    string    $title Current Archive Page title
      * @param    int       $id Current Archive Page Post ID
      * 
      * @return   string    Filtered title
      */
     $title = apply_filters("wpmoly_filter_{$page}_archive_page_title", $title, $id);
     if ('wp_title' == $filter) {
         $title = str_replace(array(' : ', ' − '), $sep, $title) . $sep;
         /**
          * Filter Page's main title as used in wp_title()
          * 
          * @since    2.1.1
          * 
          * @param    string    $title Current Archive Page title
          * @param    int       $id Current Archive Page Post ID
          * 
          * @return   string    Filtered title
          */
         $title = apply_filters("wpmoly_filter_{$page}_archive_page_wp_title", $title, $id);
     }
     return $title;
 }