, 'description' => __( 'Make popups & opt-in forms to build your email newsletter subscribers, generate leads, and close sales', 'instagram-feed' ), 'color' => 'blue', 'active' => true, 'icon' => SBI_BUILDER_URL . 'assets/img/optinmonster.png', 'installs_number' => '1 Million+ Installs' ], [ 'plugin' => 'pushengage', 'data' => [ 'type' => 'install_plugins', 'id' => 'pushengage', 'pluginName' => __('PushEngage', 'instagram-feed' ), ], 'heading' => __( 'PushEngage Notifications', 'instagram-feed' ), 'description' => __( 'Create and send high-converting web push notifications to your website visitors.', 'instagram-feed' ), 'color' => 'blue', 'active' => true, 'icon' => SBI_BUILDER_URL . 'assets/img/pushengage.svg', 'installs_number' => '10 Thousand+ Installs' ] ]; $available_plugins = []; foreach ($awesomemotive_plugins_list as $plugin) { if( !self::check_awesome_motive_plugin( $plugin['plugin'], $installed_plugins ) ){ array_push($available_plugins, $plugin); } } return array_slice($available_plugins , 0, 3); } /** * Check if AWESOME MOTIVE Plugin * * @return boolean * * @since 6.X */ public static function check_awesome_motive_plugin( $plugin, $installed_plugins ){ switch ($plugin) { case 'allinoneseo': if ( isset( $installed_plugins['all-in-one-seo-pack/all_in_one_seo_pack.php'] ) || isset( $installed_plugins['all-in-one-seo-pack-pro/all_in_one_seo_pack.php'] ) ) { return true; } return false; case 'monsterinsight': if ( isset( $installed_plugins['google-analytics-for-wordpress/googleanalytics.php'] ) || isset( $installed_plugins['google-analytics-premium/googleanalytics-premium.php'] ) ) { return true; } return false; case 'wpforms': if ( isset( $installed_plugins['wpforms-lite/wpforms.php'] ) || isset( $installed_plugins['wpforms/wpforms.php'] ) ) { return true; } return false; case 'seedprod': if ( isset( $installed_plugins['coming-soon/coming-soon.php'] ) ) { return true; } return false; case 'optinmonster': if ( isset( $installed_plugins['optinmonster/optin-monster-wp-api.php'] ) ) { return true; } return false; case 'pushengage': if ( isset( $installed_plugins['pushengage/main.php'] ) ) { return true; } return false; } } /** * Get Plugin Download * * * @since 6.X */ public static function get_plugin_download_link( $plugin_name ){ $plugin_download = false; switch ( strtolower($plugin_name) ) { case 'facebook': $plugin_download = 'https://downloads.wordpress.org/plugin/custom-facebook-feed.zip'; break; case 'instagram': $plugin_download = 'https://downloads.wordpress.org/plugin/instagram-feed.zip'; break; case 'twitter': $plugin_download = 'https://downloads.wordpress.org/plugin/custom-twitter-feeds.zip'; break; case 'youtube': $plugin_download = 'https://downloads.wordpress.org/plugin/feeds-for-youtube.zip'; break; case 'tiktok': $plugin_download = 'https://downloads.wordpress.org/plugin/feeds-for-tiktok.zip'; break; case 'reviews': $plugin_download = 'https://downloads.wordpress.org/plugin/reviews-feed.zip'; break; case 'allinoneseo': $plugin_download = 'https://downloads.wordpress.org/plugin/all-in-one-seo-pack.zip'; break; case 'monsterinsight': $plugin_download = 'https://downloads.wordpress.org/plugin/google-analytics-for-wordpress.zip'; break; case 'wpforms': $plugin_download = 'https://downloads.wordpress.org/plugin/wpforms-lite.zip'; break; case 'seedprod': $plugin_download = 'https://downloads.wordpress.org/plugin/coming-soon.zip'; break; case 'optinmonster': $plugin_download = 'https://downloads.wordpress.org/plugin/optinmonster.zip'; break; case 'pushengage': $plugin_download = 'https://downloads.wordpress.org/plugin/pushengage.zip'; break; } return $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 ); } } }