File "setup-wizard.php"
Full Path: /home/pumpbmko/public_html/wp-content/plugins/coming-soon/app/setup-wizard.php
File size: 12.08 KB
MIME-type: text/x-php
Charset: utf-8
<?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);
}