Ejemplo n.º 1
0
 /**
  * Wrapping spine titles in an additional span for styling
  * 
  * @param string $title Title of the spine
  * @param array $slidedeck The SlideDeck object being rendered
  * @param array $slide The Slide array
  * 
  * @uses SlideDeckLens_Scaffold::is_valid()
  * @uses SlideDeckPlugin::slidedeck_is_dynamic()
  * 
  * @return string
  */
 function slidedeck_horizontal_spine_title($title, $slidedeck, $slide)
 {
     global $SlideDeckPlugin, $SlideDeckSlide;
     if ($this->is_valid($slidedeck['lens'])) {
         $title_text = $title;
         if (!$SlideDeckPlugin->slidedeck_is_dynamic($slidedeck)) {
             $custom_spine_title = get_post_meta($slide['id'], '_spine_title', true);
             if ($custom_spine_title) {
                 $title_text = $custom_spine_title;
             } else {
                 $title_text = '';
             }
         }
         $title = slidedeck2_stip_tags_and_truncate_text($title_text, $slidedeck['options']['spineTitleLength']);
         $title = "<span class=\"sd2-spine-title\">{$title}</span>";
     }
     return $title;
 }
Ejemplo n.º 2
0
 /**
  * Render slides for SlideDecks of this type
  * 
  * Loads the slides associated with this SlideDeck if it matches this Deck type and returns
  * a string of HTML markup.
  * 
  * @param array $slides_arr Array of slides
  * @param object $slidedeck SlideDeck object
  * 
  * @global $SlideDeckPlugin
  * 
  * @uses SlideDeckPlugin::process_slide_content()
  * @uses Legacy::get_slides()
  * 
  * @return string
  */
 function slidedeck_get_slides($slides, $slidedeck)
 {
     global $SlideDeckPlugin;
     // Fail silently if not this Deck type
     if (!$this->is_valid($slidedeck['source'])) {
         return $slides;
     }
     // How many decks are on the page as of now.
     $deck_iteration = 0;
     if (isset($SlideDeckPlugin->SlideDeck->rendered_slidedecks[$slidedeck['id']])) {
         $deck_iteration = $SlideDeckPlugin->SlideDeck->rendered_slidedecks[$slidedeck['id']];
     }
     // Slides associated with this SlideDeck
     $slides_nodes = $this->get_slides_nodes($slidedeck);
     $slide_counter = 1;
     if (is_array($slides_nodes)) {
         // Loop through all slide nodes to build a structured slides array
         foreach ($slides_nodes as &$slide_nodes) {
             $slide = array('source' => $this->name, 'title' => $slide_nodes['title'], 'created_at' => $slide_nodes['created_at']);
             $slide = array_merge($this->slide_node_model, $slide);
             // Look to see if an image is associated with this slide
             $has_image = false;
             $images = $SlideDeckPlugin->Lens->parse_html_for_images($slide_nodes['content']);
             if (!empty($images)) {
                 $first_image = reset($images);
                 $has_image = $first_image;
             }
             if ($has_image) {
                 $thumbnail = $has_image;
                 $full_image = preg_replace('/\\.com\\/[0-9]+x\\//', '.com/600x/', $has_image);
                 $slide['classes'][] = "has-image";
                 $slide['thumbnail'] = $thumbnail;
                 $slide['type'] = "image";
             } else {
                 $slide['classes'][] = "no-image";
             }
             $slide_nodes['source'] = $slide['source'];
             $slide_nodes['type'] = $slide['type'];
             // Excerpt node
             if (!array_key_exists('excerpt', $slide_nodes) || empty($slide_nodes['excerpt'])) {
                 $slide_nodes['excerpt'] = $slide_nodes['content'];
             }
             // Truncate excerpt node length
             $excerpt_length = $has_image ? $slidedeck['options']['excerptLengthWithImages'] : $slidedeck['options']['excerptLengthWithoutImages'];
             $slide_nodes['excerpt'] = slidedeck2_stip_tags_and_truncate_text($slide_nodes['excerpt'], $excerpt_length, "&hellip;");
             // Truncate title node length
             $title_length = $has_image ? $slidedeck['options']['titleLengthWithImages'] : $slidedeck['options']['titleLengthWithoutImages'];
             $slide_nodes['title'] = slidedeck2_stip_tags_and_truncate_text($slide['title'], $title_length, "&hellip;");
             if (!empty($slide_nodes['excerpt'])) {
                 $slide['classes'][] = "has-excerpt";
             } else {
                 $slide['classes'][] = "no-excerpt";
             }
             if (!empty($slide_nodes['title'])) {
                 $slide['classes'][] = "has-title";
             } else {
                 $slide['classes'][] = "no-title";
             }
             // Set image node
             if ($has_image) {
                 $slide_nodes['image'] = $full_image;
             }
             // Set link target node
             $slide_nodes['target'] = $slidedeck['options']['linkTarget'];
             $slide['content'] = $SlideDeckPlugin->Lens->process_template($slide_nodes, $slidedeck);
             $slide_counter++;
             $slides[] = $slide;
         }
     }
     return $slides;
 }
