ProShell v2.0
Dashboard
Server Info
Server: 158.106.128.192
PHP: 8.2.33
home
planet5
public_html
bansibaba.com
wp-includes
2026-09-15 13:48:49
Editing: setup-wizard-functions.php
Cancel
Save Changes
<?php /** * Setup Wizard functions for SeedProd Admin (V2) * * Handles the return flow from the external SaaS setup wizard * All functions must use seedprod_lite_v2_ prefix (renamed to seedprod_lite_v2_ in build) * * @package SeedProd * @subpackage SeedProd/admin/includes */ // Exit if accessed directly. if ( ! defined( 'ABSPATH' ) ) { exit; } /** * Complete Setup Wizard (V2 Admin) * Handles the return from the external SaaS setup wizard * Creates pages based on the wizard selections * * Migrated from /app/setup-wizard.php for new admin system */ function seedprod_lite_v2_complete_setup_wizard() { if ( check_ajax_referer( 'seedprod_lite_v2_complete_setup_wizard' ) ) { if ( ! current_user_can( apply_filters( 'seedprod_lpage_capability', 'edit_others_posts' ) ) ) { wp_send_json_error(); } $wizard_id = isset( $_POST['wizard_id'] ) ? sanitize_text_field( wp_unslash( $_POST['wizard_id'] ) ) : null; // Get the wizard data with id and token. $site_token = get_option( 'seedprod_token' ); $data = array( 'wizard_id' => $wizard_id, 'site_token' => $site_token, ); $headers = array(); // Build the headers of the request. $headers = wp_parse_args( $headers, array( 'Accept' => 'application/json', ) ); $url = SEEDPROD_API_URL . 'get-wizard-data'; $response = wp_remote_post( $url, array( 'body' => $data, 'headers' => $headers, ) ); $status_code = wp_remote_retrieve_response_code( $response ); // Handle errors. if ( is_wp_error( $response ) ) { // Load utility functions for get_ip if needed. if ( ! function_exists( 'seedprod_lite_v2_get_ip' ) ) { require_once plugin_dir_path( __FILE__ ) . 'utility-functions.php'; } $response = array( 'status' => 'false', 'ip' => seedprod_lite_v2_get_ip(), 'msg' => $response->get_error_message(), ); wp_send_json( $response ); } if ( 200 !== $status_code ) { // Load utility functions for get_ip if needed. if ( ! function_exists( 'seedprod_lite_v2_get_ip' ) ) { require_once plugin_dir_path( __FILE__ ) . 'utility-functions.php'; } $response = array( 'status' => 'false', 'ip' => seedprod_lite_v2_get_ip(), 'msg' => $response['response']['message'], ); wp_send_json( $response ); } $body = wp_remote_retrieve_body( $response ); if ( ! empty( $body ) ) { $body = json_decode( $body ); } // Store the wizard id and data locally. $onboarding = $body->onboarding; // Store the wizard verify plugins. update_option( 'seedprod_verify_wizard_options', $onboarding->options ); // Mark wizard as completed/dismissed so it won't show again. update_option( 'seedprod_dismiss_setup_wizard', 1 ); // Set tracking if they have opted in. if ( ! empty( $onboarding->allow_usagetracking ) ) { update_option( 'seedprod_allow_usage_tracking', true ); } // Free templates. if ( ! empty( $onboarding->email ) ) { update_option( 'seedprod_free_templates_subscribed', true ); } // Get template type that was setup in the onboarding. $type = 'lp'; if ( ! empty( $onboarding->sp_type ) ) { $type = $onboarding->sp_type; } $id = null; // Create a landing page/coming soon/maintenance/404/login page. if ( 'lp' === $type || 'cs' === $type || 'mm' === $type || 'p404' === $type || 'loginp' === $type ) { // Install template. $cpt = 'page'; // SeedProd CPT types. $cpt_types = array( 'cs', 'mm', 'p404', 'loginp', 'header', 'footer', 'part', 'page', ); if ( in_array( $type, $cpt_types, true ) ) { $cpt = 'seedprod'; } // Base page settings. require_once SEEDPROD_PLUGIN_PATH . 'resources/data-templates/basic-page.php'; $basic_settings = json_decode( $seedprod_basic_lpage, true ); $basic_settings['is_new'] = true; $basic_settings['page_type'] = $type; // Set slug based on type. $slug = ''; $lpage_name = ''; if ( 'cs' === $type ) { $slug = 'sp-cs'; $lpage_name = $slug; $basic_settings['no_conflict_mode'] = true; } if ( 'mm' === $type ) { $slug = 'sp-mm'; $lpage_name = $slug; $basic_settings['no_conflict_mode'] = true; } if ( 'p404' === $type ) { $slug = 'sp-p404'; $lpage_name = $slug; $basic_settings['no_conflict_mode'] = true; } if ( 'loginp' === $type ) { $slug = 'sp-login'; $lpage_name = $slug; $basic_settings['no_conflict_mode'] = true; } // Insert page code. $code = ''; if ( ! empty( $onboarding->code ) ) { $code = base64_decode( $onboarding->code ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_decode -- Used for decoding template data, not obfuscation. } $code = json_decode( $code, true ); // Merge in code. if ( ! empty( $slug ) ) { $basic_settings['post_title'] = $slug; $basic_settings['post_name'] = $slug; } $basic_settings['template_id'] = intval( $onboarding->template_id ); $new_settings = $basic_settings; if ( 99999 !== $onboarding->template_id ) { unset( $basic_settings['document'] ); if ( is_array( $code ) ) { $new_settings = $basic_settings + $code; } } $encoded_settings = wp_json_encode( $new_settings ); $id = wp_insert_post( array( 'comment_status' => 'closed', 'ping_status' => 'closed', 'post_content' => '', 'post_status' => 'draft', 'post_title' => 'seedprod', 'post_type' => $cpt, 'post_name' => $slug, 'post_content_filtered' => $encoded_settings, 'meta_input' => array( '_seedprod_page' => true, '_seedprod_page_uuid' => wp_generate_uuid4(), '_seedprod_page_template_type' => $type, ), ), true ); // Reinsert settings because wp_insert screws up json (following old working logic). if ( ! is_wp_error( $id ) && ! empty( $encoded_settings ) ) { global $wpdb; $wpdb->query( $wpdb->prepare( "UPDATE {$wpdb->posts} SET post_content_filtered = %s WHERE id = %d", $encoded_settings, $id ) ); clean_post_cache( $id ); } // Update pointer - record page IDs for each type. if ( 'cs' === $type ) { update_option( 'seedprod_coming_soon_page_id', $id ); } if ( 'mm' === $type ) { update_option( 'seedprod_maintenance_mode_page_id', $id ); } if ( 'p404' === $type ) { update_option( 'seedprod_404_page_id', $id ); } if ( 'loginp' === $type ) { update_option( 'seedprod_login_page_id', $id ); } // If landing page set a temp name. if ( 'lp' === $type ) { if ( is_numeric( $id ) ) { $lpage_name = esc_html__( 'New Page', 'coming-soon' ) . " (ID #$id)"; } else { $lpage_name = esc_html__( 'New Page', 'coming-soon' ); } } wp_update_post( array( 'ID' => $id, 'post_title' => $lpage_name, ) ); } // Install theme if theme is the type. if ( 'websitebuilder' === $type || 'woocommerce' === $type ) { $template_id = $onboarding->template_id; // Call theme import function if it exists. if ( function_exists( 'seedprod_lite_theme_import' ) ) { seedprod_lite_theme_import( $template_id ); } } // Filter out already installed plugins. $filtered_options = array(); if ( ! empty( $onboarding->options ) ) { $options_array = json_decode( $onboarding->options, true ); if ( is_array( $options_array ) ) { $all_plugins = get_plugins(); // Check each recommended plugin. foreach ( $options_array as $plugin_key ) { $needs_install = false; switch ( $plugin_key ) { case 'rafflepress': if ( ! isset( $all_plugins['rafflepress/rafflepress.php'] ) && ! isset( $all_plugins['rafflepress-pro/rafflepress-pro.php'] ) ) { $needs_install = true; } break; case 'allinoneseo': if ( ! isset( $all_plugins['all-in-one-seo-pack/all_in_one_seo_pack.php'] ) && ! isset( $all_plugins['all-in-one-seo-pack-pro/all_in_one_seo_pack.php'] ) && ! isset( $all_plugins['seo-by-rank-math/rank-math.php'] ) && ! isset( $all_plugins['wordpress-seo/wp-seo.php'] ) && ! isset( $all_plugins['wordpress-seo-premium/wp-seo-premium.php'] ) ) { $needs_install = true; } break; case 'wpforms': if ( ! isset( $all_plugins['wpforms-lite/wpforms.php'] ) && ! isset( $all_plugins['wpforms/wpforms.php'] ) ) { $needs_install = true; } break; case 'optinmonster': if ( ! isset( $all_plugins['optinmonster/optin-monster-wp-api.php'] ) ) { $needs_install = true; } break; case 'ga': case 'monsterinsights': if ( ! isset( $all_plugins['google-analytics-for-wordpress/googleanalytics.php'] ) && ! isset( $all_plugins['google-analytics-premium/googleanalytics-premium.php'] ) ) { $needs_install = true; } break; case 'vibe-ai': if ( ! isset( $all_plugins['vibe-ai/vibe-ai.php'] ) ) { $needs_install = true; } break; } if ( $needs_install ) { $filtered_options[] = $plugin_key; } } } } // Return response. $response = array( 'status' => 'true', 'type' => $type, 'id' => $id, 'options' => $filtered_options, // Return filtered array, not JSON string. ); wp_send_json_success( $response ); } } /** * Install Add-on Setup (V2 Admin) * Installs and activates recommended plugins from the setup wizard * * Migrated from /app/setup-wizard.php for new admin system */ function seedprod_lite_v2_install_addon_setup() { // Run a security check. check_ajax_referer( 'seedprod_lite_v2_install_addon_setup', 'nonce' ); // Check for permissions. if ( ! current_user_can( 'install_plugins' ) ) { wp_send_json_error(); } // Plugin mapping. $paths_map = array( 'rafflepress' => array( 'slug' => 'rafflepress/rafflepress.php', 'url' => 'https://downloads.wordpress.org/plugin/rafflepress.zip', ), 'allinoneseo' => array( 'slug' => 'all-in-one-seo-pack/all_in_one_seo_pack.php', 'url' => 'https://downloads.wordpress.org/plugin/all-in-one-seo-pack.zip', ), 'ga' => array( 'slug' => 'google-analytics-for-wordpress/googleanalytics.php', 'url' => 'https://downloads.wordpress.org/plugin/google-analytics-for-wordpress.zip', ), 'wpforms' => array( 'slug' => 'wpforms-lite/wpforms.php', 'url' => 'https://downloads.wordpress.org/plugin/wpforms-lite.zip', ), 'optinmonster' => array( 'slug' => 'optinmonster/optin-monster-wp-api.php', 'url' => 'https://downloads.wordpress.org/plugin/optinmonster.zip', ), 'vibe-ai' => array( 'slug' => 'vibe-ai/vibe-ai.php', 'url' => 'https://downloads.wordpress.org/plugin/vibe-ai.zip', ), ); $options = get_option( 'seedprod_verify_wizard_options' ); $options = json_decode( $options ); // This allows us to do one at a time. if ( isset( $_POST['plugin'] ) ) { $plugin = sanitize_text_field( wp_unslash( $_POST['plugin'] ) ); $options = array( $plugin ); } $install_plugins = array(); $all_plugins = get_plugins(); // Purge options to make sure we don't install plugins with conflicts. if ( in_array( 'allinoneseo', $options, true ) ) { if ( isset( $all_plugins['all-in-one-seo-pack/all_in_one_seo_pack.php'] ) || isset( $all_plugins['all-in-one-seo-pack-pro/all_in_one_seo_pack.php'] ) || isset( $all_plugins['seo-by-rank-math/rank-math.php'] ) || isset( $all_plugins['wordpress-seo/wp-seo.php'] ) || isset( $all_plugins['wordpress-seo-premium/wp-seo-premium.php'] ) || isset( $all_plugins['autodescription/autodescription.php'] ) ) { $key = array_search( 'allinoneseo', $options, true ); if ( false !== $key ) { unset( $options[ $key ] ); } } } if ( in_array( 'rafflepress', $options, true ) ) { if ( isset( $all_plugins['rafflepress/rafflepress.php'] ) || isset( $all_plugins['rafflepress-pro/rafflepress-pro.php'] ) ) { $key = array_search( 'rafflepress', $options, true ); if ( false !== $key ) { unset( $options[ $key ] ); } } } if ( in_array( 'wpforms', $options, true ) ) { if ( isset( $all_plugins['wpforms-lite/wpforms.php'] ) || isset( $all_plugins['wpforms/wpforms.php'] ) ) { $key = array_search( 'wpforms', $options, true ); if ( false !== $key ) { unset( $options[ $key ] ); } } } if ( in_array( 'monsterinsights', $options, true ) ) { if ( isset( $all_plugins['google-analytics-for-wordpress/googleanalytics.php'] ) || isset( $all_plugins['google-analytics-premium/googleanalytics-premium.php'] ) ) { $key = array_search( 'monsterinsights', $options, true ); if ( false !== $key ) { unset( $options[ $key ] ); } } } // Install plugins. if ( ! empty( $options ) ) { foreach ( $options as $p ) { if ( ! empty( $paths_map[ $p ] ) ) { $plugin = $paths_map[ $p ]['slug']; $download_url = $paths_map[ $p ]['url']; global $hook_suffix; // Set the current screen to avoid undefined notices. set_current_screen(); // Prepare variables. $method = ''; $url = add_query_arg( array( 'page' => 'seedprod_lite', ), admin_url( 'admin.php' ) ); $url = esc_url( $url ); // Start output buffering to catch the filesystem form if credentials are needed. ob_start(); $creds = request_filesystem_credentials( $url, $method, false, false, null ); if ( false === $creds ) { wp_send_json_error(); } // If we are not authenticated, make it happen now. if ( ! WP_Filesystem( $creds ) ) { request_filesystem_credentials( $url, $method, true, false, null ); $form = ob_get_clean(); return; } // We do not need any extra credentials if we have gotten this far, so let's install the plugin. require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; // Check for skin files. global $wp_version; if ( version_compare( $wp_version, '5.3.0' ) >= 0 ) { $skin_file = plugin_dir_path( __DIR__ ) . 'includes/skin53.php'; } else { $skin_file = plugin_dir_path( __DIR__ ) . 'includes/skin.php'; } if ( file_exists( $skin_file ) ) { require_once $skin_file; } // Create the plugin upgrader with our custom skin. ob_start(); $installer = new Plugin_Upgrader( new SeedProd_Skin() ); $installer->install( $download_url ); $output = ob_get_clean(); // Flush the cache and return the newly installed plugin basename. wp_cache_flush(); if ( $installer->plugin_info() ) { $plugin_basename = $installer->plugin_info(); $install_plugins[] = $plugin_basename; } } } } // Activate plugins. foreach ( $install_plugins as $ip ) { activate_plugin( $ip, '', false, true ); } wp_send_json_success( $install_plugins ); } /** * Dismiss Setup Wizard (V2 Admin) * Sets option to prevent setup wizard from showing again * Called when user clicks "Exit Setup" on welcome page */ function seedprod_lite_v2_dismiss_setup_wizard() { // Verify nonce. check_ajax_referer( 'seedprod_v2_nonce' ); // Check capabilities. if ( ! current_user_can( 'manage_options' ) ) { wp_send_json_error( 'Insufficient permissions' ); } // Set the dismiss option. update_option( 'seedprod_dismiss_setup_wizard', 1 ); wp_send_json_success(); }
Upload Files
Cancel
Upload
Create New
Cancel
Create
Change Permissions
Cancel
Save
Change Date
Cancel
Save
Rename Item
Cancel
Save
Confirm Delete
Are you sure you want to delete the selected items?
Cancel
Delete