oont-contents/plugins/astra-addon/classes/builder/class-astra-addon-builder-customizer.php
2025-02-08 15:10:23 +01:00

243 lines
8.4 KiB
PHP

<?php
/**
* Astra Addon Builder Controller.
*
* @package astra-builder
* @since 3.0.0
*/
// No direct access, please.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* Class Astra_Addon_Builder_Customizer.
*
* Customizer Configuration for Header Footer Builder.
*
* @since 3.0.0
*/
final class Astra_Addon_Builder_Customizer {
/**
* Constructor
*
* @since 3.0.0
*/
public function __construct() {
add_action( 'customize_preview_init', array( $this, 'enqueue_customizer_preview_scripts' ) );
if ( false === astra_addon_builder_helper()->is_header_footer_builder_active ) {
return;
}
add_action( 'astra_addon_get_css_files', array( $this, 'add_styles' ) );
$this->load_base_components();
add_action( 'customize_register', array( $this, 'header_configs' ), 5 );
add_action( 'customize_register', array( $this, 'footer_configs' ), 5 );
add_filter( 'astra_flags_svgs', array( $this, 'astra_addon_flag_svgs' ), 1, 10 );
}
/**
* Register Base Components for Builder.
*/
public function load_base_components() {
// @codingStandardsIgnoreStart WPThemeReview.CoreFunctionality.FileInclude.FileIncludeFound
// Base Config Files.
require_once ASTRA_EXT_DIR . 'classes/builder/type/base/configurations/class-astra-addon-base-configs.php';
require_once ASTRA_EXT_DIR . 'classes/builder/type/base/configurations/class-astra-divider-component-configs.php';
require_once ASTRA_EXT_DIR . 'classes/builder/type/base/configurations/class-astra-addon-button-component-configs.php';
require_once ASTRA_EXT_DIR . 'classes/builder/type/base/configurations/class-astra-social-component-configs.php';
require_once ASTRA_EXT_DIR . 'classes/builder/type/base/configurations/class-astra-language-switcher-component-configs.php';
// Base Dynamic CSS Files.
require_once ASTRA_EXT_DIR . 'classes/builder/type/base/dynamic-css/divider/class-astra-divider-component-dynamic-css.php';
require_once ASTRA_EXT_DIR . 'classes/builder/type/base/dynamic-css/language-switcher/class-astra-language-switcher-component-dynamic-css.php';
require_once ASTRA_EXT_DIR . 'classes/builder/type/base/dynamic-css/social-icon/class-astra-social-icon-component-dynamic-css.php';
require_once ASTRA_EXT_DIR . 'classes/builder/type/base/dynamic-css/button/class-astra-addon-button-component-dynamic-css.php';
$this->load_header_components();
$this->load_footer_components();
// @codingStandardsIgnoreEnd WPThemeReview.CoreFunctionality.FileInclude.FileIncludeFound
}
/**
* Register controls for Header Builder.
*
* @param WP_Customize_Manager $wp_customize Theme Customizer object.
* @since 3.0.0
*/
public function header_configs( $wp_customize ) {
// @codingStandardsIgnoreStart WPThemeReview.CoreFunctionality.FileInclude.FileIncludeFound
$header_config_path = ASTRA_EXT_DIR . 'classes/builder/type/header';
require_once $header_config_path . '/divider/class-astra-header-divider-component-configs.php';
require_once $header_config_path . '/account/class-astra-ext-header-account-component-configs.php';
require_once $header_config_path . '/menu/class-astra-addon-header-menu-component-configs.php';
require_once $header_config_path . '/button/class-astra-addon-header-button-component-configs.php';
require_once $header_config_path . '/social-icon/class-astra-header-social-component-configs.php';
require_once $header_config_path . '/language-switcher/class-astra-header-language-switcher-configs.php';
require_once $header_config_path . '/off-canvas/class-astra-addon-offcanvas-configs.php';
// @codingStandardsIgnoreEnd WPThemeReview.CoreFunctionality.FileInclude.FileIncludeFound
}
/**
* Register controls for Footer Builder.
*
* @param WP_Customize_Manager $wp_customize Theme Customizer object.
* @since 3.0.0
*/
public function footer_configs( $wp_customize ) {
// @codingStandardsIgnoreStart WPThemeReview.CoreFunctionality.FileInclude.FileIncludeFound
$footer_config_path = ASTRA_EXT_DIR . 'classes/builder/type/footer';
require_once $footer_config_path . '/divider/class-astra-footer-divider-component-configs.php';
require_once $footer_config_path . '/button/class-astra-ext-footer-button-component-configs.php';
require_once $footer_config_path . '/social-icon/class-astra-footer-social-component-configs.php';
require_once $footer_config_path . '/language-switcher/class-astra-footer-language-switcher-configs.php';
// @codingStandardsIgnoreEnd WPThemeReview.CoreFunctionality.FileInclude.FileIncludeFound
}
/**
* Register Components for Header Builder.
*
* @since 3.0.0
*/
public function load_header_components() {
// @codingStandardsIgnoreStart WPThemeReview.CoreFunctionality.FileInclude.FileIncludeFound
$header_components_path = ASTRA_EXT_DIR . 'classes/builder/type/header';
if ( ! class_exists( 'Astra_Header_Divider_Component' ) ) {
require_once $header_components_path . '/divider/class-astra-header-divider-component.php';
}
require_once $header_components_path . '/button/class-astra-addon-header-button-component.php';
require_once $header_components_path . '/account/class-astra-ext-header-account-component.php';
require_once $header_components_path . '/menu/class-astra-addon-header-menu-component.php';
require_once $header_components_path . '/social-icon/class-astra-header-social-component.php';
require_once $header_components_path . '/language-switcher/class-astra-header-language-switcher-component.php';
require_once $header_components_path . '/off-canvas/class-astra-addon-offcanvas-component.php';
// @codingStandardsIgnoreEnd WPThemeReview.CoreFunctionality.FileInclude.FileIncludeFound
}
/**
* Register Components for Footer Builder.
*
* @since 3.0.0
*/
public function load_footer_components() {
// @codingStandardsIgnoreStart WPThemeReview.CoreFunctionality.FileInclude.FileIncludeFound
$footer_components_path = ASTRA_EXT_DIR . 'classes/builder/type/footer';
if ( ! class_exists( 'Astra_Footer_Divider_Component' ) ) {
require_once $footer_components_path . '/divider/class-astra-footer-divider-component.php';
}
require_once $footer_components_path . '/button/class-astra-ext-footer-button-component.php';
require_once $footer_components_path . '/social-icon/class-astra-footer-social-component.php';
require_once $footer_components_path . '/language-switcher/class-astra-footer-language-switcher-component.php';
// @codingStandardsIgnoreEnd WPThemeReview.CoreFunctionality.FileInclude.FileIncludeFound
}
/**
* Add Customizer preview script.
*
* @since 3.0.0
*/
public function enqueue_customizer_preview_scripts() {
// Base Dynamic CSS.
wp_enqueue_script(
'ahfb-addon-base-customizer-preview',
ASTRA_EXT_URI . 'classes/builder/type/base/assets/js/customizer-preview.js',
array( 'customize-preview' ),
ASTRA_EXT_VER,
true
);
// Localize variables for Astra Breakpoints JS.
wp_localize_script(
'ahfb-addon-base-customizer-preview',
'astraBuilderPreview',
array(
'tablet_break_point' => astra_addon_get_tablet_breakpoint(),
'mobile_break_point' => astra_addon_get_mobile_breakpoint(),
)
);
}
/**
* Add Styles Callback
*
* @since 3.1.0
*/
public function add_styles() {
/*** Start Path Logic */
/* Define Variables */
$uri = ASTRA_EXT_URI . 'classes/builder/assets/css/';
$path = ASTRA_EXT_DIR . 'classes/builder/assets/css/';
$rtl = '';
if ( is_rtl() ) {
$rtl = '-rtl';
}
/* Directory and Extension */
$file_prefix = $rtl . '.min';
$dir_name = 'minified';
if ( SCRIPT_DEBUG ) {
$file_prefix = $rtl;
$dir_name = 'unminified';
}
$css_uri = $uri . $dir_name . '/';
$css_dir = $path . $dir_name . '/';
if ( defined( 'ASTRA_THEME_HTTP2' ) && ASTRA_THEME_HTTP2 ) {
$gen_path = $css_uri;
} else {
$gen_path = $css_dir;
}
/*** End Path Logic */
/* Add style.css */
Astra_Minify::add_css( $gen_path . 'style' . $file_prefix . '.css' );
}
/**
* Load Flags SVG Icon array from the JSON file.
*
* @param Array $svg_arr Array of svg icons.
* @since 3.1.0
* @return Array addon svg icons.
*/
public function astra_addon_flag_svgs( $svg_arr = array() ) {
ob_start();
// Include SVGs Json file.
include_once ASTRA_EXT_DIR . 'assets/flags/svgs.json';
$svg_icon_arr = json_decode( ob_get_clean(), true );
$ast_flag_svgs = array_merge( $svg_arr, $svg_icon_arr );
return $ast_flag_svgs;
}
}
/**
* Prepare if class 'Astra_Addon_Builder_Customizer' exist.
* Kicking this off by creating new object of the class.
*/
new Astra_Addon_Builder_Customizer();