Ejemplo n.º 3
0
 /**
  * Render slides for SlideDecks of this type
  * 
  * Loads the slides associated with this SlideDeck if it matches this Deck type and returns
  * a string of HTML markup.
  * 
  * @param array $slides_arr Array of slides
  * @param object $slidedeck SlideDeck object
  * 
  * @global $SlideDeckPlugin
  * 
  * @uses SlideDeckPlugin::process_slide_content()
  * @uses Legacy::get_slides_nodes()
  * 
  * @return string
  */
 function slidedeck_get_slides($slides, $slidedeck)
 {
     global $SlideDeckPlugin;
     // Fail silently if not this Deck type
     if (!$this->is_valid($slidedeck['source'])) {
         return $slides;
     }
     // How many decks are on the page as of now.
     $deck_iteration = 0;
     if (isset($SlideDeckPlugin->SlideDeck->rendered_slidedecks[$slidedeck['id']])) {
         $deck_iteration = $SlideDeckPlugin->SlideDeck->rendered_slidedecks[$slidedeck['id']];
     }
     // Slides associated with this SlideDeck
     $slides_nodes = $this->get_slides_nodes($slidedeck);
     $slide_counter = 1;
     // set the first slide flag
     $SlideDeckPlugin->is_first_slide = true;
     foreach ((array) $slides_nodes as $slide_nodes) {
         $slide = array('source' => $this->name, 'title' => $slide_nodes['video_meta']['title'], 'thumbnail' => (string) $slide_nodes['video_meta']['thumbnail'], 'created_at' => $slide_nodes['created_at'], 'classes' => array('has-image'), 'type' => 'video');
         $slide = array_merge($this->slide_node_model, $slide);
         $slide_nodes['source'] = $slide['source'];
         $slide_nodes['type'] = $slide['type'];
         // In-line styles to apply to the slide DD element
         $slide_styles = array();
         $slide_nodes['slide_counter'] = $slide_counter;
         $slide_nodes['deck_iteration'] = $deck_iteration;
         $slide['title'] = $slide_nodes['title'] = slidedeck2_stip_tags_and_truncate_text($slide_nodes['video_meta']['title'], $slidedeck['options']['titleLengthWithImages']);
         $slide_nodes['permalink'] = $slide_nodes['video_meta']['permalink'];
         $slide_nodes['excerpt'] = slidedeck2_stip_tags_and_truncate_text($slide_nodes['video_meta']['description'], $slidedeck['options']['excerptLengthWithImages']);
         $slide_nodes['image'] = $slide_nodes['video_meta']['full_image'];
         // Build an in-line style tag if needed
         if (!empty($slide_styles)) {
             foreach ($slide_styles as $property => $value) {
                 $slide['styles'] .= "{$property}:{$value};";
             }
         }
         if (!empty($slide['title'])) {
             $slide['classes'][] = "has-title";
         } else {
             $slide['classes'][] = "no-title";
         }
         if (!empty($slide_nodes['video_meta']['description'])) {
             $slide['classes'][] = "has-excerpt";
         } else {
             $slide['classes'][] = "no-excerpt";
         }
         // Set link target node
         $slide_nodes['target'] = $slidedeck['options']['linkTarget'];
         $slide['content'] = $SlideDeckPlugin->Lens->process_template($slide_nodes, $slidedeck);
         $slide_counter++;
         $SlideDeckPlugin->is_first_slide = false;
         $slides[] = $slide;
     }
     return $slides;
 }
