예제 #1
0
 /**
  * Load all slides associated with this SlideDeck
  * 
  * @param integer $slidedeck_id The ID of the SlideDeck being loaded
  * 
  * @uses WP_Query
  * @uses get_the_title()
  * @uses maybe_unserialize()
  */
 function get_slides_nodes($slidedeck)
 {
     $images = array();
     switch ($slidedeck['options']['ngg_gallery_or_album']) {
         case 'gallery':
             if ($slidedeck["options"]["ngg_gallery"] != "none") {
                 $images = $this->get_images_by_gallery_id($slidedeck["options"]["ngg_gallery"]);
             }
             break;
         case 'album':
             if ($slidedeck["options"]["ngg_album"] != 'none') {
                 $galleries = $this->get_galleries_in_album($slidedeck["options"]["ngg_album"]);
                 if ($galleries) {
                     foreach ($galleries as $gallery) {
                         $gallery_images = $this->get_images_by_gallery_id($gallery);
                         $images = array_merge($images, $gallery_images);
                     }
                 }
             }
             break;
     }
     foreach ($images as $index => $entry) {
         $images[$index]['title'] = $entry['alttext'];
         $images[$index]['created_at'] = strtotime($entry['imagedate']);
         $images[$index]['image'] = site_url() . '/' . $entry['gallery_meta']['path'] . '/' . $entry['filename'];
         $images[$index]['thumbnail'] = site_url() . '/' . $entry['gallery_meta']['path'] . '/thumbs/thumbs_' . $entry['filename'];
         $images[$index]['permalink'] = site_url() . '/' . $entry['gallery_meta']['path'] . '/' . $entry['filename'];
         $images[$index]['author_name'] = get_userdata($entry['gallery_meta']['author'])->display_name;
         $images[$index]['author_avatar'] = slidedeck2_get_avatar(get_userdata($entry['gallery_meta']['author'])->user_email);
         $images[$index]['author_url'] = get_userdata($entry['gallery_meta']['author'])->user_url;
         // If the gallery is associated with a WP Page id, set permalink to that...
         if ($entry['gallery_meta']['pageid'] != 0) {
             $images[$index]['permalink'] = get_page_link($entry['gallery_meta']['pageid']);
         }
     }
     return $images;
 }
예제 #2
0
 /**
  * Load slides for SlideDecks sourced from WordPress posts
  * 
  * @param array $slidedeck The SlideDeck object
  * 
  * @uses WP_Query
  * @uses get_the_title()
  * @uses maybe_unserialize()
  * 
  * @return array
  */
 function get_slides_nodes($slidedeck)
 {
     $post_type = $slidedeck['options']['post_type'];
     $post_type_sort = $slidedeck['options']['post_type_sort'];
     // Default Query Arguments
     $query_args = array('post_type' => $post_type, 'post_status' => 'publish', 'posts_per_page' => $slidedeck['options']['total_slides'], 'ignore_sticky_posts' => 1);
     switch ($post_type_sort) {
         case "recent":
             $query_args['orderby'] = "date";
             $query_args['order'] = "DESC";
             break;
         case "popular":
             $query_args['orderby'] = "comment_count date";
             $query_args['order'] = "DESC";
             break;
         case "menu_order":
             $query_args['orderby'] = "menu_order";
             $query_args['order'] = "ASC";
             break;
     }
     // If filtering is on...
     if ($slidedeck['options']['filter_by_tax']) {
         // Set up the tag/category filtering
         $filter_terms = array();
         if (isset($slidedeck['options']['filter'])) {
             $filter_terms = $slidedeck['options']['filter'];
         }
         // Loop through the taxonomies and the terms.
         if (isset($filter_terms) && !empty($filter_terms)) {
             // Are we getting any of the taxonomies or all of them?
             if ($slidedeck['options']['query_any_all'] == 'any') {
                 $query_args['tax_query']['relation'] = 'OR';
             } else {
                 $query_args['tax_query']['relation'] = 'AND';
             }
             foreach ($filter_terms as $taxonomy => $terms) {
                 // Get the taxonomy object
                 $taxonomy_object = get_taxonomy($taxonomy);
                 // Which field to we query?
                 if ($taxonomy_object->hierarchical) {
                     $field = 'id';
                 } else {
                     $field = 'slug';
                 }
                 // Add each taxonomy query to the tax query array...
                 foreach ($terms as $term_ids) {
                     $query_args['tax_query'][] = array('taxonomy' => $taxonomy, 'field' => $field, 'terms' => $term_ids);
                 }
             }
         }
     }
     $query_args = apply_filters("{$this->namespace}_posts_slidedeck_query_args", $query_args, $slidedeck);
     add_filter('posts_where', array(&$this, 'filter_password_protected'));
     $query = new WP_Query($query_args);
     remove_filter('posts_where', array(&$this, 'filter_password_protected'));
     $slides = array();
     foreach ((array) $query->posts as $post) {
         $post_id = $post->ID;
         /**
          * Set the author and the default post_content.
          */
         $author = get_userdata($post->post_author);
         $post_content = $post->post_content;
         $slide = array('id' => $post_id, 'title' => $post->post_title, 'permalink' => get_permalink($post_id), 'author_id' => $post->post_author, 'author_name' => $author->display_name, 'author_url' => $author->user_url, 'author_email' => $author->user_email, 'author_avatar' => slidedeck2_get_avatar($author->user_email), 'content' => $post_content, 'excerpt' => $post->post_excerpt, 'created_at' => strtotime($post->post_date_gmt), 'local_created_at' => $post->post_date);
         $slides[] = $slide;
     }
     return $slides;
 }
