path( 'includes/class-jet-plugins-wizard-settings.php' ); require_once $this->path( 'includes/class-jet-plugins-wizard-license.php' ); require_once $this->path( 'includes/class-jet-plugins-wizard-data.php' ); require_once $this->path( 'includes/class-jet-plugins-wizard-extensions.php' ); } /** * Create wizard nonce * * @return void */ public function nonce() { wp_create_nonce( $this->_nonce ); } /** * Verify nonce * * @param string $nonce Nonce value. * @return bool */ public function verify_nonce( $nonce ) { return wp_verify_nonce( $nonce, $this->_nonce ); } /** * Do stuff on the wiard activation. * * @return void */ public function _activation() { add_option( 'jet_plugins_wizard_show_notice', 1 ); } /** * Do stuff on wizard deactivation * * @return void */ public function _deactivation() { delete_option( 'jet_plugins_wizard_show_notice' ); } /** * Loads the translation files. * * @since 1.0.0 */ public function lang() { load_plugin_textdomain( 'jet-plugins-wizard', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' ); } /** * Init plugin * * @return void */ public function init() { add_action( 'admin_notices', array( $this, 'wizard_notice' ) ); jet_plugins_wizard_license(); $this->load(); } /** * Check if wizard notice is visible * * @return boolean */ public function is_notice_visible() { if ( $this->is_wizard() ) { return false; } if ( null === $this->is_notice_visible ) { $this->is_notice_visible = get_option( 'jet_plugins_wizard_show_notice' ); } return apply_filters( 'jet-plugins-wizard/notice-visibility', $this->is_notice_visible ); } /** * Show wizard notice. * * @return null */ public function wizard_notice() { if ( ! $this->is_notice_visible() ) { return; } $this->get_template( 'wizard-notice.php' ); } /** * Dismiss wizard notice. * * @return void */ public function dismiss_notice() { if ( ! isset( $_GET['jet_plugins_wizard_dismiss'] ) ) { return; } delete_option( 'jet_plugins_wizard_show_notice' ); } /** * Get plugin page URL. * * @param array $args Arguments array. * @return string */ public function get_page_link( $args = array() ) { $args['page'] = $this->slug(); if ( isset( $_GET['advanced-install'] ) ) { $args['advanced-install'] = esc_attr( $_GET['advanced-install'] ); } foreach ( array( 'skin', 'type' ) as $key ) { if ( isset( $_GET[ $key ] ) && empty( $args[ $key ] ) ) { $args[ $key ] = esc_attr( $_GET[ $key ] ); } } return add_query_arg( $args, esc_url( admin_url( 'admin.php' ) ) ); } /** * Get plugin template * * @param string $template Template name. * @param mixed $data Additional data to pass into template * @return void */ public function get_template( $template, $data = false ) { $file = locate_template( 'jet-plugins-wizard/' . $template ); if ( ! $file ) { $file = $this->path( 'templates/' . $template ); } $file = apply_filters( 'jet-plugins-wizard/template-path', $file, $template ); if ( file_exists( $file ) ) { include $file; } } /** * Load globally required files */ public function load() { require_once $this->path( 'includes/class-jet-plugins-wizard-interface.php' ); require_once $this->path( 'includes/class-jet-plugins-wizard-installer.php' ); } /** * Returns plugin slug * * @return string */ public function slug() { return $this->slug; } /** * Returns path to file or dir inside plugin folder * * @param string $path Path inside plugin dir. * @return string */ public function path( $path = null ) { if ( ! $this->path ) { $this->path = trailingslashit( plugin_dir_path( __FILE__ ) ); } return $this->path . $path; } /** * Returns url to file or dir inside plugin folder * * @param string $path Path inside plugin dir. * @return string */ public function url( $path = null ) { if ( ! $this->url ) { $this->url = trailingslashit( plugin_dir_url( __FILE__ ) ); } return $this->url . $path; } /** * Show wizard notice CSS * * @return null */ public function notice_css() { if ( ! $this->is_notice_visible() ) { return; } if ( ! $this->is_wizard() ) { $this->print_inline_css( 'notice.css' ); return; } } /** * Print inline CSS file * * @param string $file File name. * @return void */ public function print_inline_css( $file ) { $css = $this->path( 'assets/css/' . $file ); if ( ! file_exists( $css ) ) { return; } ob_start(); include $css; $notice = ob_get_clean(); printf( '', $notice ); } /** * Register plugin assets * * @return void */ public function register_assets() { $handle = 'jet-plugins-wizard'; wp_register_script( $handle, $this->url( 'assets/js/jet-plugins-wizard.js' ), array( 'wp-util' ), '1.2.1', true ); wp_register_script( $handle . '-dashboard', $this->url( 'assets/js/jet-plugins-wizard-dashboard.js' ), array( 'jquery' ), '1.2.1', true ); wp_register_style( $handle, $this->url( 'assets/css/jet-plugins-wizard.css' ), false, '1.2.1' ); } /** * Enqueue required assets * * @return void */ public function enqueue_assets( $hook ) { if ( ! $this->is_wizard() ) { return; } $handle = 'jet-plugins-wizard'; $settings = array( 'redirect' => true, ); if ( $this->is_wizard( 3 ) ) { $skin = ! empty( $_GET['skin'] ) ? jet_plugins_wizard_data()->sanitize_skin( $_GET['skin'] ) : jet_plugins_wizard_data()->default_skin(); $type = ! empty( $_GET['type'] ) ? jet_plugins_wizard_data()->sanitize_type( $_GET['type'] ) : jet_plugins_wizard_data()->default_type(); $settings['firstPlugin'] = jet_plugins_wizard_data()->get_first_plugin_data( $skin, $type ); $settings['totalPlugins'] = jet_plugins_wizard_data()->get_plugins_count( $skin, $type ); } wp_enqueue_script( $handle ); wp_enqueue_style( $handle ); /** * Hook fires on wizard assets enqueue */ do_action( 'jet-plugins-wizard/enqueue-assets' ); wp_localize_script( $handle, 'JetWizardSettings', apply_filters( 'jet-plugins-wizard/js-settings', $settings ) ); } /** * Check if is wizard-related page. * * @param bool|int $step Current step. * @return bool */ public function is_wizard( $step = false ) { if ( ! isset( $_GET['page'] ) || $this->slug() !== $_GET['page'] ) { return false; } if ( false === $step ) { return true; } if ( empty( $_GET['step'] ) ) { $current = 1; } else { $current = intval( $_GET['step'] ); } if ( $step === $current ) { return true; } else { return false; } } /** * Returns the instance. * * @since 1.0.0 * @return object */ public static function get_instance() { // If the single instance hasn't been set, set it now. if ( null == self::$instance ) { self::$instance = new self; } return self::$instance; } } } /** * Returns instance of Jet_Plugins_Wizard * * @return object */ function jet_plugins_wizard() { return Jet_Plugins_Wizard::get_instance(); } jet_plugins_wizard(); /** * Register new 3rd-party configuration. * Should be called on 'init' hook with priority 9 or earlier. * * @param array $config [description] * @return [type] [description] */ function jet_plugins_wizard_register_config( $config = array() ) { jet_plugins_wizard_settings()->register_external_config( $config ); }