Ejemplo n.º 4
0
 /**
  * Render slides for SlideDecks of this type
  * 
  * Loads the slides associated with this SlideDeck if it matches this Deck type and returns
  * a string of HTML markup.
  * 
  * @param array $slides_arr Array of slides
  * @param object $slidedeck SlideDeck object
  * 
  * @global $SlideDeckPlugin
  * 
  * @uses SlideDeckPlugin::process_slide_content()
  * @uses Legacy::get_slides()
  * 
  * @return string
  */
 function slidedeck_get_slides($slides, $slidedeck)
 {
     global $SlideDeckPlugin;
     // How many decks are on the page as of now.
     $deck_iteration = $SlideDeckPlugin->SlideDeck->rendered_slidedecks[$slidedeck['id']];
     // Fail silently if not this Deck type
     if ($slidedeck['type'] != $this->type) {
         return $slides;
     }
     // Adding footer scripts for the preview.
     add_action("slidedeck_print_footer_scripts", array(&$this, 'slidedeck_print_footer_scripts'), 9);
     // Slides associated with this SlideDeck
     $slides_nodes = $this->get_slides($slidedeck);
     $slide_counter = 1;
     foreach ((array) $slides_nodes as $slide_nodes) {
         $slide = array('title' => $slide_nodes['meta']['title'], 'styles' => "", 'classes' => array(), 'content' => "", 'thumbnail' => (string) $slide_nodes['meta']['thumbnail']);
         // In-line styles to apply to the slide DD element
         $slide_styles = array();
         $slide_nodes['slide_counter'] = $slide_counter;
         $slide_nodes['deck_iteration'] = $deck_iteration;
         $slide['title'] = $slide_nodes['title'] = slidedeck2_stip_tags_and_truncate_text($slide_nodes['meta']['title'], $slidedeck['options']['titleLength']);
         $slide_nodes['permalink'] = $slide_nodes['meta']['permalink'];
         $slide_nodes['excerpt'] = slidedeck2_stip_tags_and_truncate_text($slide_nodes['meta']['description'], $slidedeck['options']['descriptionLength']);
         $slide_nodes['image'] = $slide_nodes['meta']['full_image'];
         // Build an in-line style tag if needed
         if (!empty($slide_styles)) {
             foreach ($slide_styles as $property => $value) {
                 $slide['styles'] .= "{$property}:{$value};";
             }
         }
         if (!empty($slide['title'])) {
             $slide['classes'][] = "has-title";
         } else {
             $slide['classes'][] = "no-title";
         }
         if (!empty($slide_nodes['meta']['description'])) {
             $slide['classes'][] = "has-excerpt";
         } else {
             $slide['classes'][] = "no-excerpt";
         }
         // Set link target node
         $slide_nodes['target'] = $slidedeck['options']['linkTarget'];
         $slide['content'] = $SlideDeckPlugin->Lens->process_template($slide_nodes, $slidedeck);
         $slide_counter++;
         $slides[] = $slide;
     }
     return $slides;
 }
