parent();
if ( empty( $parent ) ) {
$theme_name = $themes->get( 'Name' );
} else {
$theme_name = $themes->parent()->get( 'Name' );
}
if ( $theme_name === $template_theme ) {
// Theme / Parent theme is active, hence display menu.
return true;
}
// don't display menu if theme/parent theme does not need extension installer.
return false;
} elseif ( false === $is_theme && '' !== $template_plugin ) {
include_once ABSPATH . 'wp-admin/includes/plugin.php';
if ( is_plugin_active( $template_plugin ) || is_plugin_active_for_network( $template_plugin ) ) {
// Plugin is active, hence display menu.
return true;
}
// don't display menu if plugin does not need extension installer.
return false;
}
}
// do not register menu if all conditions fail.
return false;
}
}
if ( ! function_exists( 'register_bsf_extension_page_network' ) ) {
/**
* Register BSF extension page Network
*/
function register_bsf_extension_page_network() {
$themes = wp_get_themes( array( 'allowed' => 'network' ) );
$parent_slug = 'bsf-registration';
if ( defined( 'BSF_REG_MENU_TO_SETTINGS' ) && ( BSF_REG_MENU_TO_SETTINGS === true || BSF_REG_MENU_TO_SETTINGS === 'true' ) ) {
$parent_slug = 'settings.php';
}
foreach ( $themes as $theme ) {
if ( 'iMedica' === $theme->Name ) { // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase
add_submenu_page( $parent_slug, __( 'iMedica Extensions', 'bsf' ), __( 'iMedica Extensions', 'bsf' ), 'manage_options', 'bsf-extensions-10395942', 'bsf_extensions_callback' );
break;
}
}
}
}
if ( ! function_exists( 'bsf_extensions_callback' ) ) {
/**
* BSF extensions callback
*/
function bsf_extensions_callback() {
include_once 'plugin-installer/index.php';
}
}
if ( ! function_exists( 'bsf_extract_product_id' ) ) {
/**
* BSF extract Product ID.
*
* @param string $path Path.
*/
function bsf_extract_product_id( $path ) {
$id = false;
$file = rtrim( $path, '/' ) . '/admin/bsf.yml';
$file_fallback = rtrim( $path, '/' ) . '/bsf.yml';
if ( is_file( $file ) ) {
$file = $file;
} elseif ( is_file( $file_fallback ) ) {
$file = $file_fallback;
} else {
return apply_filters( 'bsf_extract_product_id', $id, $path );
}
// Use of file_get_contents() - https://github.com/WordPress/WordPress-Coding-Standards/pull/1374/files#diff-400e43bc09c24262b43f26fce487fdabR43-R52.
$filelines = file_get_contents( $file ); // phpcs:ignore WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents -- Reading local file is OK.
if ( stripos( $filelines, 'ID:[' ) !== false ) {
preg_match_all( '/ID:\[(.*?)\]/', $filelines, $matches );
if ( isset( $matches[1] ) ) {
$id = ( isset( $matches[1][0] ) ) ? $matches[1][0] : '';
}
}
return apply_filters( 'bsf_extract_product_id', $id, $path );
}
}
if ( ! function_exists( 'init_bsf_core' ) ) {
/**
* Init BSF Core
*/
function init_bsf_core() {
$plugins = get_plugins();
$themes = wp_get_themes();
$theme_directories = search_theme_directories();
$bsf_products = array();
$bsf_authors = apply_filters(
'bsf_authors_list',
array(
'Brainstorm Force',
)
);
foreach ( $plugins as $plugin => $plugin_data ) {
if ( in_array( trim( $plugin_data['Author'] ), $bsf_authors, true ) ) {
$plugin_data['type'] = 'plugin';
$plugin_data['template'] = $plugin;
$plugin_data['path'] = dirname( realpath( WP_PLUGIN_DIR . '/' . $plugin ) );
$id = bsf_extract_product_id( $plugin_data['path'] );
if ( false !== $id ) {
$plugin_data['id'] = $id;
} // without readme.txt filename
array_push( $bsf_products, $plugin_data );
}
}
foreach ( $themes as $theme => $theme_data ) {
$temp = array();
$theme_author = trim( $theme_data->display( 'Author', false ) );
if ( 'Brainstorm Force' === $theme_author ) {
$temp['Name'] = $theme_data->get( 'Name' );
$temp['ThemeURI'] = $theme_data->get( 'ThemeURI' );
$temp['Description'] = $theme_data->get( 'Description' );
$temp['Author'] = $theme_data->get( 'Author' );
$temp['AuthorURI'] = $theme_data->get( 'AuthorURI' );
$temp['Version'] = $theme_data->get( 'Version' );
$temp['type'] = 'theme';
$temp['template'] = $theme;
$temp['path'] = realpath( get_theme_root() . '/' . $theme );
$id = bsf_extract_product_id( $temp['path'] );
if ( false !== $id ) {
$temp['id'] = $id;
} // without readme.txt filename
array_push( $bsf_products, $temp );
}
}
$brainstrom_products = get_option( 'brainstrom_products', array() );
$bundled_products = get_option( 'brainstrom_bundled_products', array() );
if ( ! empty( $brainstrom_products ) ) {
if ( isset( $brainstrom_products['plugins'] ) ) {
foreach ( $brainstrom_products['plugins'] as $key => $value ) {
if ( ! array_key_exists( $value['template'], $plugins ) ) {
unset( $brainstrom_products['plugins'][ $key ] );
}
}
}
if ( isset( $brainstrom_products['themes'] ) ) {
foreach ( $brainstrom_products['themes'] as $key => $value ) {
if ( ! array_key_exists( $value['template'], $theme_directories ) ) {
unset( $brainstrom_products['themes'][ $key ] );
}
}
}
}
// Update newly added brainstorm_products.
if ( ! empty( $bsf_products ) ) {
foreach ( $bsf_products as $key => $product ) {
if ( ! ( isset( $product['id'] ) ) || '' === $product['id'] ) {
continue;
}
if ( isset( $brainstrom_products[ $product['type'] . 's' ][ $product['id'] ] ) ) {
$bsf_product_info = $brainstrom_products[ $product['type'] . 's' ][ $product['id'] ];
} else {
$bsf_product_info = array();
do_action( 'brainstorm_updater_new_product_added' );
}
$bsf_product_info['template'] = $product['template'];
$bsf_product_info['type'] = $product['type'];
$bsf_product_info['id'] = $product['id'];
$brainstrom_products[ $product['type'] . 's' ][ $product['id'] ] = $bsf_product_info;
}
}
// Update bundled products.
foreach ( $bundled_products as $key => $product ) {
$bsf_product = get_brainstorm_product( $key );
if ( empty( $bsf_product ) ) {
unset( $bundled_products[ $key ] );
}
}
update_option( 'brainstrom_products', $brainstrom_products );
update_option( 'brainstrom_bundled_products', $bundled_products );
}
}
add_action( 'admin_init', 'init_bsf_core' );
// assets.
add_action( 'admin_enqueue_scripts', 'register_bsf_core_admin_styles', 1 );
if ( ! function_exists( 'register_bsf_core_admin_styles' ) ) {
/**
* Register BSF Core Admin Styles
*
* @param string $hook Hook.
*/
function register_bsf_core_admin_styles( $hook ) {
// bsf core style.
$hook_array = array(
'toplevel_page_bsf-registration',
'update-core.php',
'dashboard_page_bsf-registration',
'index_page_bsf-registration',
'admin_page_bsf-extensions',
'settings_page_bsf-registration',
'admin_page_bsf-registration',
'plugins.php',
'imedica_page_product-license',
);
$hook_array = apply_filters( 'bsf_core_style_screens', $hook_array );
if ( in_array( $hook, $hook_array, true ) || strpos( $hook, 'bsf-extensions' ) !== false ) {
$envato_activation_nonce = wp_create_nonce( 'envato_activation_nonce' );
wp_register_style( 'bsf-core-admin', bsf_core_url( '/assets/css/style.css' ), array(), BSF_UPDATER_VERSION );
wp_enqueue_style( 'bsf-core-admin' );
wp_register_style( 'brainstorm-switch', bsf_core_url( '/assets/css/switch.css' ), array(), BSF_UPDATER_VERSION );
wp_enqueue_style( 'brainstorm-switch' );
wp_register_script( 'brainstorm-switch', bsf_core_url( '/assets/js/switch.js' ), array( 'jquery' ), BSF_UPDATER_VERSION, true );
wp_enqueue_script( 'brainstorm-switch' );
wp_register_script( 'bsf-core', bsf_core_url( '/assets/js/bsf-core.js' ), array( 'jquery' ), BSF_UPDATER_VERSION, true );
wp_localize_script( 'bsf-core', 'bsf_core', array( 'envato_activation_nonce' => $envato_activation_nonce ) );
wp_enqueue_script( 'bsf-core' );
}
// frosty script.
$hook_frosty_array = array();
$hook_frosty_array = apply_filters( 'bsf_core_frosty_screens', $hook_frosty_array );
if ( in_array( $hook, $hook_frosty_array, true ) ) {
wp_register_script( 'bsf-core-frosty', bsf_core_url( '/assets/js/frosty.js' ), array(), BSF_UPDATER_VERSION, false );
wp_enqueue_script( 'bsf-core-frosty' );
wp_register_style( 'bsf-core-frosty-style', bsf_core_url( '/assets/css/frosty.css' ), array(), BSF_UPDATER_VERSION );
wp_enqueue_style( 'bsf-core-frosty-style' );
}
}
}
if ( is_multisite() ) {
add_action( 'admin_print_scripts', 'print_bsf_styles' );
if ( ! function_exists( 'print_bsf_styles' ) ) {
/**
* Print BSF styles.
*/
function print_bsf_styles() {
$path = bsf_core_url( '/assets/fonts' );
echo "";
}
}
}
if ( ! function_exists( 'bsf_flush_bundled_products' ) ) {
/**
* BSF flush Bundled products.
*/
function bsf_flush_bundled_products() {
$bsf_force_check_extensions = (bool) get_site_option( 'bsf_force_check_extensions', false );
if ( $bsf_force_check_extensions ) {
delete_site_option( 'brainstrom_bundled_products' );
global $ultimate_referer;
if ( empty( $ultimate_referer ) ) {
$ultimate_referer = 'on-flush-bundled-products';
}
get_bundled_plugins();
update_site_option( 'bsf_force_check_extensions', false );
}
}
}
add_action( 'bsf_after_plugin_installer', 'bsf_flush_bundled_products' );
add_action( 'deleted_plugin', 'bsf_flush_bundled_products' );
/**
* Return array of bundled plugins for a specific
*
* @since Graupi 1.9
*/
if ( ! function_exists( 'bsf_bundled_plugins' ) ) {
/**
* BSF bundled plugins.
*
* @param int $product_id Product ID.
*/
function bsf_bundled_plugins( $product_id = '' ) {
$products = array();
$brainstrom_bundled_products = get_option( 'brainstrom_bundled_products', '' );
if ( '' !== $brainstrom_bundled_products ) {
if ( array_key_exists( $product_id, $brainstrom_bundled_products ) ) {
$products = $brainstrom_bundled_products[ $product_id ];
}
}
return $products;
}
}
/**
* Get product name from product ID
*
* @since Graupi 1.9
*/
if ( ! function_exists( 'brainstrom_product_name' ) ) {
/**
* Brainstorm product name.
*
* @param int $product_id Product ID.
*/
function brainstrom_product_name( $product_id = '' ) {
$product_name = '';
$brainstrom_products = get_option( 'brainstrom_products', array() );
foreach ( $brainstrom_products as $key => $value ) {
foreach ( $value as $key => $product ) {
if ( $product_id === $key ) {
$product_name = isset( $product['product_name'] ) ? $product['product_name'] : '';
}
}
}
return $product_name;
}
}
/**
* Get product id from product name
*
* @since Graupi 1.19
*/
if ( ! function_exists( 'brainstrom_product_id_by_name' ) ) {
/**
* Brainstorm product ID by name.
*
* @param int $product_name Product name.
*/
function brainstrom_product_id_by_name( $product_name ) {
$product_id = '';
$brainstrom_products = get_option( 'brainstrom_products', array() );
foreach ( $brainstrom_products as $key => $value ) {
foreach ( $value as $key => $product ) {
if ( isset( $product['product_name'] ) && strcasecmp( $product['product_name'], $product_name ) === 0 ) {
$product_id = isset( $product['id'] ) ? $product['id'] : '';
}
}
}
return $product_id;
}
}
if ( ! function_exists( 'brainstrom_product_id_by_init' ) ) {
/**
* BrainstormProduct Id by init.
*
* @param string $plugin_init Plugin init.
*/
function brainstrom_product_id_by_init( $plugin_init ) {
$brainstrom_products = get_option( 'brainstrom_products', array() );
$brainstorm_plugins = isset( $brainstrom_products['plugins'] ) ? $brainstrom_products['plugins'] : array();
$brainstorm_themes = isset( $brainstrom_products['themes'] ) ? $brainstrom_products['themes'] : array();
$all_products = $brainstorm_plugins + $brainstorm_themes;
foreach ( $all_products as $key => $product ) {
$template = isset( $product['template'] ) ? $product['template'] : '';
if ( $plugin_init === $template ) {
return isset( $product['id'] ) ? $product['id'] : false;
}
}
}
}
/**
* Dismiss Extension installer nag
*
* @since Graupi 1.9
*/
if ( ! function_exists( 'bsf_dismiss_extension_nag' ) ) {
/**
* BSF dismiss extension nag.
*/
function bsf_dismiss_extension_nag() {
if ( isset( $_REQUEST['bsf-extension-nag-nonce'] ) && wp_verify_nonce( $_REQUEST['bsf-extension-nag-nonce'], 'bsf-extension-nag' ) && isset( $_GET['bsf-dismiss-notice'] ) ) {
$product_id = sanitize_text_field( $_GET['bsf-dismiss-notice'] );
update_user_meta( get_current_user_id(), $product_id . '-bsf_nag_dismiss', true );
}
}
}
add_action( 'admin_head', 'bsf_dismiss_extension_nag' );
// For debugging uncomment line below and remove query var &bsf-dismiss-notice from url and nag will be restored.
// delete_user_meta( get_current_user_id(), 'bsf-next-bsf_nag_dismiss');.
/*
* Load BSF core frosty scripts on front end
*/
add_action( 'wp_enqueue_scripts', 'register_bsf_core_styles', 1 );
/**
* Register BSF Core styles
*
* @param string $hook Hook.
*/
function register_bsf_core_styles( $hook ) {
// Register Frosty script and style.
wp_register_script( 'bsf-core-frosty', bsf_core_url( '/assets/js/frosty.js' ), array(), BSF_UPDATER_VERSION, false );
wp_register_style( 'bsf-core-frosty-style', bsf_core_url( '/assets/css/frosty.css' ), array(), BSF_UPDATER_VERSION );
}
/**
* Add link to debug settings for braisntorm updater on license registration page
*/
if ( ! function_exists( 'bsf_core_debug_link' ) ) {
/**
* Register BSF Core styles
*
* @param string $text Text.
*/
function bsf_core_debug_link( $text ) {
$screen = get_current_screen();
$screens = array(
'dashboard_page_bsf-registration',
'toplevel_page_bsf-registration-network',
'settings_page_bsf-registration',
'settings_page_bsf-registration-network',
);
$screens = apply_filters( 'bsf_core_debug_link_screens', $screens );
if ( ! in_array( $screen->id, $screens, true ) ) {
return $text;
}
$url = bsf_registration_page_url( '&author' );
$link = '' . BSF_UPDATER_SHORTNAME . ' Updater debug settings';
$text = $link . ' | ' . $text;
return $text;
}
}
add_filter( 'update_footer', 'bsf_core_debug_link', 999 );
/**
* Return brainstorm registration page URL
*
* @param $append (string) - Append at string at the end of the url
*/
if ( ! function_exists( 'bsf_registration_page_url' ) ) {
/**
* BSF Registration Page URL
*
* @param string $append Append.
* @param int $product_id Product ID.
*/
function bsf_registration_page_url( $append = '', $product_id = '' ) {
$bsf_updater_options = get_option( 'bsf_updater_options', array() );
$option = false;
$constant = false;
$skip_brainstorm_menu = get_site_option( 'bsf_skip_braisntorm_menu', false );
$product_registration_link = apply_filters( "bsf_registration_page_url_{$product_id}", '' );
// If Brainstorm meu is not registered.
if ( ( defined( 'BSF_UNREG_MENU' ) && ( BSF_UNREG_MENU === true || BSF_UNREG_MENU === 'true' ) ) ||
true === $skip_brainstorm_menu
) {
if ( '&author' === $append ) {
return admin_url( 'options.php?page=bsf-registration' . $append );
}
}
if ( isset( $bsf_updater_options['brainstorm_menu'] ) && '1' === $bsf_updater_options['brainstorm_menu'] ) {
$option = true;
}
if ( defined( 'BSF_REG_MENU_TO_SETTINGS' ) && 'BSF_REG_MENU_TO_SETTINGS' === true || 'BSF_REG_MENU_TO_SETTINGS' === 'true' ) {
$constant = true;
}
if ( '' !== $product_registration_link ) {
return $product_registration_link . '' . $append;
} else {
if ( true === $option || true === $constant ) {
// bsf menu in settings.
if ( is_multisite() ) {
return network_admin_url( 'settings.php?page=bsf-registration' . $append );
} else {
return admin_url( 'options-general.php?page=bsf-registration' . $append );
}
} else {
if ( is_multisite() ) {
return network_admin_url( 'admin.php?page=bsf-registration' . $append );
} else {
return admin_url( 'index.php?page=bsf-registration' . $append );
}
}
}
}
}
/**
* Return extension installer page URL
*/
if ( ! function_exists( 'bsf_exension_installer_url' ) ) {
/**
* BSF extension installer URL
*
* @param int $priduct_id Product ID.
* @return string URL.
*/
function bsf_exension_installer_url( $priduct_id ) {
if ( is_multisite() ) {
if ( defined( 'BSF_REG_MENU_TO_SETTINGS' ) && ( BSF_REG_MENU_TO_SETTINGS === true || BSF_REG_MENU_TO_SETTINGS === 'true' ) ) {
return network_admin_url( 'settings.php?page=bsf-extensions-' . $priduct_id );
} else {
return network_admin_url( 'admin.php?page=bsf-extensions-' . $priduct_id );
}
} else {
return admin_url( 'admin.php?page=bsf-extensions-' . $priduct_id );
}
}
}
if ( ! function_exists( 'bsf_set_options' ) ) {
/**
* Set options based on reading $_GET parameters and $_POST parameters
*
* 1. force Check updates
* 2. Skip Brainstorm Account Registration
* 3. Reset Brainstorm Registration data
*/
function bsf_set_options() {
// Force check updates.
if ( isset( $_GET['force-check-update'] ) || isset( $_GET['force-check'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
global $pagenow;
global $ultimate_referer;
if ( 'update-core.php' === $pagenow && '1' === $_GET['force-check'] ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
$ultimate_referer = 'on-force-check-update-update-core';
} else {
$ultimate_referer = 'on-force-check-update';
}
bsf_check_product_update();
update_option( 'bsf_last_update_check', current_time( 'timestamp' ) );
}
// Skip Author registration.
$skip_author_products = apply_filters( 'bsf_skip_author_registration', $products = array() );
$ids = array();
$skip_author_option = get_site_option( 'bsf_skip_author', false );
$brainstorm_products = bsf_get_brainstorm_products( true );
foreach ( $brainstorm_products as $key => $product ) {
if ( isset( $product['id'] ) && ! in_array( $product['id'], $skip_author_products, true ) ) {
$ids[] = $product['id'];
}
}
if ( isset( $_REQUEST['bsf-skip-author-nonce'] ) && wp_verify_nonce( $_REQUEST['bsf-skip-author-nonce'], 'bsf-skip-author' ) && isset( $_GET['bsf-skip-author'] ) || empty( $ids ) && '' === $skip_author_option ) {
update_site_option( 'bsf_skip_author', true );
} elseif ( ! empty( $ids ) && '1' === $skip_author_option ) {
update_site_option( 'bsf_skip_author', false );
}
// Skip Brainstorm Menu.
$default_skip_brainstorm_menu = array(
'uabb',
'convertpro',
'astra-addon',
'astra-pro-sites',
'wp-schema-pro',
'6892199', // UAVC.
'10395942', // iMedica.
'14058953', // Convert Plus.
'5159016', // Baslider.
'imedica-mu-companion',
'astra-sites-showcase',
'uael',
'brainstorm-updater',
'astra-portfolio',
'7155037', // VC Modal Popups.
'astra',
);
$skip_brainstorm_menu_products = apply_filters( 'bsf_skip_braisntorm_menu', $default_skip_brainstorm_menu );
$ids = array();
$skip_brainstorm_menu = get_site_option( 'bsf_skip_braisntorm_menu', false );
foreach ( $brainstorm_products as $key => $product ) {
if ( isset( $product['id'] ) && ! in_array( $product['id'], $skip_brainstorm_menu_products, true ) ) {
$ids[] = $product['id'];
}
}
if ( empty( $ids ) && '' === $skip_brainstorm_menu ) {
update_site_option( 'bsf_skip_braisntorm_menu', true );
} elseif ( ! empty( $ids ) && '1' === $skip_brainstorm_menu ) {
update_site_option( 'bsf_skip_braisntorm_menu', false );
}
// Reset Brainstorm Registration.
if ( isset( $_GET['reset-bsf-users'] ) ) {
delete_option( 'brainstrom_users' );
delete_option( 'brainstrom_products' );
delete_option( 'brainstrom_bundled_products' );
delete_site_option( 'bsf_skip_author' );
}
// Reset Bundled products.
if ( isset( $_GET['remove-bundled-products'] ) ) {
global $ultimate_referer;
$ultimate_referer = 'on-refresh-bundled-products';
delete_option( 'brainstrom_bundled_products' );
get_bundled_plugins();
$redirect = isset( $_GET['redirect'] ) ? esc_url_raw( urldecode( esc_attr( $_GET['redirect'] ) ) ) : '';
if ( '' !== $redirect && filter_var( $redirect, FILTER_VALIDATE_URL ) ) {
$redirect = add_query_arg( 'bsf-reload-page', '', $redirect );
wp_safe_redirect( $redirect );
exit;
}
}
}
}
add_action( 'admin_init', 'bsf_set_options', 0 );
add_action( 'network_admin_init', 'bsf_set_options', 0 );
/**
* Flush skip registration option when any new brainstorm product is installed on the site.
*/
function bsf_flush_skip_registration() {
delete_site_option( 'bsf_skip_author' );
}
add_action( 'brainstorm_updater_new_product_added', 'bsf_flush_skip_registration' );
/**
* Return site option brainstorm_products
*
* Brainstorm_options option saves the data related to all the brainstorm products required for license management and updates.
*
* @param (boolean) $mix true: the output will be combined array of themes and plugins.
* @return (array) $brainstorm_products
*/
if ( ! function_exists( 'bsf_get_brainstorm_products' ) ) {
/**
* BSF Get Brainstorm products.
*
* @param bool $mix Mix.
* @return array $brainstorm_products.
*/
function bsf_get_brainstorm_products( $mix = false ) {
$brainstorm_products = get_option( 'brainstrom_products', array() );
if ( true === $mix ) {
$plugins = ( isset( $brainstorm_products['plugins'] ) ) ? $brainstorm_products['plugins'] : array();
$themes = ( isset( $brainstorm_products['themes'] ) ) ? $brainstorm_products['themes'] : array();
$brainstorm_products = array_merge( $plugins, $themes );
}
return $brainstorm_products;
}
}
/**
* BSF envatoredirect URL callback.
*/
function bsf_envato_redirect_url_callback() {
check_ajax_referer( 'envato_activation_nonce', 'envato_activation_nonce' );
// bail if current user cannot manage_options.
if ( ! current_user_can( 'manage_options' ) ) {
return false;
}
$envato_activate = new BSF_Envato_Activate();
$form_data = array();
$form_data['product_id'] = isset( $_GET['product_id'] ) ? esc_attr( $_GET['product_id'] ) : '';
$form_data['url'] = isset( $_GET['url'] ) ? esc_url_raw( $_GET['url'] ) : '';
$form_data['redirect'] = isset( $_GET['redirect'] ) ? rawurlencode( $_GET['redirect'] ) : '';
$form_data['privacy_consent'] = ( isset( $_GET['privacy_consent'] ) && 'true' === $_GET['privacy_consent'] ) ? true : false;
$form_data['terms_conditions_consent'] = ( isset( $_GET['terms_conditions_consent'] ) && 'true' === $_GET['terms_conditions_consent'] ) ? true : false;
$url = $envato_activate->envato_activation_url( $form_data );
$data = array(
'url' => esc_url_raw( $url ),
);
return wp_send_json_success( $data );
}
add_action( 'wp_ajax_bsf_envato_redirect_url', 'bsf_envato_redirect_url_callback' );