Example #1
0
 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();
             }
         }
     }
 }