File "class-uagb-loader.php"
Full Path: /home/fresvfqn/waterdamagerestorationandrepairsmithtown.com/wp-content/plugins/ultimate-addons-for-gutenberg/classes/class-uagb-loader.php
File size: 27.53 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* UAGB Loader.
*
* @package UAGB
*/
use UAGB\Admin_Helper;
use \ZipAI\Classes\Module as Zip_Ai_Module;
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
}
if ( ! class_exists( 'UAGB_Loader' ) ) {
/**
* Class UAGB_Loader.
*/
final class UAGB_Loader {
/**
* Member Variable
*
* @var instance
*/
private static $instance;
/**
* Post assets object cache
*
* @var array
*/
public $post_assets_objs = array();
/**
* Block analytics instance
*
* @var UAGB_Block_Analytics
*/
public $block_analytics;
/**
* Initiator
*/
public static function get_instance() {
if ( ! isset( self::$instance ) ) {
self::$instance = new self();
/**
* Spectra loaded.
*
* Fires when Spectra was fully loaded and instantiated.
*
* @since 2.1.0
*/
do_action( 'spectra_core_loaded' );
}
return self::$instance;
}
/**
* Constructor
*/
public function __construct() {
// Activation hook.
register_activation_hook( UAGB_FILE, array( $this, 'activation_reset' ) );
// deActivation hook.
register_deactivation_hook( UAGB_FILE, array( $this, 'deactivation_reset' ) );
$this->define_constants();
$this->loader();
add_action( 'after_setup_theme', array( $this, 'load_compatibility' ) );
add_action( 'plugins_loaded', array( $this, 'load_plugin' ) );
add_action( 'init', array( $this, 'init_actions' ) );
/*
* BSF Analytics.
*/
if ( ! class_exists( 'BSF_Analytics_Loader' ) ) {
require_once UAGB_DIR . 'lib/bsf-analytics/class-bsf-analytics-loader.php';
}
if ( class_exists( 'BSF_Analytics_Loader' ) && is_callable( 'BSF_Analytics_Loader::get_instance' ) ) {
$spectra_bsf_analytics = BSF_Analytics_Loader::get_instance();
$spectra_bsf_analytics->set_entity(
array(
'spectra' => array(
'product_name' => 'Spectra',
'path' => UAGB_DIR . 'lib/bsf-analytics',
'author' => 'Spectra by Brainstorm Force',
'time_to_display' => '+24 hours',
'deactivation_survey' => apply_filters(
'spectra_deactivation_survey_data',
array(
array(
'id' => 'deactivation-survey-ultimate-addons-for-gutenberg',
'popup_logo' => esc_url( plugin_dir_url( __DIR__ ) . 'assets/images/logos/spectra.svg' ),
'plugin_slug' => 'ultimate-addons-for-gutenberg',
'popup_title' => 'Quick Feedback',
'support_url' => 'https://wpspectra.com/contact/',
'popup_description' => 'If you have a moment, please share why you are deactivating Spectra:',
'show_on_screens' => array( 'plugins' ),
'plugin_version' => UAGB_VER,
),
)
),
'hide_optin_checkbox' => true,
),
)
);
}
add_filter( 'bsf_core_stats', array( $this, 'spectra_get_specific_stats' ) );
// Initialize block analytics after BSF analytics is set up.
$this->block_analytics = UAGB_Block_Analytics::get_instance();
}
/**
* Defines all constants
*
* @since 1.0.0
*/
public function define_constants() {
define( 'UAGB_BASE', plugin_basename( UAGB_FILE ) );
define( 'UAGB_DIR', plugin_dir_path( UAGB_FILE ) );
define( 'UAGB_URL', plugins_url( '/', UAGB_FILE ) );
define( 'UAGB_VER', '2.19.14' );
define( 'UAGB_MODULES_DIR', UAGB_DIR . 'modules/' );
define( 'UAGB_MODULES_URL', UAGB_URL . 'modules/' );
define( 'UAGB_SLUG', 'spectra' );
define( 'UAGB_URI', trailingslashit( 'https://wpspectra.com/' ) );
if ( ! defined( 'UAGB_TABLET_BREAKPOINT' ) ) {
define( 'UAGB_TABLET_BREAKPOINT', '976' );
}
if ( ! defined( 'UAGB_MOBILE_BREAKPOINT' ) ) {
define( 'UAGB_MOBILE_BREAKPOINT', '767' );
}
if ( ! defined( 'UAGB_UPLOAD_DIR_NAME' ) ) {
define( 'UAGB_UPLOAD_DIR_NAME', 'uag-plugin' );
}
$upload_dir = wp_upload_dir( null, false );
if ( ! defined( 'UAGB_UPLOAD_DIR' ) ) {
define( 'UAGB_UPLOAD_DIR', $upload_dir['basedir'] . '/' . UAGB_UPLOAD_DIR_NAME . '/' );
}
if ( ! defined( 'UAGB_UPLOAD_URL' ) ) {
define( 'UAGB_UPLOAD_URL', $upload_dir['baseurl'] . '/' . UAGB_UPLOAD_DIR_NAME . '/' );
}
define( 'UAGB_ASSET_VER', get_option( '__uagb_asset_version', UAGB_VER ) );
define( 'UAGB_CSS_EXT', defined( 'WP_DEBUG' ) && WP_DEBUG ? '.css' : '.min.css' );
define( 'UAGB_JS_EXT', defined( 'WP_DEBUG' ) && WP_DEBUG ? '.js' : '.min.js' );
}
/**
* Loads Other files.
*
* @since 1.0.0
*
* @return void
*/
public function loader() {
require_once UAGB_DIR . 'classes/utils.php';
require_once UAGB_DIR . 'classes/class-spectra-block-prioritization.php';
require_once UAGB_DIR . 'classes/class-uagb-install.php';
require_once UAGB_DIR . 'classes/class-uagb-filesystem.php';
require_once UAGB_DIR . 'classes/class-uagb-update.php';
require_once UAGB_DIR . 'classes/class-uagb-block.php';
require_once UAGB_DIR . 'classes/migration/class-spectra-migrate-blocks.php';
require_once UAGB_DIR . 'classes/migration/class-uagb-background-process.php';
require_once UAGB_DIR . 'classes/analytics/class-uagb-block-analytics.php';
/**
* Register Commands.
*/
if ( defined( 'WP_CLI' ) && WP_CLI ) {
require_once UAGB_DIR . 'classes/commands/class-spectra-regenerate-assets-command.php';
}
if ( is_admin() ) {
require_once UAGB_DIR . 'classes/class-uagb-beta-updates.php';
require_once UAGB_DIR . 'classes/class-uagb-rollback.php';
}
}
/**
* Loads plugin files.
*
* @since 1.0.0
*
* @return void
*/
public function load_plugin() {
require_once UAGB_DIR . 'classes/class-uagb-scripts-utils.php';
require_once UAGB_DIR . 'classes/class-uagb-block-module.php';
require_once UAGB_DIR . 'classes/class-uagb-admin-helper.php';
require_once UAGB_DIR . 'classes/class-uagb-helper.php';
require_once UAGB_DIR . 'blocks-config/blocks-config.php';
require_once UAGB_DIR . 'lib/astra-notices/class-astra-notices.php';
require_once UAGB_DIR . 'lib/class-uagb-zipwp-images.php';
require_once UAGB_DIR . 'lib/class-uagb-nps-survey.php';
/**
* UTM Analytics lib file.
*/
require_once UAGB_DIR . 'lib/class-uagb-utm-analytics.php';
if ( is_admin() ) {
require_once UAGB_DIR . 'classes/class-uagb-admin.php';
}
require_once UAGB_DIR . 'classes/class-uagb-post-assets.php';
require_once UAGB_DIR . 'classes/class-uagb-front-assets.php';
require_once UAGB_DIR . 'classes/class-uagb-init-blocks.php';
require_once UAGB_DIR . 'classes/class-uagb-rest-api.php';
require_once UAGB_DIR . 'classes/class-uagb-visibility.php';
require_once UAGB_DIR . 'classes/class-uagb-caching.php';
require_once UAGB_DIR . 'classes/class-uagb-nps-notice.php';
if ( 'twentyseventeen' === get_template() ) {
require_once UAGB_DIR . 'classes/class-uagb-twenty-seventeen-compatibility.php';
}
if ( 'twentysixteen' === get_template() ) {
require_once UAGB_DIR . 'compatibility/class-uagb-twenty-sixteen-compatibility.php';
}
require_once UAGB_DIR . 'admin-core/admin-loader.php';
add_filter( 'rest_pre_dispatch', array( $this, 'rest_pre_dispatch' ), 10, 3 );
$enable_templates_button = UAGB_Admin_Helper::get_admin_settings_option( 'uag_enable_templates_button', 'yes' );
// Sync the Zip AI Library textdomain with the Spectra textdomain.
add_filter( 'zip_ai_library_textdomain', array( $this, 'sync_library_textdomain' ) );
if ( 'yes' === $enable_templates_button ) {
require_once UAGB_DIR . 'lib/class-uagb-ast-block-templates.php';
} else {
add_filter( 'ast_block_templates_disable', '__return_true' );
}
// Add the filters for the Zip AI Library and include it.
add_filter( 'zip_ai_collab_product_details', array( $this, 'add_zip_ai_collab_product_details' ), 20, 1 );
add_filter( 'zip_ai_modules', array( $this, 'add_zip_ai_modules' ), 20, 1 );
add_filter( 'zip_ai_auth_redirection_flag', '__return_true', 20, 1 );
add_filter( 'zip_ai_auth_redirection_url', array( $this, 'add_zip_ai_redirection_url' ), 20, 1 );
add_filter( 'zip_ai_revoke_redirection_url', array( $this, 'add_zip_ai_redirection_url' ), 20, 1 );
require_once UAGB_DIR . 'lib/class-uagb-zip-ai.php';
}
/**
* Sync the Zip AI Library textdomain with the Spectra textdomain.
*
* @param string $textdomain The textdomain for the Zip AI Library.
* @since 2.13.9
* @return string The Spectra textdomain.
*/
public function sync_library_textdomain( $textdomain ) {
return 'ultimate-addons-for-gutenberg';
}
/**
* Loads theme compatibility files.
*
* @since 2.5.1
*
* @return void
*/
public function load_compatibility() {
require_once UAGB_DIR . 'classes/class-uagb-fse-fonts-compatibility.php';
}
/**
* Fix REST API issue with blocks registered via PHP register_block_type.
*
* @since 1.25.2
*
* @param mixed $result Response to replace the requested version with.
* @param object $server Server instance.
* @param object $request Request used to generate the response.
*
* @return array Returns updated results.
*/
public function rest_pre_dispatch( $result, $server, $request ) {
if ( strpos( $request->get_route(), '/wp/v2/block-renderer' ) !== false && isset( $request['attributes'] ) ) {
$attributes = $request['attributes'];
if ( isset( $attributes['UAGUserRole'] ) ) {
unset( $attributes['UAGUserRole'] );
}
if ( isset( $attributes['UAGBrowser'] ) ) {
unset( $attributes['UAGBrowser'] );
}
if ( isset( $attributes['UAGSystem'] ) ) {
unset( $attributes['UAGSystem'] );
}
if ( isset( $attributes['UAGDisplayConditions'] ) ) {
unset( $attributes['UAGDisplayConditions'] );
}
if ( isset( $attributes['UAGHideDesktop'] ) ) {
unset( $attributes['UAGHideDesktop'] );
}
if ( isset( $attributes['UAGHideMob'] ) ) {
unset( $attributes['UAGHideMob'] );
}
if ( isset( $attributes['UAGHideTab'] ) ) {
unset( $attributes['UAGHideTab'] );
}
if ( isset( $attributes['UAGLoggedIn'] ) ) {
unset( $attributes['UAGLoggedIn'] );
}
if ( isset( $attributes['UAGLoggedOut'] ) ) {
unset( $attributes['UAGLoggedOut'] );
}
if ( isset( $attributes['UAGDay'] ) ) {
unset( $attributes['UAGDay'] );
}
if ( isset( $attributes['zIndex'] ) ) {
unset( $attributes['zIndex'] );
}
if ( isset( $attributes['UAGResponsiveConditions'] ) ) {
unset( $attributes['UAGResponsiveConditions'] );
}
if ( isset( $attributes['UAGAnimationType'] ) ) {
unset( $attributes['UAGAnimationType'] );
}
if ( isset( $attributes['UAGAnimationTime'] ) ) {
unset( $attributes['UAGAnimationTime'] );
}
if ( isset( $attributes['UAGAnimationDelay'] ) ) {
unset( $attributes['UAGAnimationDelay'] );
}
if ( isset( $attributes['UAGAnimationEasing'] ) ) {
unset( $attributes['UAGAnimationEasing'] );
}
if ( isset( $attributes['UAGAnimationRepeat'] ) ) {
unset( $attributes['UAGAnimationRepeat'] );
}
if ( isset( $attributes['UAGAnimationDelayInterval'] ) ) {
unset( $attributes['UAGAnimationDelayInterval'] );
}
if ( isset( $attributes['UAGAnimationDoNotApplyToContainer'] ) ) {
unset( $attributes['UAGAnimationDoNotApplyToContainer'] );
}
if ( isset( $attributes['UAGStickyLocation'] ) ) {
unset( $attributes['UAGStickyLocation'] );
}
if ( isset( $attributes['UAGStickyRestricted'] ) ) {
unset( $attributes['UAGStickyRestricted'] );
}
if ( isset( $attributes['UAGStickyOffset'] ) ) {
unset( $attributes['UAGStickyOffset'] );
}
if ( isset( $attributes['UAGPosition'] ) ) {
unset( $attributes['UAGPosition'] );
}
$request['attributes'] = $attributes;
}
return $result;
}
/**
* Check if Gutenberg is active
*
* @since 1.1.0
*
* @return boolean
*/
public function is_gutenberg_active() {
return function_exists( 'register_block_type' );
}
/**
* Load Ultimate Gutenberg Text Domain.
* This will load the translation textdomain depending on the file priorities.
* 1. Global Languages /wp-content/languages/ultimate-addons-for-gutenberg/ folder
* 2. Local directory /wp-content/plugins/ultimate-addons-for-gutenberg/languages/ folder
*
* @since 1.0.0
* @return void
*/
public function load_textdomain() {
/**
* Filters the languages directory path to use for AffiliateWP.
*
* @param string $lang_dir The languages directory path.
*/
$lang_dir = apply_filters( 'uagb_languages_directory', UAGB_ROOT . '/languages/' );
load_plugin_textdomain( 'ultimate-addons-for-gutenberg', false, $lang_dir );
}
/**
* Fires admin notice when Gutenberg is not installed and activated.
*
* @since 1.0.0
*
* @return void
*/
public function uagb_fails_to_load() {
if ( ! current_user_can( 'install_plugins' ) ) {
return;
}
$class = 'notice notice-error';
/* translators: %s: html tags */
$message = sprintf( __( 'The %1$sSpectra%2$s plugin requires %1$sGutenberg%2$s plugin installed & activated.', 'ultimate-addons-for-gutenberg' ), '<strong>', '</strong>' );
$action_url = wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=gutenberg' ), 'install-plugin_gutenberg' );
$button_label = __( 'Install Gutenberg', 'ultimate-addons-for-gutenberg' );
$button = '<p><a href="' . $action_url . '" class="button-primary">' . $button_label . '</a></p><p></p>';
printf( '<div class="%1$s"><p>%2$s</p>%3$s</div>', esc_attr( $class ), wp_kses_post( $message ), wp_kses_post( $button ) );
}
/**
* Activation Reset
*/
public function activation_reset() {
$has_activated_before = get_option( '__uagb_activated_before', false );
if ( ! $has_activated_before ) {
uagb_install()->create_files();
update_option( '__uagb_do_redirect', true );
update_option( '__uagb_activated_before', true );
update_option( '__uagb_asset_version', time() );
} else {
update_option( '__uagb_do_redirect', false );
}
}
/**
* Deactivation Reset
*/
public function deactivation_reset() {
update_option( '__uagb_do_redirect', false );
}
/**
* Init actions
*
* @since 2.0.0
*
* @return void
*/
public function init_actions() {
// Check if Gutenberg is active, if not, don't load anything.
// TO DO: Add an admin notice to inform the user that Gutenberg is not active.
if ( ! $this->is_gutenberg_active() ) {
add_action( 'admin_notices', array( $this, 'uagb_fails_to_load' ) );
return;
}
// Load the text domain for translation.
$this->load_textdomain();
// Register all UAG Lite Blocks. This is done by calling the register_blocks method
// on the uagb_block() instance. This method is responsible for registering all the
// blocks in the plugin.
uagb_block()->register_blocks();
$theme_folder = get_template();
if ( function_exists( 'wp_is_block_theme' ) && wp_is_block_theme() ) {
if ( 'twentytwentytwo' === $theme_folder ) {
require_once UAGB_DIR . 'compatibility/class-uagb-twenty-twenty-two-compatibility.php';
}
}
if ( 'astra' === $theme_folder ) {
require_once UAGB_DIR . 'compatibility/class-uagb-astra-compatibility.php';
}
register_meta(
'post',
'_uag_custom_page_level_css',
array(
'show_in_rest' => true,
'type' => 'string',
'single' => true,
'auth_callback' => function() {
return current_user_can( 'edit_posts' );
},
'sanitize_callback' => function( $meta_value ) {
return wp_slash( $meta_value );
},
)
);
// This class is loaded from blocks config.
UAGB_Popup_Builder::generate_scripts();
UAGB_Update::migrate_visibility_mode();
// Adds filters to modify the blocks allowed in excerpts.
add_filter( 'excerpt_allowed_blocks', array( $this, 'add_blocks_to_excerpt' ), 20 );
add_filter( 'excerpt_allowed_wrapper_blocks', array( $this, 'add_wrapper_blocks_to_excerpt' ), 20 );
add_filter( 'uagb_blocks_allowed_in_excerpt', array( $this, 'add_uagb_blocks_to_excerpt' ), 20, 2 );
$this->get_regenerate_assets_on_migration();
}
/**
* Adds specified blocks to the list of allowed blocks in excerpts.
*
* @param array $allowed List of allowed blocks in excerpts.
* @since 2.6.0
* @return array Modified list of allowed blocks in excerpts.
*/
public function add_blocks_to_excerpt( $allowed ) {
return apply_filters( 'uagb_blocks_allowed_in_excerpt', $allowed, array( 'uagb/advanced-heading' ) );
}
/**
* Adds specified wrapper blocks to the list of allowed blocks in excerpts.
*
* @param array $allowed List of allowed blocks in excerpts.
* @since 2.6.0
* @return array Modified list of allowed blocks in excerpts.
*/
public function add_wrapper_blocks_to_excerpt( $allowed ) {
return apply_filters(
'uagb_blocks_allowed_in_excerpt',
$allowed,
array(
'uagb/container',
'uagb/columns',
'uagb/column',
)
);
}
/**
* Adds specified UAGB blocks to the list of allowed blocks in excerpts.
*
* @param array $excerpt_blocks List of allowed blocks in excerpts.
* @param array $blocks_to_add Blocks to add to the list of allowed blocks in excerpts.
* @since 2.6.0
* @return array The merged excerpt blocks array if both parameters are arrays, or the original excerpt blocks if either parameter is not an array.
*/
public function add_uagb_blocks_to_excerpt( $excerpt_blocks, $blocks_to_add ) {
if ( is_array( $excerpt_blocks ) && is_array( $blocks_to_add ) ) {
return array_merge( $excerpt_blocks, $blocks_to_add );
}
// If either parameter is not an array, return the original excerpt blocks.
return $excerpt_blocks;
}
/**
* Generate assets on migration.
*
* @since 2.7.10
* @return void
*/
public function get_regenerate_assets_on_migration() {
// Parse the host (domain/hostname) from the site URL.
$site_host = wp_parse_url( site_url(), PHP_URL_HOST );
// Check if $site_host is empty or not a string. If true, return and exit the function.
if ( empty( $site_host ) || ! is_string( $site_host ) ) {
return;
}
// Remove 'www.' from the domain.
$domain = str_replace( 'www.', '', $site_host );
// Replace dots (.) with dashes (-) in the domain to create $site_domain.
$site_domain = str_replace( '.', '-', $domain );
// Retrieve the stored domain from admin settings.
$stored_domain = \UAGB_Admin_Helper::get_admin_settings_option( 'uagb_site_url', '' );
// If the stored domain is empty, update the 'uagb_site_url' option in admin settings with the modified site domain and return.
if ( empty( $stored_domain ) ) {
\UAGB_Admin_Helper::update_admin_settings_option( 'uagb_site_url', $site_domain );
return;
}
// If the stored domain is different from the current site domain, update the '__uagb_asset_version' option with the current timestamp.
if ( $stored_domain !== $site_domain ) {
\UAGB_Admin_Helper::update_admin_settings_option( '__uagb_asset_version', time() );
}
}
/**
* Add the Zip AI Collab Product Details.
*
* @param mixed $product_details The previous product details, if any.
* @since 2.10.2
* @return array The Spectra product details.
*/
public function add_zip_ai_collab_product_details( $product_details ) {
// Overwrite the product details that were of a lower priority, if any.
$product_details = array(
'product_name' => 'Spectra',
'product_slug' => 'spectra',
'product_logo' => file_get_contents( UAGB_DIR . 'assets/images/logos/spectra.svg' ),
'product_primary_color' => '#5733ff',
'ai_assistant_learn_more_url' => admin_url( 'admin.php?page=spectra&path=ai-features' ),
'ai_assistant_authorized_disable_url' => admin_url( 'admin.php?page=spectra&path=ai-features&manage-features=yes' ),
'ai_assistant_unauthorized_disable_url' => admin_url( 'admin.php?page=spectra&path=ai-features&manage-features=yes' ),
);
// Return the Spectra product details.
return $product_details;
}
/**
* Add the Zip AI Modules that come with Spectra.
*
* @param mixed $modules The modules for Zip AI, if any.
* @since 2.10.2
* @return array The Spectra default modules.
*/
public function add_zip_ai_modules( $modules ) {
// If the filtered modules is not an array, make it one.
$modules = is_array( $modules ) ? $modules : array();
// List of module names to enable.
$modules_to_enable = array( 'ai_assistant', 'ai_design_copilot' );
// Ensure each module in the list is enabled.
foreach ( $modules_to_enable as $module_name ) {
// @phpcs:ignore WordPress.NamingConventions.ValidVariableName
if ( class_exists( '\ZipAI\Classes\Module' ) && method_exists( '\ZipAI\Classes\Module', 'force_enabled' ) ) {
\ZipAI\Classes\Module::force_enabled( $modules, $module_name );
}
}
// Return the Spectra default modules.
return $modules;
}
/**
* Add the Zip AI Authorization/Revoke URL.
*
* @param mixed $auth_url The previous authorization URL, if any.
* @since 2.10.2
* @return string The Spectra redirection URL.
*/
public function add_zip_ai_redirection_url( $auth_url ) {
return admin_url( 'admin.php?page=spectra&path=ai-features' );
}
/**
* Create an array of block status.
*
* @return array $block_status_data An associative array of block slug => status.
* The status can be either 'enabled' or 'disabled'.
*/
public function create_block_status_array() {
$saved_blocks = (array) \UAGB_Admin_Helper::get_admin_settings_option( '_uagb_blocks' );
$block_manager = uagb_block();
$blocks = ( method_exists( $block_manager, 'get_blocks' ) )
? (array) $block_manager->get_blocks()
: array();
$block_status_data = array();
if ( is_array( $blocks ) ) {
foreach ( $blocks as $slug => $data ) {
$_slug = str_replace( 'uagb/', '', $slug );
// Skip child blocks.
if ( isset( $blocks[ $slug ]['is_child'] ) ) {
continue;
}
// Initialize status array.
$block_status_data[ $_slug ] = array();
// Check saved status.
if ( isset( $saved_blocks[ $_slug ] ) ) {
$block_status_data[ $_slug ] =
'disabled' === $saved_blocks[ $_slug ] ? 'disabled' : 'enabled';
} else {
$block_status_data[ $_slug ] = 'enabled';
}
}
}
return $block_status_data;
}
/**
* Generates global setting data for analytics
*
* @since 1.4.0
* @return array
*/
public function global_settings_data() {
$global_data = array();
// Prepare to get the Zip AI Co-pilot modules.
$zip_ai_modules = array();
$bsf_internal_referrer = get_option( 'bsf_product_referers', array() );
$bsf_internal_referrer = (array) $bsf_internal_referrer;
$global_data['internal_referer'] = isset( $bsf_internal_referrer['ultimate-addons-for-gutenberg'] )
? $bsf_internal_referrer['ultimate-addons-for-gutenberg']
: '';
$global_data['beta'] = get_option( 'uagb_beta' );
$global_data['enable_legacy_blocks'] = get_option( 'uag_enable_legacy_blocks' );
$global_data['file_generation'] = get_option( '_uagb_allow_file_generation' );
$global_data['templates_button'] = get_option( 'uag_enable_templates_button' );
$global_data['on_page_css_button'] = get_option( 'uag_enable_on_page_css_button' );
$global_data['block_condition'] = get_option( 'uag_enable_block_condition' );
$global_data['quick_action_sidebar'] = get_option( 'uag_enable_quick_action_sidebar' );
$global_data['gbs_extension'] = get_option( 'uag_enable_gbs_extension' );
$global_data['block_responsive'] = get_option( 'uag_enable_block_responsive' );
$global_data['load_select_font_globally'] = get_option( 'uag_load_select_font_globally' );
$global_data['load_gfonts_locally'] = get_option( 'uag_load_gfonts_locally' );
$global_data['collapse_panels'] = get_option( 'uag_collapse_panels' );
$global_data['copy_paste'] = get_option( 'uag_copy_paste' );
$global_data['preload_local_fonts'] = get_option( 'uag_preload_local_fonts' );
$global_data['visibility_mode'] = get_option( 'uag_visibility_mode' );
$global_data['container_global_padding'] = get_option( 'uag_container_global_padding' );
$global_data['container_global_elements_gap'] = get_option( 'uag_container_global_elements_gap' );
$global_data['btn_inherit_from_theme'] = get_option( 'uag_btn_inherit_from_theme' );
$global_data['blocks_editor_spacing'] = get_option( 'uag_blocks_editor_spacing' );
$global_data['load_font_awesome_5'] = get_option( 'uag_load_font_awesome_5' );
$global_data['auto_block_recovery'] = get_option( 'uag_auto_block_recovery' );
$global_data['load_fse_font_globally'] = get_option( 'uag_load_fse_font_globally' );
// If the Zip AI Helper is available, get the required modules and their states.
if ( class_exists( '\ZipAI\Classes\Module' ) ) {
$zip_ai_modules = Zip_Ai_Module::get_all_modules();
// Restructure AI-related data.
if ( isset( $zip_ai_modules['ai_assistant'] ) ) {
$global_data['ai_assistant'] = $zip_ai_modules['ai_assistant']['status'];
}
if ( isset( $zip_ai_modules['ai_design_copilot'] ) ) {
$global_data['ai_design_copilot'] = $zip_ai_modules['ai_design_copilot']['status'];
}
// Merge the rest of the modules.
$global_data = array_merge_recursive(
$global_data,
array_filter(
$zip_ai_modules,
function( $key ) {
return ! in_array( $key, array( 'ai_assistant', 'ai_design_copilot' ) );
},
ARRAY_FILTER_USE_KEY
)
);
}
// Return the global data.
return $global_data;
}
/**
* Pass spectra specific stats to BSF analytics.
*
* @since 2.19.5
* @param array $default_stats Default stats array.
* @return array $default_stats Default stats with spectra specific stats array.
*/
public function spectra_get_specific_stats( $default_stats ) {
$default_stats['plugin_data']['spectra'] = array(
'version' => UAGB_VER,
'old_user_less_than_2' => get_option( 'uagb-old-user-less-than-2' ), // Retrieves current user is old user less than 2 or not.
'migration_status' => get_option( 'uag_migration_status' ), // Retrieves migration status.
);
$default_stats['plugin_data']['spectra'] = array_merge_recursive( $default_stats['plugin_data']['spectra'], $this->global_settings_data() );
$default_stats['plugin_data']['spectra'] = array_merge_recursive( $default_stats['plugin_data']['spectra'], $this->create_block_status_array() );
// Add advanced block usage statistics.
if ( is_object( $this->block_analytics ) ) {
$advanced_stats = $this->block_analytics->get_block_stats_for_analytics();
if ( ! empty( $advanced_stats ) ) {
$default_stats['plugin_data']['spectra'] = array_merge_recursive( $default_stats['plugin_data']['spectra'], $advanced_stats );
}
}
return $default_stats;
}
}
}
/**
* Prepare if class 'UAGB_Loader' exist.
* Kicking this off by calling 'get_instance()' method
*/
UAGB_Loader::get_instance();
/**
* Load main object
*
* @since 2.0.0
*
* @return object
*/
function uagb() {
return UAGB_Loader::get_instance();
}