slug(), array( $this, 'render_plugin_page' ), 'dashicons-flag', 75 ); } /** * Render plugin page * * @return void */ public function render_plugin_page() { jet_plugins_wizard()->get_template( 'page-header.php' ); $this->dispatch(); jet_plugins_wizard()->get_template( 'page-footer.php' ); } /** * Print JS item template * * @return void */ public function item_template() { if ( empty( $_GET['page'] ) || jet_plugins_wizard()->slug() !== $_GET['page'] ) { return; } printf( '', $this->get_item( '{{{data.slug}}}', '{{{data.name}}}' ) ); } /** * Get plugin installation notice * * @param string $slug Plugin slug. * @param string $name Plugin name. * @return string */ public function get_item( $slug, $name ) { ob_start(); $wizard_item = jet_plugins_wizard()->get_template( 'plugin-item.php' ); $item = ob_get_clean(); return sprintf( $item, $slug, $name, $this->get_loader() ); } /** * Get loader HTML * * @return string */ public function get_loader() { ob_start(); jet_plugins_wizard()->get_template( 'loader.php' ); return ob_get_clean(); } /** * Process wizard steps * * @return void */ public function dispatch() { $step = ! empty( $_GET['step'] ) ? $_GET['step'] : 0; $dispatch = apply_filters( 'jet-plugins-wizard/steps', array( 'configure-plugins' => 'step-configure-plugins.php', '0' => 'step-service-notice.php', '1' => 'step-before-install.php', '2' => 'step-select-type.php', '3' => 'step-install.php', '4' => 'step-after-install.php', ), $step ); do_action( 'jet-plugins-wizards/page-before' ); if ( isset( $dispatch[ $step ] ) ) { jet_plugins_wizard()->get_template( $dispatch[ $step ] ); } do_action( 'jet-plugins-wizards/page-after' ); } /** * Show before import page title * * @return void */ public function before_import_title() { $skins = $this->get_skins(); if ( empty( $skins ) ) { esc_html_e( 'No data found for installation', 'jet-plugins-wizard' ); } elseif ( 1 === count( $skins ) ) { esc_html_e( 'Start install', 'jet-plugins-wizard' ); } else { esc_html_e( 'Select skin and start install', 'jet-plugins-wizard' ); } } /** * Return available skins list * * @return array */ public function get_skins() { if ( ! empty( $this->skins ) ) { return $this->skins; } $this->skins = jet_plugins_wizard_settings()->get( array( 'skins', 'advanced' ) ); return $this->skins; } /** * Setup processed skin data * * @param string $slug Skin slug. * @param array $data Skin data. * @return void */ public function the_skin( $slug = null, $data = array() ) { $data['slug'] = $slug; $this->skin = $data; } /** * Retrun processed skin data * * @return array */ public function get_skin() { return $this->skin; } /** * Get info by current screen. * * @param string $key Key name. * @return mixed */ public function get_skin_data( $key = null ) { if ( empty( $this->skin ) ) { $skin = isset( $_GET['skin'] ) ? esc_attr( $_GET['skin'] ) : false; if ( ! $skin ) { return false; } $data = jet_plugins_wizard_settings()->get( array( 'skins', 'advanced', $skin ) ); $this->the_skin( $skin, $data ); } if ( empty( $this->skin[ $key ] ) ) { return false; } return $this->skin[ $key ]; } /** * Returns skin plugins list * * @param string $slug Skin name. * @return string */ public function get_skin_plugins( $slug = null ) { $skins = $this->get_skins(); $skin = isset( $skins[ $slug ] ) ? $skins[ $slug ] : false; if ( ! $skin ) { return ''; } $plugins = $skin[ 'full' ]; if ( empty( $plugins ) ) { return ''; } $registered = jet_plugins_wizard_settings()->get( array( 'plugins' ) ); $plugins_str = ''; $format = '
%s
'; foreach ( $plugins as $plugin ) { $plugin_data = isset( $registered[ $plugin ] ) ? $registered[ $plugin ] : false; if ( ! $plugin_data ) { continue; } $plugins_str .= sprintf( $format, $plugin_data['name'] ); } return $plugins_str; } /** * Return value from ini_get and ensure thats it integer. * * @param string $key Key to retrieve from ini_get. * @return int */ public function ini_get_int( $key = null ) { $val = ini_get( $key ); return intval( $val ); } /** * Validae server requirements. * * @return string */ public function server_notice( $when = 'always' ) { $data = array( array( 'arg' => null, '_cb' => 'phpversion', 'rec' => '5.4', 'units' => null, 'name' => esc_html__( 'PHP version', 'jet-plugins-wizard' ), 'compare' => 'version_compare', ), array( 'arg' => 'memory_limit', '_cb' => array( $this, 'ini_get_int' ), 'rec' => 128, 'units' => 'Mb', 'name' => esc_html__( 'Memory limit', 'jet-plugins-wizard' ), 'compare' => array( $this, 'val_compare' ), ), array( 'arg' => 'max_execution_time', '_cb' => 'ini_get', 'rec' => 60, 'units' => 's', 'name' => esc_html__( 'Max execution time', 'jet-plugins-wizard' ), 'compare' => array( $this, 'val_compare' ), ), ); $format = '
  • %1$s: %2$s%3$s — %4$s
  • '; $result = ''; $has_errors = false; foreach ( $data as $prop ) { if ( null !== $prop['arg'] ) { $val = call_user_func( $prop['_cb'], $prop['arg'] ); } else { $val = call_user_func( $prop['_cb'] ); } $compare = call_user_func( $prop['compare'], $val, $prop['rec'] ); if ( -1 === $compare ) { $msg = sprintf( esc_html__( '%1$s%2$s Recommended', 'jet-plugins-wizard' ), $prop['rec'], $prop['units'] ); $scs = ''; $has_errors = true; $this->set_wizard_errors( $prop['arg'] ); } else { $msg = esc_html__( 'Ok', 'jet-plugins-wizard' ); $scs = ' check-success'; } $result .= sprintf( $format, $prop['name'], $val, $prop['units'], $msg, $scs ); } if ( 'always' === $when ) { return sprintf( '', $result ); } if ( 'errors' === $when && $has_errors ) { $message = sprintf( '
    %1$s
    ', __( 'Not all of your server parameters met requirements. You can continue the installation process, but it will take more time and can probably drive to bugs:', 'jet-plugins-wizard' ) ); return sprintf( '%2$s', $result, $message ); } } /** * Save wizard error. * * @param string $arg Norie to ada */ public function set_wizard_errors( $arg = null ) { $errors = wp_cache_get( 'errors', 'jet-plugins-wizard' ); if ( ! $errors ) { $errors[ $arg ] = $arg; } wp_cache_set( 'errors', $errors, 'jet-plugins-wizard' ); } /** * Compare 2 values. * * @return int */ public function val_compare( $a, $b ) { $a = intval( $a ); $b = intval( $b ); if ( $a > $b ) { return 1; } if ( $a === $b ) { return 0; } if ( $a < $b ) { return -1; } } /** * Returns start skin installation button HTML. * * @param string $skin Skin slug. * @return string */ public function get_install_skin_button( $skin = '' ) { $url = jet_plugins_wizard()->get_page_link( array( 'step' => 2, 'skin' => $skin ) ); $label = esc_html__( 'Select Skin', 'jet-plugins-wizard' ); $format = '%2$s'; if ( jet_plugins_wizard_data()->is_single_skin_theme() || jet_plugins_wizard_data()->is_single_type_skin( $skin ) ) { $label = esc_html__( 'Start Install', 'jet-plugins-wizard' ); } if ( jet_plugins_wizard_data()->is_single_type_skin( $skin ) ) { $next_step = isset( $_GET['advanced-install'] ) && '1' === $_GET['advanced-install'] ? 'configure-plugins' : 3; $url = jet_plugins_wizard()->get_page_link( array( 'step' => $next_step, 'skin' => $skin, 'type' => 'full' ) ); } return sprintf( $format, $url, $label ); } /** * 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_Interface * * @return object */ function jet_plugins_wizard_interface() { return Jet_Plugins_Wizard_Interface::get_instance(); } jet_plugins_wizard_interface();