← Back
Editing: setup-wizard.php
<?php /** * Complete Setup Wizard */ function seedprod_lite_complete_setup_wizard() { if ( check_ajax_referer( 'seedprod_lite_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'] ) ? 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 ); // manually install code if error. if ( is_wp_error( $response ) ) { $response = array( 'status' => 'false', 'ip' => seedprod_lite_get_ip(), 'msg' => $response->get_error_message(), ); wp_send_json( $response ); } if ( 200 !== $status_code ) { $response = array( 'status' => 'false', 'ip' => seedprod_lite_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 ); // 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; } // create a landoing page. if ( $type == 'lp' || $type == 'cs' || $type == 'mm' || $type == 'p404' || $type == 'loginp' ) { // install themplate. $cpt = 'page'; // seedprod ctp types. $cpt_types = array( 'cs', 'mm', 'p404', 'header', 'footer', 'part', 'page', ); if ( in_array( $type, $cpt_types ) ) { $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; // slug. 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 ); } $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 ); if ( 99999 != $onboarding->template_id ) { unset( $basic_settings['document'] ); if ( is_array( $code ) ) { $new_settings = $basic_settings + $code; } } $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' => wp_json_encode( $new_settings ), 'meta_input' => array( '_seedprod_page' => true, '_seedprod_page_uuid' => wp_generate_uuid4(), '_seedprod_page_template_type' => $type, ), ), true ); // update pointer. // record coming soon page_id. 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 ( $type == 'websitebuilder' || $type == 'woocommerce' ) { $template_id = $onboarding->template_id; seedprod_lite_theme_import( $template_id ); } // install plugins. $reponse = array( 'status' => 'true', 'type' => $type, 'id' => $id, 'options' => $onboarding->options, ); wp_send_json_success( $reponse ); } } // Install Plugins Request During Setup. // function seedprod_lite_complete_setup_wizard_plugins(){ // if( !empty( $_GET['site_token'] ) ){ // $site_token = get_option( 'seedprod_token' ); // if( $_GET['site_token'] == $site_token ){ // if ( !empty( $_GET['seedprod_verify'] ) ) { // $seedprod_verify = json_decode( wp_unslash( urldecode( $_GET['seedprod_verify'] ) ) ); // if we get here see what plugins the user wants to install. // $paths_map = array( // 'rafflepress' => 'rafflepress/rafflepress.php', // 'allinoneseo' => 'all-in-one-seo-pack/all_in_one_seo_pack.php', // 'ga' => 'google-analytics-for-wordpress/googleanalytics.php', // 'wpforms' => 'wpforms-lite/wpforms.php', // 'optinmonster' => 'optinmonster/optin-monster-wp-api.php', // ); // $options = get_option('seedprod_verify_wizard_options'); // if ( ! empty( $options ) ) { // $options = json_decode( $options ); // foreach($options as $p){ // if(in_array($p,$seedprod_verify)){ // if(!empty($paths_map[$p])){ // $plugin = $paths_map[$p]; // error_log($plugin); // } // } // } // } // exit(); // } // } // } // } // add_action( 'init', 'seedprod_lite_complete_setup_wizard_plugins' ); function seedprod_lite_install_addon_setup() { // Run a security check. check_ajax_referer( 'seedprod_lite_install_addon_setup', 'nonce' ); // Check for permissions. if ( ! current_user_can( 'install_plugins' ) ) { wp_send_json_error(); } // if we get here see what plugins the user wants to install. $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', ), ); $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 plugin with conflicts. if ( in_array( 'allinoneseo', $options ) ) { 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'] ) ) { if ( ( $key = array_search( 'allinoneseo', $options ) ) !== false ) { unset( $options[ $key ] ); } } } if ( in_array( 'rafflepress', $options ) ) { if ( isset( $all_plugins['rafflepress/rafflepress.php'] ) || isset( $all_plugins['rafflepress-pro/rafflepress-pro.php'] ) ) { if ( ( $key = array_search( 'rafflepress', $options ) ) !== false ) { unset( $options[ $key ] ); } } } if ( in_array( 'wpforms', $options ) ) { if ( isset( $all_plugins['wpforms-lite/wpforms.php'] ) || isset( $all_plugins['wpforms/wpforms.php'] ) ) { if ( ( $key = array_search( 'wpforms', $options ) ) !== false ) { unset( $options[ $key ] ); } } } if ( in_array( 'monsterinsights', $options ) ) { if ( isset( $all_plugins['google-analytics-for-wordpress/googleanalytics.php'] ) || isset( $all_plugins['google-analytics-premium/googleanalytics-premium.php'] ) ) { if ( ( $key = array_search( 'monsterinsights', $options ) ) !== false ) { 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 bufferring to catch the filesystem form if credentials are needed. $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'; global $wp_version; if ( version_compare( $wp_version, '5.3.0' ) >= 0 ) { require_once SEEDPROD_PLUGIN_PATH . 'app/includes/skin53.php'; } else { require_once SEEDPROD_PLUGIN_PATH . 'app/includes/skin.php'; } // 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 ); }
Save File
Cancel