/**
  * Instantiation construction
  *
  * @uses add_action()
  * @uses SlideDeckLitePlugin::wp_register_scripts()
  * @uses SlideDeckLitePlugin::wp_register_styles()
  */
 function __construct()
 {
     define('SLIDEDECK2_URL', plugin_dir_url(__FILE__));
     define('SLIDEDECK2_PATH', plugin_dir_path(__FILE__));
     SlideDeckLitePlugin::load_constants();
     $this->friendly_name = SlideDeckLitePlugin::$st_friendly_name;
     $this->namespace = SlideDeckLitePlugin::$st_namespace;
     /**
      * Make this plugin available for translation.
      * Translations can be added to the /languages/ directory.
      */
     load_plugin_textdomain($this->namespace, false, dirname(plugin_basename(__FILE__)) . '/languages/');
     // Load all library files used by this plugin
     $lib_files = glob(SLIDEDECK2_DIRNAME . '/lib/*.php');
     foreach ($lib_files as $filename) {
         include_once $filename;
     }
     // Loop through $cache_groups to add to Non Persistent Cache
     if (function_exists('wp_cache_add_non_persistent_groups')) {
         foreach (SlideDeckLitePlugin::$cache_groups as $cache_group) {
             wp_cache_add_non_persistent_groups(slidedeck2_cache_group($cache_group));
         }
     }
     // WordPress Pointers helper
     $this->Pointers = new SlideDeckPointers();
     // The Lens primary class
     include_once SLIDEDECK2_DIRNAME . '/classes/slidedeck-lens.php';
     $this->Lens = new SlideDeckLens();
     // The Addons primary class
     include_once SLIDEDECK2_DIRNAME . '/classes/slidedeck-addons.php';
     $this->Addons = new SlideDeckAddons();
     // The Cover primary class
     if (file_exists(SLIDEDECK2_DIRNAME . '/classes/slidedeck-covers.php')) {
         include_once SLIDEDECK2_DIRNAME . '/classes/slidedeck-covers.php';
         $this->Cover = new SlideDeckCovers();
     }
     // The Lens scaffold
     include_once SLIDEDECK2_DIRNAME . '/classes/slidedeck-lens-scaffold.php';
     // The Deck primary class for Deck types to child from
     include_once SLIDEDECK2_DIRNAME . '/classes/slidedeck.php';
     // Stock Lenses that come with SlideDeck distribution
     $lens_files = glob(SLIDEDECK2_DIRNAME . '/lenses/*/lens.php');
     if (is_dir(SLIDEDECK2_CUSTOM_LENS_DIR)) {
         if (is_readable(SLIDEDECK2_CUSTOM_LENS_DIR)) {
             // Get additional uploaded custom Lenses
             $custom_lens_files = (array) glob(SLIDEDECK2_CUSTOM_LENS_DIR . '/*/lens.php');
             // Merge Lenses available and loop through to load
             $lens_files = array_merge($lens_files, $custom_lens_files);
         }
     }
     // Load all the custom Lens types
     foreach ((array) $lens_files as $filename) {
         if (is_readable($filename)) {
             $classname = slidedeck2_get_classname_from_filename(dirname($filename));
             $prefix_classname = "SlideDeckLens_{$classname}";
             $slug = basename(dirname($filename));
             if (!class_exists($prefix_classname)) {
                 include_once $filename;
                 $this->installed_lenses[] = $slug;
             }
             if (class_exists($prefix_classname)) {
                 $this->lenses[$classname] = new $prefix_classname();
             }
         }
     }
     $source_files = (array) glob(SLIDEDECK2_DIRNAME . '/sources/*/source.php');
     foreach ((array) $source_files as $filename) {
         if (is_readable($filename)) {
             include_once $filename;
             $slug = basename(dirname($filename));
             $classname = slidedeck2_get_classname_from_filename(dirname($filename));
             $prefix_classname = "SlideDeckSource_{$classname}";
             if (class_exists($prefix_classname)) {
                 $this->sources[$slug] = new $prefix_classname();
             }
         }
     }
     // check if scheduler folder exists
     if (is_dir(SLIDEDECK3_ADDONS_DIR)) {
         $addons_directory = $this->recursive_file_exists('slidedeck_scheduler.php', SLIDEDECK3_ADDONS_DIR);
         if ($addons_directory !== '' && file_exists($addons_directory) && get_option("slidedeck_addon_activate", false)) {
             // check if scheduler addon is installed and create an instance
             include_once $addons_directory;
             SlideDeckPluginScheduler::instance();
         }
         // Get all installed addon information.
         $addons = $this->Addons->get();
         if (isset($addons['slidedeck_scheduler'])) {
             unset($addons['slidedeck_scheduler']);
         }
         // Load all activated addon.
         foreach ($addons as $slug => $addon) {
             $addon_option = "slidedeck_" . str_replace("-", "_", $slug) . "_addon_activate";
             if (get_option($addon_option, false) && isset($addon['meta']['class']) && !empty($addon['meta']['class']) && isset($addon['meta']['init_file']) && !empty($addon['meta']['init_file'])) {
                 $addon_directory = $this->recursive_file_exists($addon['meta']['init_file'], SLIDEDECK3_ADDONS_DIR);
                 include_once $addon_directory;
                 $addon['meta']['class']::instance();
             }
         }
     }
     $this->SlideDeck = new SlideDeck();
     $this->add_hooks();
 }
