/** * 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; }
/** * 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; }
/** * 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; }
/** * 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; }