Ejemplo n.º 5
0
 /**
  * Get slides for SlideDecks of this type
  * 
  * Loads the slides associated with this SlideDeck if it matches this Deck type and returns
  * an array of structured slide data.
  * 
  * @param array $slides_arr Array of slides
  * @param object $slidedeck SlideDeck object
  * 
  * @global $SlideDeckPlugin
  * 
  * @uses SlideDeckPlugin::process_slide_content()
  * @uses SlideDeck_Posts::get_slides()
  * 
  * @return array
  */
 function slidedeck_get_slides($slides, $slidedeck)
 {
     global $SlideDeckPlugin;
     // Fail silently if not this Deck type
     if (!$this->is_valid($slidedeck['source'])) {
         return $slides;
     }
     // How many decks are on the page as of now.
     $deck_iteration = 0;
     if (isset($SlideDeckPlugin->SlideDeck->rendered_slidedecks[$slidedeck['id']])) {
         $deck_iteration = $SlideDeckPlugin->SlideDeck->rendered_slidedecks[$slidedeck['id']];
     }
     $slides_nodes = $this->get_slides_nodes($slidedeck);
     // Current slide
     $slide_counter = 1;
     // Loop through all slide nodes to build a structured slides array
     foreach ($slides_nodes as &$slide_nodes) {
         $slide = array('source' => $this->name, 'title' => $slide_nodes['title'], 'created_at' => $slide_nodes['created_at']);
         $slide = array_merge($this->slide_node_model, $slide);
         // Look to see if an image is associated with this slide
         $has_image = $this->get_image($slide_nodes, $slidedeck);
         /**
          * If the users would like to override their post content with their 
          * post excerpt. We love our users. Really we do!
          */
         if (isset($slidedeck['options']['use-custom-post-excerpt']) && !empty($slidedeck['options']['use-custom-post-excerpt'])) {
             if ($slidedeck['options']['use-custom-post-excerpt'] && !empty($post->post_excerpt)) {
                 $slide_nodes['content'] = $slide_nodes['excerpt'];
             }
         }
         $slide_nodes['content'] = strip_shortcodes($slide_nodes['content']);
         if ($has_image) {
             $slide['classes'][] = "has-image";
             $slide['type'] = "image";
             $slide['thumbnail'] = $this->_get_post_thumbnail($slide_nodes['id'], $has_image);
         } else {
             $slide['classes'][] = "no-image";
         }
         $slide_nodes['source'] = $slide['source'];
         $slide_nodes['type'] = $slide['type'];
         // Excerpt node
         if (!array_key_exists('excerpt', $slide_nodes) || empty($slide_nodes['excerpt'])) {
             $slide_nodes['excerpt'] = $slide_nodes['content'];
         }
         // Truncate excerpt node length
         $excerpt_length = $has_image ? $slidedeck['options']['excerptLengthWithImages'] : $slidedeck['options']['excerptLengthWithoutImages'];
         $slide_nodes['excerpt'] = slidedeck2_stip_tags_and_truncate_text($slide_nodes['excerpt'], $excerpt_length, "&hellip;");
         // Truncate title node length
         $title_length = $has_image ? $slidedeck['options']['titleLengthWithImages'] : $slidedeck['options']['titleLengthWithoutImages'];
         $slide_nodes['title'] = slidedeck2_stip_tags_and_truncate_text($slide['title'], $title_length, "&hellip;");
         $slide_nodes['title'] = convert_chars(wptexturize($slide_nodes['title']));
         if (!empty($slide_nodes['excerpt'])) {
             $slide['classes'][] = "has-excerpt";
         } else {
             $slide['classes'][] = "no-excerpt";
         }
         if (!empty($slide_nodes['title'])) {
             $slide['classes'][] = "has-title";
         } else {
             $slide['classes'][] = "no-title";
         }
         // Set image node
         if ($has_image) {
             $slide_nodes['image'] = $has_image;
         }
         // Set link target node
         $slide_nodes['target'] = $slidedeck['options']['linkTarget'];
         $slide['content'] = $SlideDeckPlugin->Lens->process_template($slide_nodes, $slidedeck);
         $slide_counter++;
         $slides[] = $slide;
     }
     return $slides;
 }
Ejemplo n.º 6
0
 /**
  * Render slides for SlideDecks of this type
  * 
  * Loads the slides associated with this SlideDeck if it matches this Deck type and returns
  * a string of HTML markup.
  * 
  * @param array $slides_arr Array of slides
  * @param object $slidedeck SlideDeck object
  * 
  * @global $SlideDeckPlugin
  * 
  * @uses SlideDeckPlugin::process_slide_content()
  * @uses Legacy::get_slides()
  * 
  * @return string
  */
 function slidedeck_get_slides($slides, $slidedeck)
 {
     global $SlideDeckPlugin;
     // How many decks are on the page as of now.
     $deck_iteration = $SlideDeckPlugin->SlideDeck->rendered_slidedecks[$slidedeck['id']];
     // Fail silently if not this Deck type
     if ($slidedeck['type'] != $this->type) {
         return $slides;
     }
     // Slides associated with this SlideDeck
     $slides_nodes = $this->get_slides($slidedeck);
     $slide_counter = 1;
     if (is_array($slides_nodes)) {
         foreach ($slides_nodes as &$slide_nodes) {
             $slide = array('title' => $slide_nodes['title'], 'styles' => "", 'classes' => array('has-image'), 'content' => "", 'thumbnail' => (string) $slide_nodes['thumbnail']);
             // In-line styles to apply to the slide DD element
             $slide_styles = array('background-image' => 'url(' . $slide_nodes['image'] . ')');
             // Build an in-line style tag if needed
             if (!empty($slide_styles)) {
                 foreach ($slide_styles as $property => $value) {
                     $slide['styles'] .= "{$property}:{$value};";
                 }
             }
             $slide['title'] = $slide_nodes['title'] = slidedeck2_stip_tags_and_truncate_text($slide_nodes['title'], $slidedeck['options']['titleLengthWithImages'], "&hellip;");
             $slide_nodes['content'] = isset($slide_nodes['description']) ? $slide_nodes['description'] : "";
             $slide_nodes['excerpt'] = slidedeck2_stip_tags_and_truncate_text($slide_nodes['content'], $slidedeck['options']['excerptLengthWithImages'], "&hellip;");
             if (!empty($slide_nodes['title'])) {
                 $slide['classes'][] = "has-title";
             } else {
                 $slide['classes'][] = "no-title";
             }
             if (!empty($slide_nodes['description'])) {
                 $slide['classes'][] = "has-excerpt";
             } else {
                 $slide['classes'][] = "no-excerpt";
             }
             // Set link target node
             $slide_nodes['target'] = $slidedeck['options']['linkTarget'];
             $slide['content'] = $SlideDeckPlugin->Lens->process_template($slide_nodes, $slidedeck);
             $slide_counter++;
             $slides[] = $slide;
         }
     }
     return $slides;
 }