예제 #3
0
 /**
  * Get Images from Media Library
  * 
  * Retrieves all media library ID entries associated with this SlideDeck
  * 
  * @param array $slidedeck The SlideDeck object
  * 
  * @return array
  */
 function get_medialibrary($slidedeck)
 {
     global $SlideDeckPlugin;
     $images = array();
     $medias = $this->get_media_meta((array) $slidedeck['options']['medialibrary_ids']);
     $sizes = apply_filters("{$this->namespace}_sizes", $SlideDeckPlugin->sizes, $slidedeck);
     $width = $slidedeck['options']['size'] != "custom" ? $sizes[$slidedeck['options']['size']]['width'] : $slidedeck['options']['width'];
     $height = $slidedeck['options']['size'] != "custom" ? $sizes[$slidedeck['options']['size']]['height'] : $slidedeck['options']['height'];
     foreach ($medias as $media) {
         $image_src = wp_get_attachment_image_src($media['post']->ID, array($width, $height));
         $author = get_userdata($media['post']->post_author);
         $media_width = isset($media['meta']['width']) ? $media['meta']['width'] : $width;
         $media_height = isset($media['meta']['height']) ? $media['meta']['height'] : $height;
         $image = array('title' => $media['post']->post_title, 'width' => $media_width, 'height' => $media_height, 'created_at' => strtotime($media['post']->post_date), 'image' => $image_src[0], 'description' => $media['post']->post_excerpt, 'thumbnail' => $media['src'][0], 'permalink' => $media['media_link'], 'author_name' => $author->user_nicename, 'author_url' => $author->user_url, 'author_email' => $author->user_email, 'author_avatar' => slidedeck2_get_avatar($author->user_email));
         $images[] = $image;
     }
     return $images;
 }
예제 #4
0
 /**
  * Load slides for RSS feed sourced SlideDecks
  * 
  * @uses fetch_feed()
  * 
  * @return array
  */
 function get_slides($slidedeck)
 {
     $slides = array();
     // Parse the textarea for newline separated URLs
     $feed_urls = array();
     $feed_urls_exploded = explode("\n", $slidedeck['options']['feedUrl']);
     foreach ($feed_urls_exploded as $feed_url) {
         $trimmed_url = trim($feed_url);
         $escaped_url = wp_specialchars_decode(esc_url($trimmed_url));
         if (!empty($escaped_url)) {
             $feed_urls[] = $escaped_url;
         }
     }
     // Set a reference to the current SlideDeck for reference in actions
     $this->__transient_slidedeck =& $slidedeck;
     // Add a feed options action for this fetch_feed() call
     add_action('wp_feed_options', array(&$this, 'wp_feed_options'), 10, 2);
     // Fetch our feed
     $rss = fetch_feed($feed_urls);
     // Remove the feed options modification action
     remove_action('wp_feed_options', array(&$this, 'wp_feed_options'), 10, 2);
     // Unset the SlideDeck reference
     unset($this->__transient_slidedeck);
     // Only process if there were no errors
     if (!is_wp_error($rss)) {
         // Get the total amount of items in the feed, maximum is the user set total slides option
         $maxitems = $rss->get_item_quantity($slidedeck['options']['total_slides']);
         $rss_items = $rss->get_items(0, $maxitems);
         // Loop through each item to build an array of slides
         foreach ($rss_items as &$item) {
             $author = $item->get_author();
             $slide = array('id' => $item->get_id(), 'title' => $item->get_title(), 'permalink' => $item->get_permalink(), 'author_name' => isset($author) ? $item->get_author()->get_name() : "", 'author_url' => isset($author) ? $item->get_author()->get_link() : "", 'author_email' => isset($author) ? $item->get_author()->get_email() : "", 'author_avatar' => isset($author) ? slidedeck2_get_avatar($item->get_author()->get_email()) : "", 'content' => $item->get_content(), 'excerpt' => strip_tags($item->get_content(), "<b><strong><i><em><a>"), 'created_at' => strtotime($item->get_date("Y-m-d H:i:s")), 'local_created_at' => $item->get_local_date(), 'latitude' => $item->get_latitude(), 'longitude' => $item->get_longitude());
             if ($enclosures = $item->get_enclosures()) {
                 $slide['enclosures'] = $enclosures;
             }
             $slides[] = $slide;
         }
     }
     return $slides;
 }