load_dependancies(); // Setup localization $this->set_locale(); // Register post type $this->register_post_type(); // Define hooks $this->define_hooks(); /** * The customizer has been prepared for export as an "extension" in the near future. * To keep our current users happy and prepare them for the changes, we've bootstrapped the customizer * into the core plugin, alongside a notice informing them of these changes. * * Once the changeover is complete, this code will be removed. */ $this->bootstrap_customizer(); } /** * Activation * * @return void */ public static function do_activation() { global $wp_version; // Deactivate the plugin if the WordPress version is below the minimum required. if ( version_compare( $wp_version, '4.0', '<' ) ) { deactivate_plugins( plugin_basename( __FILE__ ) ); wp_die( __( sprintf( 'Sorry, but your version of WordPress, %s, is not supported. The plugin has been deactivated. Return to the Dashboard.', $wp_version, admin_url() ), 'easingslider' ) ); return false; } // Add options add_option( 'easingslider_version', self::$version ); add_option( 'easingslider_settings', (object) array( 'image_resizing' => false, 'load_assets' => 'header', 'remove_data' => false ) ); // Let's flush rewrite rules as we're using a custom post type flush_rewrite_rules(); // Trigger hooks do_action( 'easingslider_activate' ); } /** * Uninstall * * @return void */ public static function do_uninstall() { // Get the settings $settings = get_option( 'easingslider_settings' ); // If enabled, remove the plugin data if ( $settings->remove_data ) { // Delete all of the sliders foreach ( ES_Slider::all() as $slider ) { ES_Slider::delete( $slider->ID ); } // Delete options delete_option( 'easingslider_version' ); delete_option( 'easingslider_settings' ); // Remove data hook do_action( 'easingslider_remove_data' ); } // Trigger hooks do_action( 'easingslider_uninstall' ); } /** * Load dependancies * * @return void */ protected function load_dependancies() { // The file responsible for loading our helpers require_once plugin_dir_path( __FILE__ ) . 'includes/helpers.php'; // The class responsible for defining our admin editor require_once plugin_dir_path( __FILE__ ) . 'includes/class-es-editor-pages.php'; // The class responsible for discovering extensions require_once plugin_dir_path( __FILE__ ) . 'includes/class-es-extensions-page.php'; // The class responsible for resizing attachment images require_once plugin_dir_path( __FILE__ ) . 'includes/class-es-image-resizer.php'; // The class responsible for importing legacy settings require_once plugin_dir_path( __FILE__ ) . 'includes/class-es-legacy.php'; // The class responsible for adding our plugin toplevel menu require_once plugin_dir_path( __FILE__ ) . 'includes/class-es-menu.php'; // The class responsible for managing our migrations require_once plugin_dir_path( __FILE__ ) . 'includes/class-es-migrations.php'; // The class responsible for defining our admin settings require_once plugin_dir_path( __FILE__ ) . 'includes/class-es-settings-page.php'; // The class responsible for handling plugin shortcodes require_once plugin_dir_path( __FILE__ ) . 'includes/class-es-shortcode.php'; // The class responsible for managing our public facing functionality require_once plugin_dir_path( __FILE__ ) . 'includes/class-es-slider.php'; // The class responsible for handling our slider list table require_once plugin_dir_path( __FILE__ ) . 'includes/class-es-sliders-list-table.php'; // The class responsible for extension updates and licensing require_once plugin_dir_path( __FILE__ ) . 'includes/class-es-update-manager.php'; // The class responsible for displaying our welcome page(s) require_once plugin_dir_path( __FILE__ ) . 'includes/class-es-welcome-pages.php'; // The class responsible for adding a widget for displaying a slider require_once plugin_dir_path( __FILE__ ) . 'includes/class-es-widget.php'; } /** * Set locale * * @return void */ protected function set_locale() { // Load plugin textdomain load_plugin_textdomain( 'easing-slider', false, dirname( dirname( plugin_basename( __FILE__ ) ) ) . '/languages/' ); } /** * Register our "easingslider" post type * * @return void */ protected function register_post_type() { // Register the post type register_post_type( 'easingslider', array( 'query_var' => false, 'rewrite' => false, 'public' => true, 'exclude_from_search' => true, 'publicly_queryable' => false, 'show_in_nav_menus' => false, 'show_ui' => false, 'labels' => array( 'name' => __( 'Sliders', 'easingslider' ) ) ) ); } /** * Define menu hooks * * @return void */ protected function define_hooks() { // Initiate components $editor_pages = new ES_Editor_Pages(); $extensions_page = new ES_Extensions_Page(); $image_resizer = new ES_Image_Resizer(); $legacy = new ES_Legacy(); $menu = new ES_Menu(); $migrations = new ES_Migrations(); $settings_page = new ES_Settings_Page(); $shortcode = new ES_Shortcode(); $slider = new ES_Slider(); $welcome_pages = new ES_Welcome_Pages(); $widget = new ES_Widget(); /** * Hook everything, "connect all the dots"! * * All of these actions connect the various parts of our plugin together. * The idea behind this is to keep each "component" as separate as possible, decoupled from other components. * * These hooks bridge the gaps. */ add_action( 'admin_init', array( $editor_pages, 'register_assets' ) ); add_action( 'admin_menu', array( $editor_pages, 'add_edit_page' ), 999 ); add_action( 'admin_menu', array( $editor_pages, 'add_publish_page' ), 999 ); add_action( 'easingslider_activate', array( $editor_pages, 'add_capabilities' ) ); add_action( 'easingslider_remove_data', array( $editor_pages, 'remove_capabilities' ) ); add_filter( 'set-screen-option', array( $editor_pages, 'set_screen_option' ), 10, 3 ); add_action( 'admin_init', array( $extensions_page, 'register_assets' ) ); add_action( 'admin_menu', array( $extensions_page, 'add_submenu_page' ), 99999 ); add_action( 'easingslider_activate', array( $extensions_page, 'add_capabilities' ) ); add_action( 'easingslider_remove_data', array( $extensions_page, 'remove_capabilities' ) ); add_action( 'delete_attachment', array( $image_resizer, 'delete_resized_attachments' ) ); add_action( 'init', array( $legacy, 'lite_upgrade_from_200' ), 1 ); add_action( 'init', array( $legacy, 'lite_upgrade_from_100' ), 2 ); add_action( 'init', array( $legacy, 'pro_upgrade_from_200' ), 1 ); add_action( 'init', array( $legacy, 'pro_upgrade_from_100' ), 2 ); add_action( 'easingslider_remove_data', array( $legacy, 'remove_options' ) ); add_action( 'easingslider_delete_slider', array( $legacy, 'delete_lite_slider' ) ); add_action( 'easingslider_delete_slider', array( $legacy, 'delete_pro_slider' ) ); add_action( 'easingslider_pre_redirect_to_welcome', array( $legacy, 'redirect_to_whats_new' ) ); add_action( 'easingslider_display_shortcode', array( $legacy, 'handle_lite_shortcode' ) ); add_shortcode( 'easingsliderlite', array( $legacy, 'do_lite_shortcode' ) ); add_shortcode( 'easingsliderpro', array( $legacy, 'do_pro_shortcode' ) ); add_shortcode( 'rivasliderpro', array( $legacy, 'do_pro_shortcode' ) ); add_action( 'admin_menu', array( $menu, 'add_toplevel_menu' ) ); add_action( 'init', array( $migrations, 'do_migrations' ) ); add_action( 'easingslider_update_plugin', array( $migrations, 'migrate_to_22' ) ); add_action( 'easingslider_update_plugin', array( $migrations, 'update_version' ), 999 ); add_action( 'admin_init', array( $settings_page, 'register_assets' ) ); add_action( 'admin_menu', array( $settings_page, 'add_submenu_page' ), 999 ); add_action( 'easingslider_activate', array( $settings_page, 'add_capabilities' ) ); add_action( 'easingslider_remove_data', array( $settings_page, 'remove_capabilities' ) ); add_action( 'admin_footer', array( $shortcode, 'print_media_thickbox' ) ); add_action( 'media_buttons', array( $shortcode, 'print_media_button' ), 999 ); add_shortcode( 'easingslider', array( $shortcode, 'render' ) ); add_action( 'init', array( $slider, 'register_assets' ) ); add_action( 'wp_enqueue_scripts', array( $slider, 'enqueue_assets' ) ); add_filter( 'easingslider_pre_save_slider', array( $slider, 'no_title' ) ); add_filter( 'easingslider_pre_display_slider', array( $slider, 'maybe_randomize' ) ); add_filter( 'easingslider_get_html_data', array( $slider, 'cleanup_data' ) ); add_filter( 'easingslider_before_display_slider', array( $slider, 'no_script' ), 10, 2 ); add_filter( 'easingslider_before_slider_content', array( $slider, 'add_preload' ), 10, 2 ); add_filter( 'easingslider_display_image_slide', array( $slider, 'add_image' ), 10, 3 ); add_filter( 'easingslider_modify_image_url', array( $slider, 'resize_image' ), 10, 3 ); add_filter( 'easingslider_before_display_slide', array( $slider, 'open_link' ), 10, 3 ); add_filter( 'easingslider_after_display_slide', array( $slider, 'close_link' ), 10, 3 ); add_action( 'admin_init', array( $welcome_pages, 'register_assets' ) ); add_action( 'admin_init', array( $welcome_pages, 'redirect_to_welcome' ) ); add_action( 'admin_menu', array( $welcome_pages, 'add_dashboard_pages' ) ); add_action( 'admin_head', array( $welcome_pages, 'hide_individual_pages' ) ); add_action( 'easingslider_activate', array( $welcome_pages, 'set_redirect_transient' ) ); add_action( 'widgets_init', array( $widget, 'register' ) ); } /** * This method bootstraps the customization functionality, which will soon be exported into an extension. * If the "Visual Customizer" extension is already activated, this method won't do anything. * * This method will be removed in due course. * * @return void */ public function bootstrap_customizer() { // Bail if the customizer has already been loaded if ( ! class_exists( 'ES_Customizer' ) ) { // Load the customizer components require_once plugin_dir_path( __FILE__ ) . 'includes/class-es-customizations.php'; require_once plugin_dir_path( __FILE__ ) . 'includes/class-es-customizer-legacy.php'; require_once plugin_dir_path( __FILE__ ) . 'includes/class-es-customizer-notice.php'; require_once plugin_dir_path( __FILE__ ) . 'includes/class-es-customizer.php'; // Initiate components $customizations = new ES_Customizations(); $customizer_legacy = new ES_Customizer_Legacy(); $customizer_notice = new ES_Customizer_Notice(); $customizer = new ES_Customizer(); /** * Define hooks */ add_filter( 'easingslider_metadata_defaults', array( $customizations, 'merge_defaults' ) ); add_filter( 'easingslider_get_container_data', array( $customizations, 'remove_data' ), 10, 2 ); add_filter( 'easingslider_after_display_slider', array( $customizations, 'drop_shadow' ), 10, 2 ); add_filter( 'easingslider_before_display_slider', array( $customizations, 'display_styling' ), 10, 2 ); add_action( 'init', array( $customizer_legacy, 'lite_upgrade_from_200' ), 1 ); add_action( 'init', array( $customizer_legacy, 'lite_upgrade_from_100' ), 2 ); add_action( 'init', array( $customizer_legacy, 'pro_upgrade_from_200' ) ); add_action( 'easingslider_remove_data', array( $customizer_legacy, 'remove_options' ) ); /** * We're not quite ready to display this notice yet. * This code will be uncommented when the customizer is available as an extension. */ // add_action( 'admin_init', array( $customizer_notice, 'handle_dismiss' ) ); // add_action( 'admin_init', array( $customizer_notice, 'display' ), 999 ); // add_action( 'easingslider_uninstall', array( $customizer_notice, 'unset_flag' ) ); add_action( 'admin_init', array( $customizer, 'register_assets' ) ); add_action( 'admin_menu', array( $customizer, 'add_submenu_page' ), 9999 ); add_action( 'easingslider_activate', array( $customizer, 'add_capabilities' ) ); add_action( 'easingslider_remove_data', array( $customizer, 'remove_capabilities' ) ); } } }