function __construct() { parent::__construct(); include dirname(__FILE__) . '/slide-model.php'; $slide_type_files = (array) glob(dirname(__FILE__) . '/slides/*/slide.php'); foreach ((array) $slide_type_files as $filename) { if (is_readable($filename)) { include_once $filename; $slug = basename(dirname($filename)); $classname = slidedeck2_get_classname_from_filename(dirname($filename)); $prefix_classname = "SlideDeckSlideType_{$classname}"; if (class_exists($prefix_classname)) { $this->slide_types[$slug] = new $prefix_classname(); } } } $this->Slide = new SlideDeckSlideModel(); }
/** * Change Lens for the current SlideDeck * * @uses wp_verify_nonce() * @uses SlideDeckPlugin::_save_autodraft() * @uses apply_filters() */ function ajax_change_lens() { // Fail silently if the request could not be verified if (!wp_verify_nonce($_REQUEST['_wpnonce_lens_update'], 'slidedeck-lens-update')) { die("false"); } $namespace = $this->namespace; $slidedeck_id = intval($_REQUEST['id']); $response = $this->_save_autodraft($slidedeck_id, $_REQUEST); $slidedeck = $response['preview']; $lenses = $this->get_slidedeck_lenses($slidedeck); $lens = $this->Lens->get($slidedeck['lens']); $lens_classname = slidedeck2_get_classname_from_filename($slidedeck['lens']); $response['lens'] = $lens; $options_model = $this->get_options_model($slidedeck); // If this Lens has an options model, loop through it and set the new // defaults if (isset($this->lenses[$lens_classname]->options_model)) { $lens_options_model = $this->lenses[$lens_classname]->options_model; // Loop through Lens' option groups foreach ($lens_options_model as $lens_options_group => $lens_group_options) { // Loop through Lens' option group options foreach ($lens_group_options as $name => $properties) { // If the filtered options model has a value set, use it as // an override to the saved value if (isset($options_model[$lens_options_group][$name]['value'])) { $slidedeck['options'][$name] = $options_model[$lens_options_group][$name]['value']; } } } } $response['sizes'] = apply_filters("{$this->namespace}_sizes", $this->sizes, $slidedeck); uksort($options_model['Appearance']['titleFont']['values'], 'strnatcasecmp'); uksort($options_model['Appearance']['bodyFont']['values'], 'strnatcasecmp'); // Trim out the Setup key $trimmed_options_model = $options_model; unset($trimmed_options_model['Setup']); $options_groups = $this->options_model_groups; $sizes = apply_filters("{$this->namespace}_sizes", $this->sizes, $slidedeck); ob_start(); include SLIDEDECK2_DIRNAME . '/views/elements/_options.php'; $response['options_html'] = ob_get_contents(); ob_end_clean(); die(json_encode($response)); }
/** * Copy a lens * * Copies the lens' directory recursively to the /wp-content/plugins/slidedeck-lenses folder. * Returns the lens object returned by SlideDeckLens::get(). This method will automatically * increment any directory name suggested or found and will modify any non-unique lens name. * * @param string $slug The slug of the lens to duplicate * @param string $new_lens_name An optional suggested new lens name * @param string $new_lens_slug An optional suggested new lens slug * @param boolean $replace_js Optionaly attempt to replace class references in the JavaScript (may break JavaScript) * * @global $SlideDeckPlugin * * @uses SlideDeckLens::get() * @uses SlideDeckLens::copy_inc() * @uses SlideDeckLens::_rcopy() * @uses SlideDeckLens::save() * @uses SlideDeckPlugin::get_classname() * * @return array */ function copy($slug, $new_lens_name = "", $new_lens_slug = "", $replace_js = false) { global $SlideDeckPlugin; // Lookup the requested lens to copy to make sure it exists $original_lens = $this->get($slug); // Set the default return value $lens = false; // Begin copy process if the original lens to be copied exists if ($original_lens) { // The original lens' directory name $original_dir = dirname($original_lens['files']['css']); if (empty($new_lens_slug)) { $new_lens_slug = $original_lens['slug']; } // Clean invalid characters to only match [a-zA-Z0-9\-_] $new_lens_slug = preg_replace("/[^a-zA-Z0-9\\-_]/", "", html_entity_decode($new_lens_slug)); // Find a number to increment the lens' slug to $inc = $this->copy_inc($new_lens_slug); // Create a new slug based off the lens' slug and its increment $new_slug = $new_lens_slug . ($inc > 0 ? "-{$inc}" : ""); if (is_writable(SLIDEDECK2_CUSTOM_LENS_DIR)) { $destination_dir = SLIDEDECK2_CUSTOM_LENS_DIR . "/" . $new_slug; $this->_rcopy($original_dir, $destination_dir); } else { return false; } // Get the recently copied lens with its meta $lens = $this->get($new_slug); if (empty($new_lens_name)) { $new_lens_name = "{$lens['meta']['name']} (Copy {$inc})"; } $lens['meta']['name'] = $new_lens_name; $this->save($lens['files']['meta'], "", $new_slug, $lens['meta']); $lens_files = glob($destination_dir . "/lens.*"); foreach ((array) $lens_files as $lens_file) { // Get the type of file this is for JavaScript and CSS processing $file_ext = substr($lens_file, strrpos($lens_file, ".") + 1); switch ($file_ext) { case "css": $lens_file_content = file_get_contents($lens_file); $lens_file_content = str_replace(".lens-" . $original_lens['slug'], ".lens-{$new_slug}", $lens_file_content); $modify = true; break; case "php": $old_classname = slidedeck2_get_classname_from_filename($original_lens['slug']); $new_classname = slidedeck2_get_classname_from_filename($new_slug); $lens_file_content = file_get_contents($lens_file); $lens_file_content = str_replace("class SlideDeckLens_{$old_classname}", "class SlideDeckLens_{$new_classname}", $lens_file_content); $modify = true; break; case "json": case "js": $modify = false; if ($replace_js === true) { $lens_file_content = file_get_contents($lens_file); $lens_file_content = str_replace($original_lens['slug'], $new_slug, $lens_file_content); $modify = true; } break; } if ($modify && is_writeable($lens_file)) { //is_writable() not always reliable, check return value. see comments @ http://uk.php.net/is_writable $f = fopen($lens_file, 'w+'); if ($f !== false) { fwrite($f, $lens_file_content, strlen($lens_file_content)); fclose($f); } } } } return $lens; }
function __construct() { global $SlideDeckPlugin; // Fail silently if SlideDeck core is not installed if (!class_exists('SlideDeckPlugin')) { return false; } SlideDeckPlugin::$addons_installed[$this->package_slug] = $this->package_slug; $this->slidedeck_namespace = SlideDeckPlugin::$st_namespace; /** * Make this plugin available for translation. * Translations can be added to the /languages/ directory. */ load_plugin_textdomain($this->slidedeck_namespace, false, dirname(plugin_basename(__FILE__)) . '/languages/'); add_action('admin_print_scripts-toplevel_page_' . SLIDEDECK2_HOOK, array(&$this, 'admin_print_scripts')); add_action('admin_print_styles-toplevel_page_' . SLIDEDECK2_HOOK, array(&$this, 'admin_print_styles')); add_action('init', array(&$this, 'wp_register_scripts'), 2); add_action('init', array(&$this, 'wp_register_styles'), 2); add_filter('slidedeck_create_custom_slidedeck_block', array(&$this, 'slidedeck_create_custom_slidedeck_block'), 20); add_filter('slidedeck_get_lenses', array(&$this, 'slidedeck_get_lenses'), 9, 2); add_filter('slidedeck_get_slide_types', array(&$this, 'slidedeck_get_slide_types')); add_action('slidedeck_after_options_group_wrapper', array(&$this, 'slidedeck_custom_css_field')); add_action('slidedeck_after_save', array(&$this, 'slidedeck_save_custom_css_field'), 10, 4); add_filter('slidedeck_footer_styles', array(&$this, 'slidedeck_add_custom_css'), 22, 2); // Remove After Sources Filter for Source Upsell remove_filter("{$this->slidedeck_namespace}_source_modal_after_sources", array($SlideDeckPlugin, 'slidedeck_source_modal_after_sources')); // Only load additional Slide Types if the Custom SlideDeck SlideDeckSlide class exists if (class_exists("SlideDeckSlideModel")) { $slide_type_files = (array) glob(SLIDEDECK2_PROFESSIONAL_DIRNAME . '/slides/*/slide.php'); foreach ((array) $slide_type_files as $filename) { if (is_readable($filename)) { include_once $filename; $slug = basename(dirname($filename)); $classname = slidedeck2_get_classname_from_filename(dirname($filename)); $prefix_classname = "SlideDeckSlideType_{$classname}"; if (class_exists($prefix_classname)) { $this->slide_types[$slug] = new $prefix_classname(); } } } } // Stock Lenses that come with SlideDeck Professional distribution $lens_files = glob(SLIDEDECK2_PROFESSIONAL_DIRNAME . '/lenses/*/lens.php'); // 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; $SlideDeckPlugin->installed_lenses[] = $slug; } if (class_exists($prefix_classname)) { $SlideDeckPlugin->lenses[$classname] = new $prefix_classname(); } } } $source_files = (array) glob(SLIDEDECK2_PROFESSIONAL_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)) { $SlideDeckPlugin->sources[$slug] = new $prefix_classname(); } elseif (class_exists("{$prefix_classname}Content") && $slug == "custom") { $custom_content_classname = "{$prefix_classname}Content"; $SlideDeckPlugin->sources[$slug] = new $custom_content_classname(); } } } }