Ejemplo n.º 7
0
 /**
  * Hook into register_activation_hook action
  * 
  * NOTE: DO NOT RELY ON THIS PLUGIN HOOK FOR DATABASE MIGRATIONS
  * -------------------------------------------------------------
  * WordPress will not run the activation hook properly when it is bulk upgrading plugins
  * so database migrations and the like will not run if the user has selected to bulk update
  * all of their SlideDeck plugins at once. 
  * 
  * Put code here that needs to happen when your plugin is first activated
  * (database
  * creation, permalink additions, etc.)
  *
  * @uses wp_remote_fopen()
  */
 static function activate()
 {
     SlideDeckPlugin::load_constants();
     include_once dirname(__FILE__) . '/lib/template-functions.php';
     if (!is_dir(SLIDEDECK2_CUSTOM_LENS_DIR)) {
         if (is_writable(dirname(SLIDEDECK2_CUSTOM_LENS_DIR))) {
             mkdir(SLIDEDECK2_CUSTOM_LENS_DIR, 0777);
         }
     }
     self::check_plugin_updates();
     $installed_version = get_option("slidedeck_version", false);
     $installed_license = get_option("slidedeck_license", false);
     if ($installed_license) {
         if (strtolower($installed_license) == "lite" && strtolower(self::$license) != "lite") {
             // Upgrade from Lite to PRO
             slidedeck2_km("Upgrade to PRO", array('license' => self::$license, 'version' => self::$version));
         }
     }
     // First time installation
     if (!$installed_version) {
         slidedeck2_km("SlideDeck Installed", array('license' => self::$license, 'version' => self::$version));
         // Setup the cohorts data
         self::set_cohort_data();
     }
     if ($installed_version && version_compare(self::$version, $installed_version, '>')) {
         /**
          * 2.0.x to 2.1.x upgrade process...
          */
         if (version_compare($installed_version, '2.1', '<')) {
             if (!class_exists("SlideDeck")) {
                 include dirname(__FILE__) . '/classes/slidedeck.php';
             }
             if (!class_exists("SlideDeckSlideModel")) {
                 include dirname(__FILE__) . '/sources/custom/slide-model.php';
             }
             global $SlideDeckPlugin, $wpdb;
             // Import Media Library and List of Videos decks
             $SlideDeck = new SlideDeck();
             $SlideDeckSlide = new SlideDeckSlideModel();
             $SlideDeckPlugin = (object) array();
             $SlideDeckPlugin->SlideDeck = $SlideDeck;
             $slidedecks = $SlideDeck->get(null, 'post_title', 'ASC', 'publish');
             foreach ($slidedecks as $slidedeck) {
                 $sources = $slidedeck['source'];
                 if (!is_array($sources)) {
                     $sources = array($sources);
                 }
                 // Import Media Library SlideDecks
                 if (in_array("medialibrary", $sources) && !in_array("custom", $sources)) {
                     $media_ids = $slidedeck['options']['medialibrary_ids'];
                     $slide_counter = 0;
                     foreach ($media_ids as $media_id) {
                         $media_post = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->posts} WHERE ID = %d", $media_id));
                         // Get the image meta data
                         $meta_data = wp_get_attachment_metadata($media_id);
                         // Create the slide
                         $slide_id = $SlideDeckSlide->create($slidedeck['id'], "image", array('menu_order' => $slide_counter + 1, 'post_title' => $media_post->post_title, 'post_excerpt' => $media_post->post_excerpt, 'post_content' => $media_post->post_excerpt, 'post_date' => $media_post->post_date));
                         // Associate the image with the slide
                         update_post_meta($slide_id, "_image_attachment", $media_id);
                         update_post_meta($slide_id, "_image_source", "upload");
                         update_post_meta($slide_id, "_image_url", "");
                         $_layout = "body-text";
                         $_caption_position = "left";
                         switch ($slidedeck['lens']) {
                             case "block-title":
                                 $_layout = "body-text";
                                 $_caption_position = "left";
                                 break;
                             case "fashion":
                                 $_layout = "body-text";
                                 $_caption_position = "left";
                                 break;
                             case "half-moon":
                                 $_layout = "body-text";
                                 $_caption_position = "right";
                                 break;
                             case "o-town":
                                 $_layout = "body-text";
                                 $_caption_position = "left";
                                 break;
                             case "proto":
                                 $_layout = "body-text";
                                 $_caption_position = "left";
                                 break;
                         }
                         update_post_meta($slide_id, "_layout", $_layout);
                         update_post_meta($slide_id, "_caption_position", $_caption_position);
                         $slidedeck['options']['total_slides'] = 999;
                         $slide_counter++;
                     }
                     // Update the source
                     add_post_meta($slidedeck['id'], "slidedeck_source", "custom");
                 }
                 // Import Video List SlideDecks
                 if (in_array("listofvideos", $sources) && !in_array("custom", $sources)) {
                     $video_urls = get_post_meta($slidedeck['id'], "slidedeck_list_of_videos", true);
                     $video_urls = explode("\n", $video_urls);
                     $video_urls = array_map("trim", $video_urls);
                     $slide_counter = 0;
                     foreach ($video_urls as $video_url) {
                         $video_meta = $SlideDeck->get_video_meta_from_url($video_url);
                         // Create the slide
                         $slide_id = $SlideDeckSlide->create($slidedeck['id'], "video", array('menu_order' => $slide_counter + 1, 'post_title' => slidedeck2_stip_tags_and_truncate_text($video_meta['title'], $slidedeck['options']['titleLength']), 'post_excerpt' => slidedeck2_stip_tags_and_truncate_text($video_meta['description'], $slidedeck['options']['descriptionLength']), 'post_content' => slidedeck2_stip_tags_and_truncate_text($video_meta['description'], $slidedeck['options']['descriptionLength'])));
                         update_post_meta($slide_id, "_permalink", $video_meta['permalink']);
                         update_post_meta($slide_id, "_video_url", $video_url);
                         update_post_meta($slide_id, "_video_meta", $video_meta);
                         $_layout = "body-text";
                         $_caption_position = "left";
                         switch ($slidedeck['lens']) {
                             case "fashion":
                                 $_layout = "body-text";
                                 $_caption_position = "left";
                                 break;
                             case "o-town":
                                 $_layout = "body-text";
                                 $_caption_position = "left";
                                 break;
                             case "video":
                                 $_layout = "body-text";
                                 $_caption_position = "left";
                                 break;
                         }
                         update_post_meta($slide_id, "_layout", $_layout);
                         update_post_meta($slide_id, "_caption_position", $_caption_position);
                         $slidedeck['options']['total_slides'] = 999;
                         $slidedeck['options']['show-excerpt'] = true;
                         $slidedeck['options']['show-title'] = true;
                         $slidedeck['options']['show-readmore'] = true;
                         $slide_counter++;
                     }
                     // Update the source
                     add_post_meta($slidedeck['id'], "slidedeck_source", "custom");
                     // Proto video lens is being deprecated for custom SlideDecks
                     if ($slidedeck['lens'] == "video") {
                         update_post_meta($slidedeck['id'], "slidedeck_lens", "tool-kit");
                     }
                 }
                 update_post_meta($slidedeck['id'], "slidedeck_options", $slidedeck['options']);
             }
             // End of Import Media Library and List of Videos decks
             // Update various cache settings and durations...
             $SlideDeck = new SlideDeck();
             $slidedecks = $SlideDeck->get(null, 'post_title', 'ASC', 'publish');
             foreach ($slidedecks as $slidedeck) {
                 $sources = $slidedeck['source'];
                 if (!is_array($sources)) {
                     $sources = array($sources);
                 }
                 if (count($slidedeck['source']) > 1) {
                     continue;
                 }
                 // Update cache duration option name
                 if (isset($slidedeck['options']['feedCacheDuration'])) {
                     $slidedeck['options']['cache_duration'] = $slidedeck['options']['feedCacheDuration'];
                     unset($slidedeck['options']['feedCacheDuration']);
                 }
                 // Update Twitter source meta
                 if (in_array('twitter', $sources)) {
                     $slidedeck['options']['twitter_search_or_user'] = $slidedeck['options']['search_or_user'];
                     unset($slidedeck['options']['search_or_user']);
                 }
                 // Adjust cache to minutes instead of seconds
                 $intersect = array_intersect(array('twitter', 'youtube', 'vimeo', 'dailymotion'), $sources);
                 if (!empty($intersect)) {
                     $slidedeck['options']['cache_duration'] = round($slidedeck['options']['cache_duration'] / 60);
                 }
                 update_post_meta($slidedeck['id'], "slidedeck_options", $slidedeck['options']);
             }
             // End of Update various cache settings and durations...
         }
         // Upgrade to new version
         slidedeck2_km("SlideDeck Upgraded", array('license' => self::$license, 'version' => self::$version));
     }
     update_option("slidedeck_version", self::$version);
     update_option("slidedeck_license", self::$license);
     /**
      * Installation timestamp: SlideDeck 2
      */
     $existing_timestamp = get_option('slidedeck2_installed', false);
     if (!$existing_timestamp) {
         update_option('slidedeck2_installed', time());
     }
     /**
      * Installation timestamp: SlideDeck 2 Paid
      */
     $existing_timestamp = get_option('slidedeck2_paid_installed', false);
     if (!$existing_timestamp) {
         update_option('slidedeck2_paid_installed', time());
     }
     // Activation
     slidedeck2_km("SlideDeck Activated", array('license' => self::$license, 'version' => self::$version));
 }
