File: /home/prospack/public_html/wp-content/plugins/astra-sites/inc/lib/ai-builder/inc/traits/helper.php
<?php
/**
* Trait.
*
* @package {{package}}
* @since 0.0.1
*/
namespace AiBuilder\Inc\Traits;
use AiBuilder\Inc\Traits\Instance;
use STImporter\Resetter\ST_Resetter;
use STImporter\Importer\ST_Importer;
use AiBuilder\Inc\Classes\Importer\Ai_Builder_Error_Handler;
use STImporter\Importer\ST_Importer_File_System;
use AiBuilder\Inc\Classes\Ai_Builder_Importer_Log;
use STImporter\Importer\ST_Option_Importer;
/**
* Trait Instance.
*/
class Helper {
use Instance;
/**
* Get an option from the database.
*
* @param string $key The option key.
* @param mixed $default The option default value if option is not available.
* @param boolean $network_override Whether to allow the network admin setting to be overridden on subsites.
* @since 1.0.0
* @return mixed The option value.
*/
public static function get_admin_settings_option( $key, $default = false, $network_override = false ) {
// Get the site-wide option if we're in the network admin.
return $network_override && is_multisite() ? get_site_option( $key, $default ) : get_option( $key, $default );
}
/**
* Delete an option from the database for.
*
* @param string $key The option key.
* @param boolean $network_override Whether to allow the network admin setting to be overridden on subsites.
* @since 1.0.0
* @return void
*/
public static function delete_admin_settings_option( $key, $network_override = false ) {
// Delete the site-wide option if we're in the network admin.
if ( $network_override && is_multisite() ) {
delete_site_option( $key );
} else {
delete_option( $key );
}
}
/**
* Get image placeholder array.
*
* @since 4.0.9
* @return array<int, array<string, string>>
*/
public static function get_image_placeholders() {
return array(
array(
'auther_name' => 'Placeholder',
'auther_url' => '#',
'id' => 'placeholder-landscape',
'orientation' => 'landscape',
'optimized_url' => 'https://websitedemos.net/wp-content/uploads/2024/02/placeholder-landscape.png',
'url' => 'https://websitedemos.net/wp-content/uploads/2024/02/placeholder-landscape.png',
'engine' => 'placeholder',
'engine_url' => '#',
),
array(
'auther_name' => 'Placeholder',
'auther_url' => '#',
'id' => 'placeholder-portrait',
'orientation' => 'portrait',
'optimized_url' => 'https://websitedemos.net/wp-content/uploads/2024/02/placeholder-portrait.png',
'url' => 'https://websitedemos.net/wp-content/uploads/2024/02/placeholder-portrait.png',
'engine' => 'placeholder',
'engine_url' => '#',
),
);
}
/**
* Get Saved Token.
*
* @since 4.0.0
* @return string
*/
public static function get_token() {
$token_details = get_option(
'zip_ai_settings',
array(
'auth_token' => '',
'zip_token' => '',
'email' => '',
)
);
return is_array( $token_details ) && isset( $token_details['zip_token'] ) ? self::decrypt( $token_details['zip_token'] ) : '';
}
/**
* Decrypt data using base64.
*
* @param string $input The input string which needs to be decrypted.
* @since 4.0.0
* @return string The decrypted string.
*/
public static function decrypt( $input ) {
// If the input is empty or not a string, then abandon ship.
if ( empty( $input ) || ! is_string( $input ) ) {
return '';
}
// Decrypt the input and return it.
$base_64 = $input . str_repeat( '=', strlen( $input ) % 4 );
$decode = base64_decode( $base_64 ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_decode
return $decode;
}
/**
* Get installed PHP version.
*
* @return string PHP version.
* @since 3.0.16
*/
public static function get_php_version() {
if ( defined( 'PHP_MAJOR_VERSION' ) && defined( 'PHP_MINOR_VERSION' ) && defined( 'PHP_RELEASE_VERSION' ) ) { // phpcs:ignore
return PHP_MAJOR_VERSION . '.' . PHP_MINOR_VERSION . '.' . PHP_RELEASE_VERSION;
}
return phpversion();
}
/**
* Has Pro Version Support?
* And
* Is Pro Version Installed?
*
* Check Pro plugin version exist of requested plugin lite version.
*
* Eg. If plugin 'BB Lite Version' required to import demo. Then we check the 'BB Agency Version' is exist?
* If yes then we only 'Activate' Agency Version. [We couldn't install agency version.]
* Else we 'Activate' or 'Install' Lite Version.
*
* @since 1.0.1
*
* @param string $lite_version Lite version init file.
* @return mixed Return false if not installed or not supported by us
* else return 'Pro' version details.
*/
public static function pro_plugin_exist( $lite_version = '' ) {
// Lite init => Pro init.
$plugins = apply_filters(
'astra_sites_pro_plugin_exist',
array(
'beaver-builder-lite-version/fl-builder.php' => array(
'slug' => 'bb-plugin',
'init' => 'bb-plugin/fl-builder.php',
'name' => 'Beaver Builder Plugin',
),
'ultimate-addons-for-beaver-builder-lite/bb-ultimate-addon.php' => array(
'slug' => 'bb-ultimate-addon',
'init' => 'bb-ultimate-addon/bb-ultimate-addon.php',
'name' => 'Ultimate Addon for Beaver Builder',
),
'wpforms-lite/wpforms.php' => array(
'slug' => 'wpforms',
'init' => 'wpforms/wpforms.php',
'name' => 'WPForms',
),
),
$lite_version
);
if ( isset( $plugins[ $lite_version ] ) ) {
// Pro plugin directory exist?
if ( file_exists( WP_PLUGIN_DIR . '/' . $plugins[ $lite_version ]['init'] ) ) {
return $plugins[ $lite_version ];
}
}
return false;
}
/**
* Get the status of file system permission of "/wp-content/uploads" directory.
*
* @return void
*/
public static function filesystem_permission() {
if ( ! defined( 'WP_CLI' ) && wp_doing_ajax() ) {
check_ajax_referer( 'astra-sites', '_ajax_nonce' );
if ( ! current_user_can( 'customize' ) ) {
wp_send_json_error( __( 'You do not have permission to perform this action.', 'astra-sites' ) );
}
}
$wp_upload_path = wp_upload_dir();
$permissions = array(
'is_readable' => false,
'is_writable' => false,
);
foreach ( $permissions as $file_permission => $value ) {
$permissions[ $file_permission ] = $file_permission( $wp_upload_path['basedir'] );
}
$permissions['is_wp_filesystem'] = true;
if ( ! WP_Filesystem() ) {
$permissions['is_wp_filesystem'] = false;
}
if ( defined( 'WP_CLI' ) ) {
if ( ! $permissions['is_readable'] || ! $permissions['is_writable'] || ! $permissions['is_wp_filesystem'] ) {
\WP_CLI::error( esc_html__( 'Please contact the hosting service provider to help you update the permissions so that you can successfully import a complete template.', 'astra-sites' ) );
}
} else {
wp_send_json_success(
array(
'permissions' => $permissions,
'directory' => $wp_upload_path['basedir'],
)
);
}
}
/**
* Required Plugins
*
* @since 2.0.0
*
* @param array<int, array<string, string>> $required_plugins Required Plugins.
* @param array<string, mixed> $options Site Options.
* @param array<string, mixed> $enabled_extensions Enabled Extensions.
* @return mixed
*/
public static function required_plugins( $required_plugins = array(), $options = array(), $enabled_extensions = array() ) {
// Verify Nonce.
if ( ! defined( 'WP_CLI' ) && wp_doing_ajax() ) {
check_ajax_referer( 'astra-sites', '_ajax_nonce' );
if ( ! current_user_can( 'edit_posts' ) ) {
wp_send_json_error(
array(
'error' => __( 'Permission Denied!', 'astra-sites' ),
)
);
}
}
$response = array(
'active' => array(),
'inactive' => array(),
'notinstalled' => array(),
);
$id = isset( $_POST['id'] ) ? absint( $_POST['id'] ) : '';
$screen = isset( $_POST['screen'] ) ? sanitize_text_field( $_POST['screen'] ) : '';
if ( 'elementor' === $screen ) {
$imported_demo_data = get_option( 'astra_sites_import_elementor_data_' . $id, array() );
if ( isset( $imported_demo_data['type'] ) && 'astra-blocks' === $imported_demo_data['type'] ) { // @phpstan-ignore-line
// phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.serialize_unserialize
$plugins = unserialize( $imported_demo_data['post-meta']['astra-blocks-required-plugins'] ); // @phpstan-ignore-line
$required_plugins = false !== $plugins ? $plugins : array();
} else {
$required_plugins = isset( $imported_demo_data['site-pages-required-plugins'] ) ? $imported_demo_data['site-pages-required-plugins'] : array(); // @phpstan-ignore-line
}
} else {
$required_plugins = astra_get_site_data( 'required-plugins' );
}
if ( ! empty( $_POST['feature_plugins'] ) ) {
$feature_plugins = is_string( $_POST['feature_plugins'] ) ? json_decode( wp_unslash( $_POST['feature_plugins'] ), true ) : array();
if ( is_array( $feature_plugins ) && is_array( $required_plugins ) ) {
$required_plugins = array_merge( $required_plugins, $feature_plugins );
}
}
$data = self::get_required_plugins_data( $response, $required_plugins ); // @phpstan-ignore-line
if ( wp_doing_ajax() ) {
wp_send_json_success( $data );
} else {
return $data;
}
}
/**
* Retrieves the required plugins data based on the response and required plugin list.
*
* @param array<string, array<string, mixed>> $response The response containing the plugin data.
* @param array<int, array<string, string>> $required_plugins The list of required plugins.
* @since 3.2.5
* @return array<string, mixed> The array of required plugins data.
*/
public static function get_required_plugins_data( $response, $required_plugins ) {
$learndash_course_grid = 'https://www.learndash.com/add-on/course-grid/';
$learndash_woocommerce = 'https://www.learndash.com/add-on/woocommerce/';
if ( is_plugin_active( 'sfwd-lms/sfwd_lms.php' ) ) {
$learndash_addons_url = admin_url( 'admin.php?page=learndash_lms_addons' );
$learndash_course_grid = $learndash_addons_url;
$learndash_woocommerce = $learndash_addons_url;
}
$third_party_required_plugins = array();
$third_party_plugins = array(
'sfwd-lms' => array(
'init' => 'sfwd-lms/sfwd_lms.php',
'name' => 'LearnDash LMS',
'link' => 'https://www.learndash.com/',
),
'learndash-course-grid' => array(
'init' => 'learndash-course-grid/learndash_course_grid.php',
'name' => 'LearnDash Course Grid',
'link' => $learndash_course_grid,
),
'learndash-woocommerce' => array(
'init' => 'learndash-woocommerce/learndash_woocommerce.php',
'name' => 'LearnDash WooCommerce Integration',
'link' => $learndash_woocommerce,
),
);
$plugin_updates = get_plugin_updates();
$update_avilable_plugins = array();
$incompatible_plugins = array();
if ( ! empty( $required_plugins ) ) {
$php_version = Helper::get_php_version();
foreach ( $required_plugins as $key => $plugin ) {
$plugin = (array) $plugin;
if ( 'woocommerce' === $plugin['slug'] && version_compare( $php_version, '7.0', '<' ) ) {
$plugin['min_php_version'] = '7.0';
$incompatible_plugins[] = $plugin;
}
if ( 'presto-player' === $plugin['slug'] && version_compare( $php_version, '7.3', '<' ) ) {
$plugin['min_php_version'] = '7.3';
$incompatible_plugins[] = $plugin;
}
/**
* Has Pro Version Support?
* And
* Is Pro Version Installed?
*/
$plugin_pro = Helper::pro_plugin_exist( $plugin['init'] );
if ( is_array( $plugin_pro ) ) {
if ( array_key_exists( $plugin_pro['init'], $plugin_updates ) ) {
$update_avilable_plugins[] = $plugin_pro;
}
if ( ! is_array( $response ) ) {
$response = array();
}
// Pro - Active.
if ( is_plugin_active( $plugin_pro['init'] ) ) {
$response['active'][] = $plugin_pro;
self::after_plugin_activate( $plugin['init'] );
// Pro - Inactive.
} else {
$response['inactive'][] = $plugin_pro;
}
} else {
if ( array_key_exists( $plugin['init'], $plugin_updates ) ) {
$update_avilable_plugins[] = $plugin;
}
// Lite - Installed but Inactive.
if ( file_exists( WP_PLUGIN_DIR . '/' . $plugin['init'] ) && is_plugin_inactive( $plugin['init'] ) ) {
$link = wp_nonce_url(
add_query_arg(
array(
'action' => 'activate',
'plugin' => $plugin['init'],
),
admin_url( 'plugins.php' )
),
'activate-plugin_' . $plugin['init']
);
$link = str_replace( '&', '&', $link );
$plugin['action'] = $link;
$response['inactive'][] = $plugin;
// Lite - Not Installed.
} elseif ( ! file_exists( WP_PLUGIN_DIR . '/' . $plugin['init'] ) ) {
// Added premium plugins which need to install first.
if ( array_key_exists( $plugin['slug'], $third_party_plugins ) ) {
$third_party_required_plugins[] = $third_party_plugins[ $plugin['slug'] ];
} else {
$link = wp_nonce_url(
add_query_arg(
array(
'action' => 'install-plugin',
'plugin' => $plugin['slug'],
),
admin_url( 'update.php' )
),
'install-plugin_' . $plugin['slug']
);
$link = str_replace( '&', '&', $link );
$plugin['action'] = $link;
$response['notinstalled'][] = $plugin;
}
// Lite - Active.
} else {
$response['active'][] = $plugin;
self::after_plugin_activate( $plugin['init'] );
}
}
}
}
// Checking the `install_plugins` and `activate_plugins` capability for the current user.
// To perform plugin installation process.
if (
( ! defined( 'WP_CLI' ) && wp_doing_ajax() ) &&
( ( ! current_user_can( 'install_plugins' ) && ! empty( $response['notinstalled'] ) ) || ( ! current_user_can( 'activate_plugins' ) && ! empty( $response['inactive'] ) ) ) ) {
$message = __( 'Insufficient Permission. Please contact your Super Admin to allow the install required plugin permissions.', 'astra-sites' );
$required_plugins_list = array_merge( $response['notinstalled'], $response['inactive'] );
$markup = $message;
$markup .= '<ul>';
foreach ( $required_plugins_list as $key => $required_plugin ) {
$markup .= '<li>' . esc_html( $required_plugin['name'] ) . '</li>';
}
$markup .= '</ul>';
wp_send_json_error( $markup );
}
$data = array(
'required_plugins' => $response,
'third_party_required_plugins' => $third_party_required_plugins,
'update_avilable_plugins' => $update_avilable_plugins,
'incompatible_plugins' => $incompatible_plugins,
);
return $data;
}
/**
* After Plugin Activate
*
* @since 2.0.0
*
* @param string $plugin_init Plugin Init File.
* @param array<string, mixed> $options Site Options.
* @param array<string, mixed> $enabled_extensions Enabled Extensions.
* @return void
*/
public static function after_plugin_activate( $plugin_init = '', $options = array(), $enabled_extensions = array() ) {
$data = array(
'astra_site_options' => $options,
'enabled_extensions' => $enabled_extensions,
);
do_action( 'astra_sites_after_plugin_activation', $plugin_init, $data );
}
/**
* Required Plugin Activate
*
* @since 2.0.0 Added parameters $init, $options & $enabled_extensions to add the WP CLI support.
* @since 1.0.0
* @param string $init Plugin init file.
* @param array<string, mixed> $options Site options.
* @param array<string, mixed> $enabled_extensions Enabled extensions.
* @return void
*/
public static function required_plugin_activate( $init = '', $options = array(), $enabled_extensions = array() ) {
if ( ! defined( 'WP_CLI' ) && wp_doing_ajax() ) {
check_ajax_referer( 'astra-sites', '_ajax_nonce' );
if ( ! current_user_can( 'install_plugins' ) || ! isset( $_POST['init'] ) || ! sanitize_text_field( $_POST['init'] ) ) {
wp_send_json_error(
array(
'success' => false,
'message' => __( 'Error: You don\'t have the required permissions to install plugins.', 'astra-sites' ),
)
);
}
}
Ai_Builder_Error_Handler::Instance()->start_error_handler();
$plugin_init = ( isset( $_POST['init'] ) ) ? esc_attr( sanitize_text_field( $_POST['init'] ) ) : $init;
/**
* Disabled redirection to plugin page after activation.
* Silecing the callback for WP Live Chat plugin.
*/
add_filter( 'wp_redirect', '__return_false' );
$silent = ( 'wp-live-chat-support/wp-live-chat-support.php' === $plugin_init ) ? true : false;
$activate = activate_plugin( $plugin_init, '', false, $silent );
Ai_Builder_Error_Handler::Instance()->stop_error_handler();
if ( is_wp_error( $activate ) ) {
if ( defined( 'WP_CLI' ) ) {
\WP_CLI::error( 'Plugin Activation Error: ' . $activate->get_error_message() );
} elseif ( wp_doing_ajax() ) {
wp_send_json_error(
array(
'success' => false,
'message' => $activate->get_error_message(),
)
);
}
}
$options = (array) astra_get_site_data( 'astra-site-options-data' );
$enabled_extensions = (array) astra_get_site_data( 'astra-enabled-extensions' );
self::after_plugin_activate( $plugin_init, $options, $enabled_extensions );
if ( defined( 'WP_CLI' ) ) {
\WP_CLI::line( 'Plugin Activated!' );
} elseif ( wp_doing_ajax() ) {
wp_send_json_success(
array(
'success' => true,
'message' => __( 'Plugin Activated', 'astra-sites' ),
)
);
}
}
/**
* Backup our existing settings.
*
* @return void
*/
public static function backup_settings() {
if ( ! defined( 'WP_CLI' ) && wp_doing_ajax() ) {
check_ajax_referer( 'astra-sites', '_ajax_nonce' );
if ( ! current_user_can( 'manage_options' ) ) {
wp_send_json_error( __( 'User does not have permission!', 'astra-sites' ) );
}
}
if ( ! class_exists( 'STImporter\Resetter\ST_Resetter' ) ) {
wp_send_json_error( __( 'Required class not found.', 'astra-sites' ) );
}
$log_file_path = ST_Resetter::backup_settings();
if ( defined( 'WP_CLI' ) ) {
\WP_CLI::line( 'File generated at ' . $log_file_path );
} elseif ( wp_doing_ajax() ) {
wp_send_json_success();
}
}
/**
* Import Options.
*
* @since 1.0.14
* @since 1.4.0 The `$options_data` was added.
*
* @param array<string, mixed> $options_data Site Options.
* @return void
*/
public static function import_options( $options_data = array() ) {
if ( ! defined( 'WP_CLI' ) && wp_doing_ajax() ) {
// Verify Nonce.
check_ajax_referer( 'astra-sites', '_ajax_nonce' );
if ( ! current_user_can( 'customize' ) ) {
wp_send_json_error( __( 'You are not allowed to perform this action', 'astra-sites' ) );
}
}
if ( empty( $options_data ) ) {
$options_data = astra_get_site_data( 'astra-site-options-data' );
}
if ( ! class_exists( 'STImporter\Importer\ST_Importer' ) || ! class_exists( 'STImporter\Importer\ST_Option_Importer' ) ) {
wp_send_json_error( __( 'Required class not found.', 'astra-sites' ) );
}
$result = ST_Importer::import_options( $options_data );
if ( false === $result['status'] ) {
if ( defined( 'WP_CLI' ) ) {
\WP_CLI::line( $result['error'] );
} elseif ( wp_doing_ajax() ) {
wp_send_json_error( $result['error'] );
}
}
if ( defined( 'WP_CLI' ) ) {
\WP_CLI::line( 'Site options Imported!' );
} elseif ( wp_doing_ajax() ) {
wp_send_json_success( __( 'Site options Imported!', 'astra-sites' ) );
}
}
/**
* Import Widgets.
*
* @since 1.0.14
* @since 1.4.0 The `$widgets_data` was added.
*
* @param string $widgets_data Widgets Data.
* @return void
*/
public static function import_widgets( $widgets_data = '' ) {
if ( ! defined( 'WP_CLI' ) && wp_doing_ajax() ) {
// Verify Nonce.
check_ajax_referer( 'astra-sites', '_ajax_nonce' );
if ( ! current_user_can( 'customize' ) ) {
wp_send_json_error( __( 'You are not allowed to perform this action', 'astra-sites' ) );
}
}
$data = astra_get_site_data( 'astra-site-widgets-data' );
if ( ! class_exists( 'STImporter\Importer\ST_Importer' ) ) {
wp_send_json_error( __( 'Required class not found.', 'astra-sites' ) );
}
$result = ST_Importer::import_widgets( $widgets_data, $data );
if ( false === $result['status'] ) {
if ( defined( 'WP_CLI' ) ) {
\WP_CLI::line( $result['error'] );
} elseif ( wp_doing_ajax() ) {
wp_send_json_error( $result['error'] );
}
} else {
if ( defined( 'WP_CLI' ) ) {
\WP_CLI::line( 'Widget Imported!' );
} elseif ( wp_doing_ajax() ) {
wp_send_json_success( 'Widget Imported!' );
}
}
}
/**
* Import End.
*
* @since 1.0.14
* @return void
*/
public static function import_end() {
if ( ! defined( 'WP_CLI' ) && wp_doing_ajax() ) {
// Verify Nonce.
check_ajax_referer( 'astra-sites', '_ajax_nonce' );
if ( ! current_user_can( 'customize' ) ) {
wp_send_json_error( __( 'You are not allowed to perform this action', 'astra-sites' ) );
}
}
if ( ! class_exists( 'STImporter\Importer\ST_Importer_File_System' ) ) {
wp_send_json_error( __( 'Required class not found.', 'astra-sites' ) );
}
$demo_data = ST_Importer_File_System::get_instance()->get_demo_content();
// Set permalink structure to use post name.
update_option( 'permalink_structure', '/%postname%/' );
update_option( 'astra-site-permalink-update-status', 'no' );
do_action( 'astra_sites_import_complete', $demo_data );
if ( wp_doing_ajax() ) {
wp_send_json_success();
}
}
/**
* Reset customizer data
*
* @since 1.3.0
* @return void
*/
public static function reset_customizer_data() {
if ( ! defined( 'WP_CLI' ) && wp_doing_ajax() ) {
// Verify Nonce.
check_ajax_referer( 'astra-sites', '_ajax_nonce' );
if ( ! current_user_can( 'customize' ) ) {
wp_send_json_error( __( 'You are not allowed to perform this action', 'astra-sites' ) );
}
}
Ai_Builder_Importer_Log::add( 'Deleted customizer Settings ' . wp_json_encode( get_option( 'astra-settings', array() ) ) );
if ( ! class_exists( 'STImporter\Resetter\ST_Resetter' ) ) {
wp_send_json_error( __( 'Required class not found.', 'astra-sites' ) );
}
ST_Resetter::reset_customizer_data();
if ( defined( 'WP_CLI' ) ) {
\WP_CLI::line( 'Deleted Customizer Settings!' );
} elseif ( wp_doing_ajax() ) {
wp_send_json_success();
}
}
/**
* Reset site options
*
* @since 1.3.0
* @return void
*/
public static function reset_site_options() {
if ( ! defined( 'WP_CLI' ) && wp_doing_ajax() ) {
// Verify Nonce.
check_ajax_referer( 'astra-sites', '_ajax_nonce' );
if ( ! current_user_can( 'customize' ) ) {
wp_send_json_error( __( 'You are not allowed to perform this action', 'astra-sites' ) );
}
}
$options = get_option( '_astra_sites_old_site_options', array() );
Ai_Builder_Importer_Log::add( 'Deleted - Site Options ' . wp_json_encode( $options ) );
if ( ! class_exists( 'STImporter\Resetter\ST_Resetter' ) ) {
wp_send_json_error( __( 'Required class not found.', 'astra-sites' ) );
}
ST_Resetter::reset_site_options( $options );
if ( defined( 'WP_CLI' ) ) {
\WP_CLI::line( 'Deleted Site Options!' );
} elseif ( wp_doing_ajax() ) {
wp_send_json_success();
}
}
/**
* Reset widgets data
*
* @since 1.3.0
* @return void
*/
public static function reset_widgets_data() {
if ( ! defined( 'WP_CLI' ) && wp_doing_ajax() ) {
// Verify Nonce.
check_ajax_referer( 'astra-sites', '_ajax_nonce' );
if ( ! current_user_can( 'customize' ) ) {
wp_send_json_error( __( 'You are not allowed to perform this action', 'astra-sites' ) );
}
}
// Get all old widget ids.
$old_widgets_data = (array) get_option( '_astra_sites_old_widgets_data', array() );
if ( ! class_exists( 'STImporter\Resetter\ST_Resetter' ) ) {
wp_send_json_error( __( 'Required class not found.', 'astra-sites' ) );
}
ST_Resetter::reset_widgets_data( $old_widgets_data );
if ( defined( 'WP_CLI' ) ) {
\WP_CLI::line( 'Deleted Widgets!' );
} elseif ( wp_doing_ajax() ) {
wp_send_json_success( __( 'Deleted Widgets!', 'astra-sites' ) );
}
}
/**
* Import Customizer Settings.
*
* @since 1.0.14
* @since 1.4.0 The `$customizer_data` was added.
*
* @param array<string, mixed> $customizer_data Customizer Data.
* @return void
*/
public static function import_customizer_settings( $customizer_data = array() ) {
if ( ! defined( 'WP_CLI' ) && wp_doing_ajax() ) {
// Verify Nonce.
check_ajax_referer( 'astra-sites', '_ajax_nonce' );
if ( ! current_user_can( 'customize' ) ) {
wp_send_json_error( __( 'You are not allowed to perform this action', 'astra-sites' ) );
}
}
if ( empty( $customizer_data ) ) {
$customizer_data = astra_get_site_data( 'astra-site-customizer-data' );
}
if ( defined( 'WP_CLI' ) && empty( $customizer_data ) ) {
\WP_CLI::line( 'Customizer data is empty!' );
} elseif ( wp_doing_ajax() && empty( $customizer_data ) ) {
wp_send_json_error( __( 'Customizer data is empty!', 'astra-sites' ) );
}
if ( ! class_exists( 'STImporter\Importer\ST_Importer' ) ) {
wp_send_json_error( __( 'Required class not found.', 'astra-sites' ) );
}
$result = ST_Importer::import_customizer_settings( $customizer_data );
if ( false === $result['status'] ) {
wp_send_json_error( $result['error'] );
}
wp_send_json_success();
}
}