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