Ejemplo n.º 8
0
 /**
  * Get slides for SlideDecks of this type
  * 
  * Loads the slides associated with this SlideDeck if it matches this Deck type and returns
  * an array of structured slide data.
  * 
  * @param array $slides_arr Array of slides
  * @param object $slidedeck SlideDeck object
  * 
  * @global $SlideDeckPlugin
  * 
  * @uses SlideDeckPlugin::process_slide_content()
  * @uses SlideDeck_Posts::get_slides()
  * 
  * @return array
  */
 function slidedeck_get_slides($slides, $slidedeck)
 {
     global $SlideDeckPlugin;
     // Fail silently if not this Deck type
     if (!$this->is_valid($slidedeck['source'])) {
         return $slides;
     }
     // How many decks are on the page as of now.
     $deck_iteration = 0;
     if (isset($SlideDeckPlugin->SlideDeck->rendered_slidedecks[$slidedeck['id']])) {
         $deck_iteration = $SlideDeckPlugin->SlideDeck->rendered_slidedecks[$slidedeck['id']];
     }
     $slides_nodes = $this->get_slides_nodes($slidedeck);
     // Current slide
     $slide_counter = 1;
     // Loop through all slide nodes to build a structured slides array
     foreach ($slides_nodes as &$slide_nodes) {
         $slide = array('source' => $this->name, 'title' => $slide_nodes['title'], 'created_at' => $slide_nodes['created_at']);
         $slide = array_merge($this->slide_node_model, $slide);
         // Look to see if an image is associated with this slide
         $has_image = $this->get_image($slide_nodes);
         // Look to see if a video is associated with this slide
         $has_video = isset($slide_nodes['video']) ? $slide_nodes['video'] : false;
         if ($has_image) {
             $slide['classes'][] = "has-image";
             $slide['thumbnail'] = $has_image;
             $slide['type'] = "image";
         } else {
             $slide['classes'][] = "no-image";
         }
         if ($has_video) {
             $slide_nodes['video_meta'] = $this->get_video_meta_from_url($has_video);
             $slide['classes'][] = "has-video";
             $slide['type'] = "video";
             $slide_nodes['slide_counter'] = $slide_counter;
             $slide_nodes['deck_iteration'] = $deck_iteration;
         }
         $slide_nodes['source'] = $slide['source'];
         $slide_nodes['type'] = $slide['type'];
         // Excerpt node
         if (!array_key_exists('excerpt', $slide_nodes) || empty($slide_nodes['excerpt'])) {
             $slide_nodes['excerpt'] = $slide_nodes['content'];
         }
         // Truncate excerpt node length
         $excerpt_length = $has_image ? $slidedeck['options']['excerptLengthWithImages'] : $slidedeck['options']['excerptLengthWithoutImages'];
         $slide_nodes['excerpt'] = slidedeck2_stip_tags_and_truncate_text($slide_nodes['excerpt'], $excerpt_length, "&hellip;");
         // Truncate title node length
         $title_length = $has_image ? $slidedeck['options']['titleLengthWithImages'] : $slidedeck['options']['titleLengthWithoutImages'];
         $slide_nodes['title'] = slidedeck2_stip_tags_and_truncate_text($slide['title'], $title_length, "&hellip;");
         if (!empty($slide_nodes['excerpt'])) {
             $slide['classes'][] = "has-excerpt";
         } else {
             $slide['classes'][] = "no-excerpt";
         }
         if (!empty($slide_nodes['title'])) {
             $slide['classes'][] = "has-title";
         } else {
             $slide['classes'][] = "no-title";
         }
         // Set image node
         if ($has_image) {
             $slide_nodes['image'] = $has_image;
         }
         // Set link target node
         $slide_nodes['target'] = $slidedeck['options']['linkTarget'];
         $slide['content'] = $SlideDeckPlugin->Lens->process_template($slide_nodes, $slidedeck);
         $slide_counter++;
         $slides[] = $slide;
     }
     return $slides;
 }
