theme_name = $theme->Name; $this->theme_version = $theme->Version; /** Define Tabs Sections */ $this->tab_sections = array( 'getting_started' => array( 'label' => esc_html__('Getting Started', 'bigmart'), 'detail' => esc_html__('Overview about the settings.', 'bigmart'), 'icon' => 'icofont-settings-alt' ), 'recommended_plugins' => array( 'label' => esc_html__('Recommended Plugins', 'bigmart'), 'detail' => esc_html__('Plugins that work best with the theme.', 'bigmart'), 'icon' => 'icofont-plugin' ), 'demo_import' => array( 'label' => esc_html__('Import Demos', 'bigmart'), 'detail' => esc_html__('Install the demo to your site.', 'bigmart'), 'icon' => 'icofont-cloud-download' ), 'free_vs_pro' => array( 'label' => esc_html__('Free vs Pro', 'bigmart'), 'detail' => esc_html__('Compare between Free & Pro.', 'bigmart'), 'icon' => 'icofont-contrast', 'highlight' => true ), 'support' => array( 'label' => esc_html__('Help & Support', 'bigmart'), 'detail' => esc_html__('We are here to support you.', 'bigmart'), 'icon' => 'icofont-live-support' ), ); /** List of Recommended Free Plugins */ $this->free_plugins = array( 'elementor' => array( 'slug' => 'elementor', 'class' => '\Elementor\Plugin', 'filename' => 'elementor.php', ), 'bigmart-elements' => array( 'slug' => 'bigmart-elements', 'class' => 'Bigmart_Elements', 'filename' => 'bigmart-elements.php', ), 'woocommerce' => array( 'slug' => 'woocommerce', 'class' => 'WooCommerce', 'filename' => 'woocommerce.php', ), 'yith-woocommerce-ajax-navigation' => array( 'slug' => 'yith-woocommerce-ajax-navigation', 'class' => 'YITH WooCommerce Ajax Product Filter', 'filename' => 'class-yith-wcan.php', ), 'wpforms-lite' => array( 'slug' => 'wpforms-lite', 'class' => 'WPForms_Lite', 'filename' => 'wpforms.php', ), ); /* Create a Welcome Page */ add_action('admin_menu', array($this, 'welcome_register_menu')); /* Enqueue Styles & Scripts for Welcome Page */ add_action('admin_enqueue_scripts', array($this, 'welcome_styles_and_scripts')); /* Adds Footer Rating Text */ add_filter('admin_footer_text', array($this, 'admin_footer_text')); /* Hide Notice */ add_filter('wp_loaded', array($this, 'hide_admin_notice'), 10); /* Create a Welcome Page */ add_action('wp_loaded', array($this, 'admin_notice'), 20); add_action('after_switch_theme', array($this, 'erase_hide_notice')); /** Ajaxes * */ add_action('wp_ajax_plugin_installer', array($this, 'plugin_installer_callback')); add_action('wp_ajax_remote_plugin_installer', array($this, 'remote_plugin_installer_callback')); add_action('wp_ajax_plugin_activator', array($this, 'plugin_activate_callback')); /** Add Demo Options */ add_action('sdi_import_files', array($this, 'demo_config')); } /** Trigger Welcome Message Notification */ public function admin_notice() { $hide_notice = get_option('bigmart_hide_notice'); if (!$hide_notice) { add_action('admin_notices', array($this, 'admin_notice_content')); } } /** Welcome Message Notification */ public function admin_notice_content() { $screen = get_current_screen(); if ('appearance_page_bigmart-welcome' === $screen->id || (isset($screen->parent_file) && 'plugins.php' === $screen->parent_file && 'update' === $screen->id) || 'theme-install' === $screen->id) { return; } ?>
theme_name), 'edit_theme_options', 'bigmart-welcome', [ $this, 'welcome_screen' ], null ); } /** Welcome Page */ public function welcome_screen() { $tabs = $this->tab_sections; ?> admin_url('admin-ajax.php'), 'installer_nonce' => wp_create_nonce('plugin_installer_nonce'), 'activator_nonce' => wp_create_nonce('plugin_activator_nonce'), 'deactivator_nonce' => wp_create_nonce('plugin_deactivator_nonce'), 'installed_btn' => esc_html__('Activated', 'bigmart'), 'deactivated_btn' => esc_html__('Deactivated', 'bigmart'), ); wp_enqueue_style('elegant-icons', get_template_directory_uri() . '/vendors/elegant-icons/elegant-icons.css', array(), $this->theme_version, false); wp_enqueue_style('materialdesignicons', get_template_directory_uri() . '/vendors/materialdesignicons/materialdesignicons.css', array(), $this->theme_version, false); wp_enqueue_style('icofont', get_template_directory_uri() . '/vendors/icofont/icofont.css', array(), $this->theme_version, false); wp_enqueue_style('bigmart-welcome', get_template_directory_uri() . '/welcome/css/welcome.css', array(), $this->theme_version); wp_enqueue_script('bigmart-welcome', get_template_directory_uri() . '/welcome/js/welcome.js', array('plugin-install', 'updates'), $this->theme_version, true); wp_localize_script('bigmart-welcome', 'welcomeObject', $importer_params); } } /** Added * */ /** Get Plugin Info from WordPress API * */ public function call_plugin_api($plugin_slug) { include_once ABSPATH . 'wp-admin/includes/plugin-install.php'; $api = plugins_api('plugin_information', array( 'slug' => $plugin_slug, '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' => true, 'icons' => true ) )); return $api; } /** Check For Icon * */ public function 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 get_plugin_status($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']) ? 'deactive' : 'active'; } return $status; return $status; } /** Generate URL for the Plugin Button * */ public function generate_plugin_install_btn($status, $plugin) { $folder_name = isset($plugin['slug']) ? $plugin['slug'] : ''; $file_name = isset($plugin['filename']) ? $plugin['filename'] : ''; $is_premium = isset($plugin['is_premium']) ? $plugin['is_premium'] : false; $remote_path = isset($plugin['remote_path']) ? $plugin['remote_path'] : ''; $zipfile = isset($plugin['zipfile']) ? $plugin['zipfile'] : ''; $url = $btn = ''; switch ($status) { case 'install': if (!$is_premium) { $btn = ''; return $btn; } return $btn = ''; break; case 'deactive': return $btn = '' . esc_html__('Deactivate', 'bigmart') . ''; break; case 'active': return $btn = '' . esc_html__('Activate', 'bigmart') . ''; break; } } /** Install & Activate WordPress Free Plugins * */ public function plugin_installer_callback() { if (!current_user_can('install_plugins')) { wp_die(esc_html__('Sorry, you are not allowed to install plugins on this site.', 'bigmart')); } $nonce = isset($_REQUEST["nonce"]) ? sanitize_text_field(wp_unslash($_REQUEST["nonce"])) : ''; $plugin = isset($_REQUEST["plugin"]) ? sanitize_text_field(wp_unslash($_REQUEST["plugin"])) : ''; $plugin_file = isset($_REQUEST["plugin_file"]) ? sanitize_text_field(wp_unslash($_REQUEST["plugin_file"])) : ''; // Check our nonce, if they don't match then bounce! if (!wp_verify_nonce($nonce, 'plugin_installer_nonce')) wp_die(esc_html__('Error - unable to verify nonce, please try again.', 'bigmart')); // 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->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_attr($plugin) . '/' . esc_attr($plugin_file); if ($api->name) { if ($plugin_file) { activate_plugin($plugin_file); echo "success"; die(); } } echo "fail"; die(); } /** Activate WordPress Free Plugins * */ public function plugin_activate_callback() { if (!current_user_can('install_plugins')) wp_die(esc_html__('Sorry, you are not allowed to install plugins on this site.', 'bigmart')); $nonce = isset($_REQUEST["nonce"]) ? sanitize_text_field(wp_unslash($_REQUEST["nonce"])) : ''; $plugin = isset($_REQUEST["plugin"]) ? sanitize_text_field(wp_unslash($_REQUEST["plugin"])) : ''; $plugin_file = isset($_REQUEST["plugin_file"]) ? sanitize_text_field(wp_unslash($_REQUEST["plugin_file"])) : ''; // Check our nonce, if they don't match then bounce! if (!wp_verify_nonce($nonce, 'plugin_activator_nonce')) wp_die(esc_html__('Error - unable to verify nonce, please try again.', 'bigmart')); $plugin_file = ABSPATH . 'wp-content/plugins/' . esc_attr($plugin) . '/' . esc_attr($plugin_file); if ($plugin_file) { activate_plugin($plugin_file); echo "success"; die(); } echo "fail"; die(); } /** Deactivate WordPress Free Plugins * */ public function plugin_deactivate_callback() { if (!current_user_can('install_plugins')) wp_die(esc_html__('Sorry, you are not allowed to install plugins on this site.', 'bigmart')); $nonce = isset($_REQUEST["nonce"]) ? sanitize_text_field(wp_unslash($_REQUEST["nonce"])) : ''; $plugin = isset($_REQUEST["plugin"]) ? sanitize_text_field(wp_unslash($_REQUEST["plugin"])) : ''; $plugin_file = isset($_REQUEST["plugin_file"]) ? sanitize_text_field(wp_unslash($_REQUEST["plugin_file"])) : ''; // Check our nonce, if they don't match then bounce! if (!wp_verify_nonce($nonce, 'plugin_deactivator_nonce')) wp_die(esc_html__('Error - unable to verify nonce, please try again.', 'bigmart')); $plugin_file = ABSPATH . 'wp-content/plugins/' . esc_attr($plugin) . '/' . esc_attr($plugin_file); if ($plugin_file) { deactivate_plugins($plugin_file); echo "success"; die(); } echo "fail"; die(); } /** Render Contents for Free Plugins * */ public function render_plugin_content_free() { foreach ($this->free_plugins as $plugin) { $info = $this->call_plugin_api($plugin['slug']); $icon_url = $this->check_for_icon($info->icons); $plugin_status = $this->get_plugin_status($plugin); $btn_url = $this->generate_plugin_install_btn($plugin_status, $plugin); ?>