theme_name = $theme->Name; $this->theme_version = $theme->Version; /** List of Companion Plugins * */ $this->companion_plugins = array(); /** List of required Plugins * */ $this->req_plugins = array( 'instant-demo-importer' => array( 'slug' => 'instant-demo-importer', 'name' => esc_html__( 'Instant Demo Importer', 'accesspress-parallax' ), 'filename' => 'instant-demo-importer.php', 'class' => 'Instant_Demo_Importer', 'github_repo' => true, 'bundled' => true, 'location' => 'https://github.com/WPaccesskeys/instant-demo-importer/archive/master.zip', 'info' => esc_html__( 'Instant Demo Importer Plugin adds the feature to Import the Demo Conent with a single click.', 'accesspress-parallax' ), ), ); /** Define Tabs Sections * */ $this->tab_sections = array( 'getting_started' => esc_html__( 'Getting Started', 'accesspress-parallax' ), 'recommended_plugins' => esc_html__( 'Recommended Plugins', 'accesspress-parallax' ), 'support' => esc_html__( 'Support', 'accesspress-parallax' ), 'free_vs_pro' => esc_html__( 'Free vs Pro', 'accesspress-parallax' ), 'more_wp_stuff' => esc_html__( 'More WordPress Stuff', 'accesspress-parallax' ), ); /** List of Recommended Free Plugins * */ $this->free_plugins = array( 'woocommerce' => array( 'slug' => 'woocommerce', 'filename' => 'woocommerce.php', 'class' => 'WooCommerce', ), 'accesspress-social-icons' => array( 'slug' => 'accesspress-social-icons', 'filename' => 'accesspress-social-icons.php', 'class' => 'APS_Class' ), 'accesspress-social-share' => array( 'slug' => 'accesspress-social-share', 'filename' => 'accesspress-social-share.php', 'class' => 'APSS_Class' ), 'accesspress-instagram-feed' => array( 'slug' => 'accesspress-instagram-feed', 'filename' => 'accesspress-instagram-feed.php', 'class' => 'APSS_Class' ), 'ap-custom-testimonial' => array( 'slug' => 'ap-custom-testimonial', 'filename' => 'ap-custom-testimonial.php', 'class' => 'APCT_free' ), 'accesspress-twitter-feed' => array( 'slug' => 'accesspress-twitter-feed', 'filename' => 'accesspress-twitter-feed.php', 'class' => 'APTF_Class' ), ); /** List of Recommended Pro Plugins * */ $this->pro_plugins = array(); /* Theme Activation Notice */ add_action( 'load-themes.php', array( $this, 'accesspressparallax_activation_admin_notice' ) ); /* Create a Welcome Page */ add_action( 'admin_menu', array( $this, 'accesspressparallax_welcome_register_menu' ) ); /* Enqueue Styles & Scripts for Welcome Page */ add_action( 'admin_enqueue_scripts', array( $this, 'accesspressparallax_welcome_styles_and_scripts' ) ); /** Plugin Installation Ajax * */ add_action( 'wp_ajax_accesspressparallax_plugin_installer', array( $this, 'accesspressparallax_plugin_installer_callback' ) ); /** Plugin Installation Ajax * */ add_action( 'wp_ajax_accesspressparallax_plugin_offline_installer', array( $this, 'accesspressparallax_plugin_offline_installer_callback' ) ); /** Plugin Activation Ajax * */ add_action( 'wp_ajax_accesspressparallax_plugin_activation', array( $this, 'accesspressparallax_plugin_activation_callback' ) ); /** Plugin Activation Ajax (Offline) * */ add_action( 'wp_ajax_accesspressparallax_plugin_offline_activation', array( $this, 'accesspressparallax_plugin_offline_activation_callback' ) ); //add_action( 'init', array( $this, 'get_required_plugin_notification' )); } public function get_required_plugin_notification() { $req_plugins = $this->companion_plugins; $notif_counter = count( $this->companion_plugins ); foreach ( $req_plugins as $plugin ) { $folder_name = $plugin[ 'slug' ]; $file_name = $plugin[ 'filename' ]; $path = WP_PLUGIN_DIR . '/' . esc_attr( $folder_name ) . '/' . esc_attr( $file_name ); if ( file_exists( $path ) ) { if ( class_exists( $plugin[ 'class' ] ) ) { $notif_counter--; } } } return $notif_counter; } /** Welcome Message Notification on Theme Activation * */ public function accesspressparallax_activation_admin_notice() { global $pagenow; if ( is_admin() && ('themes.php' == $pagenow) && (isset( $_GET[ 'activated' ] )) ) { ?>