Ejemplo n.º 9
0
 /**
  * Get slides for SlideDecks of this type
  * 
  * Loads the slides associated with this SlideDeck if it matches this Deck type and returns
  * an array of structured slide data.
  * 
  * @param array $slides_arr Array of slides
  * @param object $slidedeck SlideDeck object
  * 
  * @global $SlideDeckPlugin
  * 
  * @uses SlideDeckPlugin::process_slide_content()
  * @uses SlideDeck_Posts::get_slides()
  * 
  * @return array
  */
 function slidedeck_get_slides($slides, $slidedeck)
 {
     global $SlideDeckPlugin;
     // Fail silently if not this Deck type
     if ($slidedeck['type'] != $this->type) {
         return $slides;
     }
     // Slides associated with this SlideDeck
     switch ($slidedeck['source']) {
         case "posts":
             $slides_nodes = $this->get_posts_slides($slidedeck);
             break;
         case "rss":
             $slides_nodes = $this->get_rss_slides($slidedeck);
             break;
         case "gplus":
             $slides_nodes = $this->get_gplus_slides($slidedeck);
             break;
     }
     // Loop through all slide nodes to build a structured slides array
     foreach ($slides_nodes as &$slide_nodes) {
         $slide = array('title' => $slide_nodes['title'], 'styles' => "", 'classes' => array(), 'content' => "");
         // Look to see if an image is associated with this slide
         $has_image = $this->get_image($slide_nodes, $slidedeck);
         if ($has_image) {
             $slide['styles'] = 'background-image: url(' . $has_image . ');';
             $slide['classes'][] = "has-image";
             $slide['thumbnail'] = $has_image;
             if ($slidedeck['source'] == "posts") {
                 $slide['thumbnail'] = $this->_get_post_thumbnail($slide_nodes['id'], $has_image);
             }
         } else {
             $slide['classes'][] = "no-image";
         }
         // Excerpt node
         if (!array_key_exists('excerpt', $slide_nodes) || empty($slide_nodes['excerpt'])) {
             $slide_nodes['excerpt'] = $slide_nodes['content'];
         }
         // Truncate excerpt node length
         $excerpt_length = $has_image ? $slidedeck['options']['excerptLengthWithImages'] : $slidedeck['options']['excerptLengthWithoutImages'];
         $slide_nodes['excerpt'] = slidedeck2_stip_tags_and_truncate_text($slide_nodes['excerpt'], $excerpt_length, "&hellip;");
         // Truncate title node length
         $title_length = $has_image ? $slidedeck['options']['titleLengthWithImages'] : $slidedeck['options']['titleLengthWithoutImages'];
         $slide_nodes['title'] = slidedeck2_stip_tags_and_truncate_text($slide['title'], $title_length, "&hellip;");
         if (!empty($slide_nodes['excerpt'])) {
             $slide['classes'][] = "has-excerpt";
         } else {
             $slide['classes'][] = "no-excerpt";
         }
         if (!empty($slide_nodes['title'])) {
             $slide['classes'][] = "has-title";
         } else {
             $slide['classes'][] = "no-title";
         }
         // Set image node
         if ($has_image) {
             $slide_nodes['image'] = $has_image;
         }
         // Set link target node
         $slide_nodes['target'] = $slidedeck['options']['linkTarget'];
         $slide['content'] = $SlideDeckPlugin->Lens->process_template($slide_nodes, $slidedeck);
         $slides[] = $slide;
     }
     return $slides;
 }