n $plugin_download; } /** * Install Plugin * * * @since 6.X */ public static function install_single_plugin( $plugin_name ){ $plugin_download = self::get_plugin_download_link( strtolower( str_replace(' ', '', $plugin_name) ) ); if( $plugin_download === false || !current_user_can ('install_plugins') ){ return false; } if ( strpos( $plugin_download , 'https://downloads.wordpress.org/plugin/' ) !== 0 ) { return false; } set_current_screen( 'sbi-feed-builder' ); // Prepare variables. $url = esc_url_raw( add_query_arg( array( 'page' => 'sbi-feed-builder', ), admin_url( 'admin.php' ) ) ); $creds = request_filesystem_credentials( $url, '', false, false, null ); // Check for file system permissions. if ( false === $creds || ! WP_Filesystem( $creds ) ) { return false; } require_once SBI_PLUGIN_DIR . 'inc/admin/class-install-skin.php'; // Do not allow WordPress to search/download translations, as this will break JS output. remove_action( 'upgrader_process_complete', array( 'Language_Pack_Upgrader', 'async_upgrade' ), 20 ); // Create the plugin upgrader with our custom skin. $installer = new \Sbi\Helpers\PluginSilentUpgrader( new \Sbi_Install_Skin() ); // Error check. if ( ! method_exists( $installer, 'install' ) || empty( $plugin_download ) ) { wp_send_json_error( $error ); } $installer->install( esc_url_raw( wp_unslash( $plugin_download ) ) ); // Flush the cache and return the newly installed plugin basename. wp_cache_flush(); $plugin_basename = $installer->plugin_info(); if ( $plugin_basename ) { activate_plugin( $plugin_basename ); } } /** * Process Wizard Data * Save Settings, Install Plugins and more * * @since 6.0.8 */ public function process_wizard_data(){ if( ! isset( $_POST['data'] ) ){ wp_send_json_error(); } check_ajax_referer( 'sbi-admin' , 'nonce'); if ( ! sbi_current_user_can( 'manage_instagram_feed_options' ) ) { wp_send_json_error(); } $sbi_settings = get_option( 'sb_instagram_settings', array() ); $onboarding_data = sanitize_text_field( stripslashes( $_POST['data'] ) ); $onboarding_data = json_decode( $onboarding_data, true); foreach ($onboarding_data as $single_data) { if( $single_data['type'] === 'settings' ){ $sbi_settings[$single_data['id']] = $single_data['id'] === 'sb_instagram_disable_resize' ? false : true; } if( $single_data['type'] === 'install_plugins' && current_user_can( 'install_plugins' ) ){ $plugins = explode(',' , $single_data['id']); //Deleting Redirect Data for 3rd plugins //$this->disable_installed_plugins_redirect(); foreach ($plugins as $plugin_name) { @SBI_Onboarding_wizard::install_single_plugin( $plugin_name ); $this->disable_installed_plugins_redirect(); } } } update_option( 'sb_instagram_settings', $sbi_settings ); wp_die(); } /** * Dismiss Onboarding Wizard * * @since 6.0.8 */ public function dismiss_wizard(){ check_ajax_referer( 'sbi-admin' , 'nonce'); if ( ! sbi_current_user_can( 'manage_instagram_feed_options' ) ) { wp_send_json_error(); } $sbi_statuses_option = get_option( 'sbi_statuses', array() ); $sbi_statuses_option['wizard_dismissed'] = true; update_option( 'sbi_statuses', $sbi_statuses_option ); wp_send_json_error(); } /** * Disable Installed Plugins Redirect * * @since 6.0.8 */ public function disable_installed_plugins_redirect(){ //Monster Insight delete_transient( '_monsterinsights_activation_redirect' ); //All in one SEO update_option( 'aioseo_activation_redirect', true ); //WPForms update_option( 'wpforms_activation_redirect', true ); //Optin Monster delete_transient( 'optin_monster_api_activation_redirect' ); update_option( 'optin_monster_api_activation_redirect_disabled', true ); //Seed PROD update_option( 'seedprod_dismiss_setup_wizard', true ); //PushEngage delete_transient( 'pushengage_activation_redirect' ); //Smash Plugin redirect remove $this->disable_smash_installed_plugins_redirect(); } /** * Disable Smash Balloon Plugins Redirect * * @since 6.0.8 */ public function disable_smash_installed_plugins_redirect() { $smash_list = [ 'facebook' => 'cff_plugin_do_activation_redirect', 'instagram' => 'sbi_plugin_do_activation_redirect', 'youtube' => 'sby_plugin_do_activation_redirect', 'twitter' => 'ctf_plugin_do_activation_redirect', 'reviews' => 'sbr_plugin_do_activation_redirect', ]; if(isset($smash_list[self::$plugin_name])){ unset($smash_list[self::$plugin_name]); } foreach ($smash_list as $key => $opt) { delete_option( $opt ); } } }