public static function apply_filters($filters)
 {
     $args = array();
     $collection = new self();
     if (!empty($filters['type'])) {
         $collection->_set_type_arguments($filters['type']);
     }
     $order = $orderby = false;
     if (!empty($filters['order'])) {
         $raw_order = end($filters['order']);
         list($orderby, $order) = explode('_', $raw_order, 2);
         $collection->_args['orderby'] = $orderby;
         $collection->_args['order'] = strtoupper($order);
     }
     if (!empty($filters['recent'])) {
         $recent = end($filters['recent']);
         $time = date('Y-m-d', strtotime("-{$recent} days"));
         $recent_callback = create_function('$where', 'global $wpdb; return $where .= " AND {$wpdb->posts}.post_date > \'' . $time . '\'";');
         add_filter('posts_where', $recent_callback);
     }
     if (!empty($filters['label'])) {
         $collection->_args['tax_query'] = array(array('taxonomy' => 'media_label', 'field' => 'id', 'terms' => $filters['label']));
     }
     if (!empty($filters['search'])) {
         $collection->_args['s'] = $filters['search'][0];
     }
     if (!empty($filters['page']) && is_numeric($filters['page'])) {
         $collection->_args['paged'] = (int) $filters['page'];
     }
     $collection->_spawn();
     if (!empty($filters['recent']) && !empty($recent_callback)) {
         remove_filter('posts_where', $recent_callback);
     }
     if (!empty($collection->_oembed_video_filter)) {
         $video_oembed = new self();
         $video_oembed->_args['meta_query'] = array(array('key' => 'oembed_type', 'value' => 'video'));
         if ($order) {
             $video_oembed->_args['order'] = strtoupper($order);
         }
         if ($orderby) {
             $video_oembed->_args['orderby'] = $orderby;
         }
         if (!empty($filters['label'])) {
             $video_oembed->_args['tax_query'] = array(array('taxonomy' => 'media_label', 'field' => 'id', 'terms' => $filters['label']));
         }
         if (!empty($filters['search'])) {
             $video_oembed->_args['s'] = $filters['search'][0];
         }
         if (!empty($filters['page']) && is_numeric($filters['page'])) {
             $video_oembed->_args['paged'] = (int) $filters['page'];
         }
         $video_oembed->_spawn();
         $collection->_query->posts = array_merge($collection->_query->posts, $video_oembed->_query->posts);
         if ($video_oembed->_query->max_num_pages > $collection->_query->max_num_pages) {
             $collection->_query->max_num_pages = $video_oembed->_query->max_num_pages;
         }
         $collection->_query->found_posts = (int) $collection->_query->found_posts + (int) $video_oembed->_query->found_posts;
     }
     if (!empty($collection->_oembed_audio_filter)) {
         $audio_oembed = new self();
         $audio_oembed->_args['meta_query'] = array(array('key' => 'oembed_type', 'value' => 'rich'));
         if ($order) {
             $audio_oembed->_args['order'] = strtoupper($order);
         }
         if ($orderby) {
             $audio_oembed->_args['orderby'] = $orderby;
         }
         if (!empty($filters['label'])) {
             $audio_oembed->_args['tax_query'] = array(array('taxonomy' => 'media_label', 'field' => 'id', 'terms' => $filters['label']));
         }
         if (!empty($filters['search'])) {
             $audio_oembed->_args['s'] = $filters['search'][0];
         }
         if (!empty($filters['page']) && is_numeric($filters['page'])) {
             $audio_oembed->_args['paged'] = (int) $filters['page'];
         }
         $audio_oembed->_spawn();
         $collection->_query->posts = array_merge($collection->_query->posts, $audio_oembed->_query->posts);
         if ($audio_oembed->_query->max_num_pages > $collection->_query->max_num_pages) {
             $collection->_query->max_num_pages = $audio_oembed->_query->max_num_pages;
         }
         $collection->_query->found_posts = (int) $collection->_query->found_posts + (int) $audio_oembed->_query->found_posts;
     }
     return $collection;
 }