Welcome page to get started with %1$s.', 'accesspress-parallax' ), esc_html( $this->theme_name ), esc_url( admin_url( 'themes.php?page=accesspressparallax-welcome' ) ) ); ?>

get_required_plugin_notification(); $title = $not > 0 ? 'Welcome ' . $not . '' : esc_html__( 'Welcome', 'accesspress-parallax' ); add_theme_page( 'Welcome', $title, 'edit_theme_options', 'accesspressparallax-welcome', array( $this, 'accesspressparallax_welcome_screen' ) ); } /** Welcome Page * */ public function accesspressparallax_welcome_screen() { $tabs = $this->tab_sections; $current_section = isset( $_GET[ 'section' ] ) ? sanitize_text_field( wp_unslash( $_GET[ 'section' ] ) ) : 'getting_started'; $section_inline_style = ''; ?>

theme_name ), esc_html( $this->theme_version ) ); ?>

theme_name ) ); ?>
wp_create_nonce( 'accesspressparallax_plugin_installer_nonce' ), 'activate_nonce' => wp_create_nonce( 'accesspressparallax_plugin_activate_nonce' ), 'ajaxurl' => esc_url( admin_url( 'admin-ajax.php' ) ), 'activate_btn' => esc_html__( 'Activate', 'accesspress-parallax' ), 'installed_btn' => esc_html__( 'Activated', 'accesspress-parallax' ), 'demo_installing' => esc_html__( 'Installing Demo', 'accesspress-parallax' ), 'demo_installed' => esc_html__( 'Demo Installed', 'accesspress-parallax' ), 'demo_confirm' => esc_html__( 'Are you sure to import demo content ?', 'accesspress-parallax' ), ) ); } /** Plugin API * */ public function accesspressparallax_call_plugin_api( $plugin ) { include_once ABSPATH . 'wp-admin/includes/plugin-install.php'; $call_api = plugins_api( 'plugin_information', array( 'slug' => $plugin, 'fields' => array( 'downloaded' => false, 'rating' => false, 'description' => false, 'short_description' => true, 'donate_link' => false, 'tags' => false, 'sections' => true, 'homepage' => true, 'added' => false, 'last_updated' => false, 'compatibility' => false, 'tested' => false, 'requires' => false, 'downloadlink' => false, 'icons' => true ) ) ); return $call_api; } /** Check For Icon * */ public function accesspressparallax_check_for_icon( $arr ) { if ( !empty( $arr[ 'svg' ] ) ) { $plugin_icon_url = $arr[ 'svg' ]; } elseif ( !empty( $arr[ '2x' ] ) ) { $plugin_icon_url = $arr[ '2x' ]; } elseif ( !empty( $arr[ '1x' ] ) ) { $plugin_icon_url = $arr[ '1x' ]; } else { $plugin_icon_url = $arr[ 'default' ]; } return $plugin_icon_url; } /** Check if Plugin is active or not * */ public function accesspressparallax_plugin_active( $plugin ) { $folder_name = $plugin[ 'slug' ]; $file_name = $plugin[ 'filename' ]; $status = 'install'; $path = WP_PLUGIN_DIR . '/' . esc_attr( $folder_name ) . '/' . esc_attr( $file_name ); if ( file_exists( $path ) ) { $status = class_exists( $plugin[ 'class' ] ) ? 'inactive' : 'active'; } return $status; } /** Generate Url for the Plugin Button * */ public function accesspressparallax_plugin_generate_url( $status, $plugin ) { $folder_name = $plugin[ 'slug' ]; $file_name = $plugin[ 'filename' ]; switch ( $status ) { case 'install': return wp_nonce_url( add_query_arg( array( 'action' => 'install-plugin', 'plugin' => esc_attr( $folder_name ) ), network_admin_url( 'update.php' ) ), 'install-plugin_' . esc_attr( $folder_name ) ); break; case 'inactive': return add_query_arg( array( 'action' => 'deactivate', 'plugin' => rawurlencode( esc_attr( $folder_name ) . '/' . esc_attr( $file_name ) ), 'plugin_status' => 'all', 'paged' => '1', '_wpnonce' => wp_create_nonce( 'deactivate-plugin_' . esc_attr( $folder_name ) . '/' . esc_attr( $file_name ) ), ), network_admin_url( 'plugins.php' ) ); break; case 'active': return add_query_arg( array( 'action' => 'activate', 'plugin' => rawurlencode( esc_attr( $folder_name ) . '/' . esc_attr( $file_name ) ), 'plugin_status' => 'all', 'paged' => '1', '_wpnonce' => wp_create_nonce( 'activate-plugin_' . esc_attr( $folder_name ) . '/' . esc_attr( $file_name ) ), ), network_admin_url( 'plugins.php' ) ); break; } } /* ========== Plugin Installation Ajax =========== */ public function accesspressparallax_plugin_installer_callback() { if ( !current_user_can( 'install_plugins' ) ) wp_die( esc_html__( 'Sorry, you are not allowed to install plugins on this site.', 'accesspress-parallax' ) ); $nonce = isset( $_POST[ "nonce" ] ) ? sanitize_text_field( wp_unslash( $_POST[ "nonce" ] ) ) : ''; $plugin = isset( $_POST[ "plugin" ] ) ? sanitize_text_field( wp_unslash( $_POST[ "plugin" ] ) ) : ''; $plugin_file = isset( $_POST[ "plugin_file" ] ) ? sanitize_text_field( wp_unslash( $_POST[ "plugin_file" ] ) ) : ''; // Check our nonce, if they don't match then bounce! if ( !wp_verify_nonce( $nonce, 'accesspressparallax_plugin_installer_nonce' ) ) wp_die( esc_html__( 'Error - unable to verify nonce, please try again.', 'accesspress-parallax' ) ); // Include required libs for installation require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; require_once ABSPATH . 'wp-admin/includes/class-wp-ajax-upgrader-skin.php'; require_once ABSPATH . 'wp-admin/includes/class-plugin-upgrader.php'; // Get Plugin Info $api = $this->accesspressparallax_call_plugin_api( $plugin ); $skin = new WP_Ajax_Upgrader_Skin(); $upgrader = new Plugin_Upgrader( $skin ); $upgrader->install( $api->download_link ); $plugin_file = ABSPATH . 'wp-content/plugins/' . esc_html( $plugin ) . '/' . esc_html( $plugin_file ); if ( $api->name ) { $main_plugin_file = $this->get_plugin_file( $plugin ); if ( $main_plugin_file ) { activate_plugin( $main_plugin_file ); echo "success"; die(); } } echo "fail"; die(); } /** Plugin Offline Installation Ajax * */ public function accesspressparallax_plugin_offline_installer_callback() { $file_location = isset( $_POST[ 'file_location' ] ) ? sanitize_text_field( wp_unslash( $_POST[ 'file_location' ] ) ) : ''; $file = isset( $_POST[ 'file' ] ) ? sanitize_text_field( wp_unslash( $_POST[ 'file' ] ) ) : ''; $github = isset( $_POST[ 'github' ] ) ? sanitize_text_field( wp_unslash( $_POST[ 'github' ] ) ) : ''; $slug = isset( $_POST[ 'slug' ] ) ? sanitize_text_field( wp_unslash( $_POST[ 'slug' ] ) ) : ''; $plugin_directory = ABSPATH . 'wp-content/plugins/'; $zip = new ZipArchive; if ( $zip->open( esc_html( $file_location ) ) === TRUE ) { $zip->extractTo( $plugin_directory ); $zip->close(); if ( $github ) { rename( realpath( $plugin_directory ) . '/' . $slug . '-master', realpath( $plugin_directory ) . '/' . $slug ); } activate_plugin( $file ); echo "success"; die(); } else { echo 'failed'; } die(); } /** Plugin Offline Activation Ajax * */ public function accesspressparallax_plugin_offline_activation_callback() { $plugin = isset( $_POST[ 'plugin' ] ) ? sanitize_text_field( wp_unslash( $_POST[ 'plugin' ] ) ) : ''; $plugin_file = ABSPATH . 'wp-content/plugins/' . esc_html( $plugin ) . '/' . esc_html( $plugin ) . '.php'; if ( file_exists( $plugin_file ) ) { activate_plugin( $plugin_file ); } else { esc_html_e( 'Plugin Doesn\'t Exists', 'accesspress-parallax' ); } die(); } /** Plugin Activation Ajax * */ public function accesspressparallax_plugin_activation_callback() { if ( !current_user_can( 'install_plugins' ) ) wp_die( esc_html__( 'Sorry, you are not allowed to activate plugins on this site.', 'accesspress-parallax' ) ); $nonce = isset( $_POST[ "nonce" ] ) ? sanitize_text_field( wp_unslash( $_POST[ "nonce" ] ) ) : ''; $plugin = isset( $_POST[ "plugin" ] ) ? sanitize_text_field( wp_unslash( $_POST[ "plugin" ] ) ) : ''; // Check our nonce, if they don't match then bounce! if ( !wp_verify_nonce( $nonce, 'accesspressparallax_plugin_activate_nonce' ) ) die( esc_html__( 'Error - unable to verify nonce, please try again.', 'accesspress-parallax' ) ); // Include required libs for activation require_once ABSPATH . 'wp-admin/includes/plugin-install.php'; require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; require_once ABSPATH . 'wp-admin/includes/class-plugin-upgrader.php'; // Get Plugin Info $api = $this->accesspressparallax_call_plugin_api( esc_attr( $plugin ) ); if ( $api->name ) { $main_plugin_file = $this->get_plugin_file( esc_attr( $plugin ) ); $status = 'success'; if ( $main_plugin_file ) { activate_plugin( $main_plugin_file ); $msg = sprintf( /* translators: %s: Plugin Name. */ esc_html__( "%s successfully activated.", 'accesspress-parallax' ), esc_html( $api->name ) ); } } else { $status = 'failed'; $msg = sprintf( /* translators: %s: Plugin Name. */ esc_html__( "There was an error activating %s", 'accesspress-parallax' ), esc_html( $api->name ) ); } $json = array( 'status' => $status, 'msg' => $msg, ); wp_send_json( $json ); } public function all_required_plugins_installed() { $companion_plugins = $this->companion_plugins; $show_success_notice = false; foreach ( $companion_plugins as $plugin ) { $path = WP_PLUGIN_DIR . '/' . esc_attr( $plugin[ 'slug' ] ) . '/' . esc_attr( $plugin[ 'filename' ] ); if ( file_exists( $path ) ) { if ( class_exists( $plugin[ 'class' ] ) ) { $show_success_notice = true; } else { $show_success_notice = false; break; } } else { $show_success_notice = false; break; } } return $show_success_notice; } public static function get_plugin_file( $plugin_slug ) { require_once ABSPATH . '/wp-admin/includes/plugin.php'; // Load plugin lib $plugins = get_plugins(); foreach ( $plugins as $plugin_file => $plugin_info ) { // Get the basename of the plugin e.g. [askismet]/askismet.php $slug = dirname( plugin_basename( $plugin_file ) ); if ( $slug ) { if ( $slug == $plugin_slug ) { return $plugin_file; // If $slug = $plugin_name } } } return null; } public function get_local_dir_path( $plugin ) { $url = wp_nonce_url( admin_url( 'themes.php?page=accesspressparallax-welcome§ion=import_demo' ), 'accesspressparallax-file-installation' ); if ( false === ($creds = request_filesystem_credentials( $url, '', false, false, null ) ) ) { return; // stop processing here } if ( !WP_Filesystem( $creds ) ) { request_filesystem_credentials( $url, '', true, false, null ); return; } global $wp_filesystem; $file = $wp_filesystem->get_contents( $plugin[ 'location' ] ); $file_location = get_template_directory() . '/welcome/plugins/' . $plugin[ 'slug' ] . '.zip'; $wp_filesystem->put_contents( $file_location, $file, FS_CHMOD_FILE ); return $file_location; } } new Accesspress_Parallax_Welcome(); endif; /** Initializing Demo Importer if exists * */ if ( class_exists( 'Instant_Demo_Importer' ) ) : $demoimporter = new Instant_Demo_Importer(); $demoimporter->demos = array( 'accesspress-parallax' => array( 'title' => esc_html__( 'Parallax Demo', 'accesspress-parallax' ), 'name' => 'accesspress-parallax', 'screenshot' => get_template_directory_uri() . '/welcome/demos/accesspress-parallax/screen.png', 'home_page' => '', 'menus' => array( ) ), ); $demoimporter->demo_dir = get_template_directory() . '/welcome/demos/'; // Path to the directory containing demo files $demoimporter->options_replace_url = 'http://demo.accesspressthemes.com/accesspress-parallax'; // Set the url to be replaced with current siteurl $demoimporter->option_name = 'accesspress_parallax'; // Set the the name of the option if the theme is based on theme option endif; ?>