示例#2
0
 /**
  * Get the options for the SlideDeck
  * 
  * Gets the options using the default options to fill in the blanks and allows per-deck type
  * overrides via a filter. Returns a keyed array of options for the SlideDeck.
  * 
  * @param integer $id The SlideDeck's ID
  * @deprecated @param string $deprecated DEPRECATED SlideDeck type slug (formerly $type), removed in 2.1
  * @param string $source The SlideDeck's source
  * @param string $lens The SlideDeck's lens
  * 
  * @uses get_post_meta()
  * @uses apply_filters()
  * 
  * @return array
  */
 function get_options($id, $deprecated, $lens, $source)
 {
     $cache_key = $this->namespace . "--" . md5(serialize(func_get_args()));
     $options = wp_cache_get($cache_key, slidedeck2_cache_group('options'));
     if ($options == false) {
         $stored_options = (array) get_post_meta($id, "{$this->namespace}_options", true);
         $default_options = apply_filters("{$this->namespace}_default_options", $this->default_options(), $deprecated, $lens, $source);
         $options = array_merge((array) $default_options, $stored_options);
         wp_cache_set($cache_key, $options, slidedeck2_cache_group('options'));
     }
     return $options;
 }
 /**
  * Process lens meta data from a lens file. Used by slidedeck_get_lens and slidedeck_get_lenses
  * 
  * @param object $lens_file
  * 
  * @uses site_url()
  * 
  * @return arr Lens meta data
  */
 function get_meta($filename)
 {
     global $SlideDeckPlugin;
     $cache_key = $this->namespace . "--" . md5(__METHOD__ . $filename);
     $lens = wp_cache_get($cache_key, slidedeck2_cache_group('lenses-get-meta'));
     if ($lens == false) {
         $lens_data = file_get_contents($filename);
         $lens_folder = dirname($filename);
         $lens_slug = basename($lens_folder);
         // Pre-populate the lens meta with default values and types
         $lens_meta = $this->lens_meta;
         // Lens JSON descriptor
         $lens_file_meta = json_decode($lens_data, true);
         // Merge with the default options
         $lens_meta = array_merge($lens_meta, $lens_file_meta);
         // Get the lens' base folder URL
         $lens_url = untrailingslashit(WP_PLUGIN_URL) . str_replace(str_replace("\\", "/", WP_PLUGIN_DIR), "", str_replace("\\", "/", $lens_folder));
         // Adjust URL for SSL if we are running the current page through SSL
         if (is_ssl()) {
             $lens_url = str_replace("http://", "https://", $lens_url);
         }
         $lens = array('url' => $lens_url . "/lens.css", 'thumbnail' => $lens_url . "/thumbnail.jpg", 'thumbnail-large' => $lens_url . "/thumbnail-large.jpg", 'slug' => $lens_slug, 'templates' => array('default' => $lens_folder . '/template.thtml'), 'meta' => $lens_meta, 'files' => array('meta' => $lens_folder . '/lens.json', 'css' => $lens_folder . '/lens.css'));
         // css for mobile
         if (file_exists($lens_folder . "/lens.mobile.css")) {
             $lens['lens_mobile'] = $lens_url . "/lens.mobile.css";
         }
         // css for tablet
         if (file_exists($lens_folder . "/lens.tablet.css")) {
             $lens['lens_tablet'] = $lens_url . "/lens.tablet.css";
         }
         // IE stylesheet for all versions of IE
         if (file_exists($lens_folder . "/lens.ie.css")) {
             $lens['ie_url'] = $lens_url . "/lens.ie.css";
             $lens['files']['css_ie'] = $lens_folder . '/lens.ie.css';
         }
         // Stylesheet for IE7 and below
         if (file_exists($lens_folder . "/lens.ie7.css")) {
             $lens['ie7_url'] = $lens_url . "/lens.ie7.css";
             $lens['files']['css_ie7'] = $lens_folder . '/lens.ie7.css';
         }
         // Stylesheet for IE8 and below
         if (file_exists($lens_folder . "/lens.ie8.css")) {
             $lens['ie8_url'] = $lens_url . "/lens.ie8.css";
             $lens['files']['css_ie8'] = $lens_folder . '/lens.ie8.css';
         }
         // Lens JavaScript
         if (file_exists($lens_folder . "/lens.js")) {
             $lens['script_url'] = $lens_url . "/lens.js";
             $lens['files']['js'] = $lens_folder . '/lens.js';
         }
         // Lens Admin JavaScript
         if (file_exists($lens_folder . "/lens.admin.js")) {
             $lens['admin_script_url'] = $lens_url . "/lens.admin.js";
             $lens['files']['admin_js'] = $lens_folder . '/lens.admin.js';
         }
         foreach (array_keys($SlideDeckPlugin->SlideDeck->slide_types) as $slide_type) {
             $template_file = $lens_folder . '/template.' . $slide_type . '.thtml';
             if (file_exists($template_file)) {
                 $lens['templates'][$slide_type] = $template_file;
             }
         }
         // TODO: Loop Through sources
         foreach ($lens['meta']['sources'] as $source) {
             $template_file = $lens_folder . '/template.source.' . $source . '.thtml';
             if (file_exists($template_file)) {
                 $lens['templates'][$source] = $template_file;
             }
         }
         wp_cache_set($cache_key, $lens, slidedeck2_cache_group('lenses-get-meta'));
     }
     return $lens;
 }
