/**
  * Movie shortcode. Display a single movie with various display
  * options.
  *
  * @since    1.1
  * 
  * @param    array     Shortcode attributes
  * @param    string    Shortcode content
  * 
  * @return   string    Shortcode display
  */
 public static function movie_shortcode($atts = array(), $content = null)
 {
     $atts = self::filter_shortcode_atts('movie', $atts);
     $movie_id = WPMOLY_Shortcodes::find_movie_id($atts['id'], $atts['title']);
     if (is_null($movie_id)) {
         return $content;
     }
     $atts['id'] = $movie_id;
     // Caching
     $name = apply_filters('wpmoly_cache_name', 'movie_shortcode', $atts);
     $content = WPMOLY_Cache::output($name, function () use($atts, $content) {
         extract($atts);
         if (!is_null($id)) {
             $select = 'p=' . $id;
         } else {
             if (!is_null($title)) {
                 $select = 'name=' . sanitize_title_with_dashes(remove_accents($title));
             }
         }
         $query = 'post_type=movie&post_status=publish&' . $select;
         $query = new WP_Query($query);
         $movies = WPMOLY_Shortcodes::prepare_movies($query, $atts);
         $attributes = array('movies' => $movies);
         $content = WPMovieLibrary::render_template('shortcodes/movies.php', $attributes, $require = 'always');
         return $content;
     }, $echo = false);
     return $content;
 }