示例#4
0
 /**
  * Instantiation construction
  *
  * @uses add_action()
  * @uses SlideDeckLitePlugin::wp_register_scripts()
  * @uses SlideDeckLitePlugin::wp_register_styles()
  */
 function __construct()
 {
     define('SLIDEDECK2_URL', plugin_dir_url(__FILE__));
     define('SLIDEDECK2_PATH', plugin_dir_path(__FILE__));
     SlideDeckLitePlugin::load_constants();
     $this->friendly_name = SlideDeckLitePlugin::$st_friendly_name;
     $this->namespace = SlideDeckLitePlugin::$st_namespace;
     /**
      * Make this plugin available for translation.
      * Translations can be added to the /languages/ directory.
      */
     load_plugin_textdomain($this->namespace, false, dirname(plugin_basename(__FILE__)) . '/languages/');
     // Load all library files used by this plugin
     $lib_files = glob(SLIDEDECK2_DIRNAME . '/lib/*.php');
     foreach ($lib_files as $filename) {
         include_once $filename;
     }
     // Loop through $cache_groups to add to Non Persistent Cache
     if (function_exists('wp_cache_add_non_persistent_groups')) {
         foreach (SlideDeckLitePlugin::$cache_groups as $cache_group) {
             wp_cache_add_non_persistent_groups(slidedeck2_cache_group($cache_group));
         }
     }
     // WordPress Pointers helper
     $this->Pointers = new SlideDeckPointers();
     // The Lens primary class
     include_once SLIDEDECK2_DIRNAME . '/classes/slidedeck-lens.php';
     $this->Lens = new SlideDeckLens();
     // The Cover primary class
     if (file_exists(SLIDEDECK2_DIRNAME . '/classes/slidedeck-covers.php')) {
         include_once SLIDEDECK2_DIRNAME . '/classes/slidedeck-covers.php';
         $this->Cover = new SlideDeckCovers();
     }
     // The Lens scaffold
     include_once SLIDEDECK2_DIRNAME . '/classes/slidedeck-lens-scaffold.php';
     // The Deck primary class for Deck types to child from
     include_once SLIDEDECK2_DIRNAME . '/classes/slidedeck.php';
     // Stock Lenses that come with SlideDeck distribution
     $lens_files = glob(SLIDEDECK2_DIRNAME . '/lenses/*/lens.php');
     if (is_dir(SLIDEDECK2_CUSTOM_LENS_DIR)) {
         if (is_readable(SLIDEDECK2_CUSTOM_LENS_DIR)) {
             // Get additional uploaded custom Lenses
             $custom_lens_files = (array) glob(SLIDEDECK2_CUSTOM_LENS_DIR . '/*/lens.php');
             // Merge Lenses available and loop through to load
             $lens_files = array_merge($lens_files, $custom_lens_files);
         }
     }
     // Load all the custom Lens types
     foreach ((array) $lens_files as $filename) {
         if (is_readable($filename)) {
             $classname = slidedeck2_get_classname_from_filename(dirname($filename));
             $prefix_classname = "SlideDeckLens_{$classname}";
             $slug = basename(dirname($filename));
             if (!class_exists($prefix_classname)) {
                 include_once $filename;
                 $this->installed_lenses[] = $slug;
             }
             if (class_exists($prefix_classname)) {
                 $this->lenses[$classname] = new $prefix_classname();
             }
         }
     }
     $source_files = (array) glob(SLIDEDECK2_DIRNAME . '/sources/*/source.php');
     foreach ((array) $source_files as $filename) {
         if (is_readable($filename)) {
             include_once $filename;
             $slug = basename(dirname($filename));
             $classname = slidedeck2_get_classname_from_filename(dirname($filename));
             $prefix_classname = "SlideDeckSource_{$classname}";
             if (class_exists($prefix_classname)) {
                 $this->sources[$slug] = new $prefix_classname();
             }
         }
     }
     $this->SlideDeck = new SlideDeck();
     $this->add_hooks();
 }
 /**
  * Get Cover Settings
  * 
  * Gets the Cover data for a SlideDeck
  * 
  * @param integer $slidedeck_id Parent SlideDeck ID
  * 
  * @global $SlideDeckPlugin
  * 
  * @uses get_post_meta()
  * @uses SlideDeck::get_parent_id()
  * @uses wp_cache_get()
  * @uses wp_cache_set()
  * 
  * @return array
  */
 function get($slidedeck_id)
 {
     global $SlideDeckPlugin;
     $parent_slidedeck_id = $SlideDeckPlugin->SlideDeck->get_parent_id($slidedeck_id);
     $cache_key = $this->namespace . "--" . md5(__METHOD__ . $parent_slidedeck_id);
     $cover = wp_cache_get($cache_key, slidedeck2_cache_group('cover-get'));
     if ($cover == false) {
         $cover_defaults = $this->get_defaults($slidedeck_id);
         foreach ($this->options_model as $name => $properties) {
             $cover[$name] = get_post_meta($parent_slidedeck_id, "{$this->namespace}_cover_{$name}", true);
             if ($cover[$name] === "") {
                 $cover_value = $properties['value'];
                 switch ($name) {
                     case "front_title":
                         $cover_value = get_the_title($parent_slidedeck_id);
                         break;
                     case "accent_color":
                     case "title_font":
                         $cover_value = $cover_defaults[$name];
                         break;
                 }
                 $cover[$name] = $cover_value;
             }
             switch ($properties['data']) {
                 case "string":
                     $cover[$name] = (string) $cover[$name];
                     break;
                 case "integer":
                     $cover[$name] = (int) $cover[$name];
                     break;
                 case "boolean":
                     $cover[$name] = $cover[$name] == 1 ? true : false;
                     break;
             }
         }
         wp_cache_set($cache_key, $cover, slidedeck2_cache_group('cover-get'));
     }
     return $cover;
 }
示例#6
0
 /**
  * Get all meta associated with a slide
  * 
  * Retrieves all post meta associated with a slide and returns it as a
  * key => value array.
  * 
  * @param int $slide_id Slide ID
  * @param bool $cached Load using cached results if available
  * 
  * @global $wpdb
  * 
  * @uses wpdb::get_results()
  * @uses wpdb::prepare()
  * 
  * @return array
  */
 function get_meta($slide_id, $cached = true)
 {
     global $wpdb;
     $sql = "SELECT * FROM {$wpdb->postmeta} WHERE post_id = %d";
     $sql = $wpdb->prepare($sql, $slide_id);
     $cache_key = md5($sql);
     $results = wp_cache_get($cache_key, slidedeck2_cache_group('get-meta-results'));
     // If a non-cached response was requested, reset the cached result to force a look-up
     if (!$cached) {
         $results = false;
     }
     if (!$results) {
         $results = $wpdb->get_results($sql);
         wp_cache_set($cache_key, $results, slidedeck2_cache_group('get-meta-results'));
     }
     $meta = array();
     foreach ($results as $result) {
         $meta[$result->meta_key] = maybe_unserialize($result->meta_value);
     }
     if (!isset($meta['_image_scaling'])) {
         $meta['_image_scaling'] = "cover";
     }
     if (!isset($meta['_preferred_image_size'])) {
         $meta['_preferred_image_size'] = "auto";
     }
     return $meta;
 }