/
home
/
c
/
a
/
b
/
cabinetdhs
/
www
/
wp-content
/
plugins
/
ultimate-elementor
/
classes
/
Upload File
HOME
<?php /** * UAEL Core Plugin. * * @package UAEL */ namespace UltimateElementor; use UltimateElementor\Classes\UAEL_Helper; use UltimateElementor\Modules\ControlQuery\Types\Uae_Control_Query; use UltimateElementor\Modules\PresetsSelect\Controls\Presets_Select; use UltimateElementor\Modules\QueryPost\Controls\Query; if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly. } /** * UAEL_Core_Plugin. * * @package UAEL */ class UAEL_Core_Plugin { /** * Member Variable * * @var instance */ private static $instance; /** * Member Variable * * @var Modules Manager */ public $modules_manager; /** * Cross-Site CDN URL. * * @since 1.24.1 * @var (String) URL */ public $cdn_url; /** * Initiator */ public static function get_instance() { if ( ! isset( self::$instance ) ) { self::$instance = new self(); } return self::$instance; } /** * Branding Widget details * * @var branding */ private static $branding = null; /** * Constructor */ public function __construct() { spl_autoload_register( array( $this, 'autoload' ) ); $this->includes(); $this->setup_actions_filters(); } /** * AutoLoad * * @since 0.0.1 * @param string $class class. */ public function autoload( $class ) { if ( 0 !== strpos( $class, __NAMESPACE__ ) ) { return; } $class_to_load = $class; if ( ! class_exists( $class_to_load ) ) { $filename = strtolower( preg_replace( array( '/^' . __NAMESPACE__ . '\\\/', '/([a-z])([A-Z])/', '/_/', '/\\\/' ), array( '', '$1-$2', '-', DIRECTORY_SEPARATOR ), $class_to_load ) ); $filename = UAEL_DIR . $filename . '.php'; if ( is_readable( $filename ) ) { include $filename; } } } /** * Includes. * * @since 0.0.1 */ private function includes() { require UAEL_DIR . 'classes/class-uael-admin.php'; require UAEL_DIR . 'includes/manager/modules-manager.php'; if ( UAEL_Helper::is_widget_active( 'Image_Gallery' ) ) { require UAEL_DIR . 'classes/class-uael-attachment.php'; } require_once UAEL_DIR . 'lib/astra-notices/class-astra-notices.php'; } /** * Setup Actions Filters. * * @since 0.0.1 */ private function setup_actions_filters() { add_shortcode( 'uael-template', array( $this, 'uael_template_shortcode' ) ); add_action( 'elementor/init', array( $this, 'elementor_init' ) ); add_action( 'elementor/elements/categories_registered', array( $this, 'widget_category' ) ); add_action( 'elementor/frontend/after_register_scripts', array( $this, 'register_widget_scripts' ) ); add_action( 'elementor/editor/after_enqueue_scripts', array( $this, 'register_widgets_helper_script' ) ); add_action( 'elementor/controls/controls_registered', array( $this, 'register_controls' ) ); add_action( 'elementor/frontend/after_enqueue_styles', array( $this, 'enqueue_widget_styles' ) ); // Active widgets data to analytics. add_filter( 'bsf_core_stats', array( $this, 'uae_specific_stats' ) ); if ( UAEL_Helper::is_widget_active( 'Cross_Domain' ) ) { add_action( 'elementor/editor/after_enqueue_scripts', array( $this, 'enqueue_copy_paste_scripts' ), 11, 0 ); require_once UAEL_DIR . 'classes/class-uael-cross-domain-copy-paste.php'; add_action( 'elementor/preview/enqueue_scripts', array( $this, 'enqueue_fpcp_preview' ) ); } if ( ! isset( self::$branding ) ) { self::$branding = UAEL_Helper::get_white_labels(); } // Hide analytics notice if UAE is white labeled. if ( isset( self::$branding['plugin']['name'] ) && '' !== self::$branding['plugin']['name'] ) { add_filter( 'bsf_white_label_options', array( $this, 'uae_bsf_analytics_white_label' ) ); } } /** * Register custom controls. * * @return void */ public function register_controls() { $controls_manager = \Elementor\Plugin::instance()->controls_manager; $controls_manager->register( new Query() ); $controls_manager->register( new Presets_Select() ); $controls_manager->register( new Uae_Control_Query() ); } /** * Elementor Template Shortcode. * * @param array $atts Shortcode Attributes. * @since 0.0.1 */ public function uael_template_shortcode( $atts ) { $atts = shortcode_atts( array( 'id' => '', ), $atts, 'uael-template' ); if ( '' !== $atts['id'] ) { return \Elementor\Plugin::$instance->frontend->get_builder_content_for_display( $atts['id'] ); } } /** * Elementor Init. * * @since 0.0.1 */ public function elementor_init() { $this->modules_manager = new Module_Manager(); $this->init_category(); do_action( 'ultimate_elementor/init' ); /* Wpml Compatibility */ require UAEL_DIR . 'compatibility/class-uael-wpml.php'; } /** * Sections init * * @since 1.24.0 * @param object $branding white label. */ public function plugin_branding( $branding ) { $plugin_short_name = $branding['plugin']['short_name']; return ( isset( $plugin_short_name ) && '' !== $plugin_short_name ) ? $plugin_short_name . ' Elements' : UAEL_CATEGORY; } /** * Sections init * * @since 0.0.1 * @param object $this_cat class. */ public function widget_category( $this_cat ) { if ( ! isset( self::$branding ) ) { self::$branding = UAEL_Helper::get_white_labels(); } $category = $this->plugin_branding( self::$branding ); $this_cat->add_category( 'ultimate-elements', array( 'title' => $category, 'icon' => 'eicon-font', ) ); return $this_cat; } /** * Sections init * * @since 0.0.1 * * @access private */ private function init_category() { if ( version_compare( ELEMENTOR_VERSION, '2.0.0' ) < 0 ) { if ( ! isset( self::$branding ) ) { self::$branding = UAEL_Helper::get_white_labels(); } $category = $this->plugin_branding( self::$branding ); \Elementor\Plugin::instance()->elements_manager->add_category( 'ultimate-elements', array( 'title' => $category, ), 1 ); } } /** * Register module required js on elementor's action. * * @since 0.0.1 */ public function register_widget_scripts() { $js_files = UAEL_Helper::get_widget_script(); $map_options = UAEL_Helper::get_integrations_options(); $language = ''; $api_url = 'https://maps.googleapis.com'; $validation_messages = array( 'ajax_url' => admin_url( 'admin-ajax.php' ), 'invalid_mail' => __( 'Enter valid Email!', 'uael' ), 'pass_unmatch' => __( 'The specified password do not match!', 'uael' ), 'required' => __( 'This Field is required!', 'uael' ), 'incorrect_password' => __( 'Error: The Password you have entered is incorrect.', 'uael' ), 'invalid_username' => __( 'Unknown username. Check again or try your email address.', 'uael' ), 'invalid_email' => __( 'Unknown email address. Check again or try your username.', 'uael' ), 'logged_in_message' => __( 'Thanks for logging in, ', 'uael' ), 'wp_version' => version_compare( get_bloginfo( 'version' ), '5.4.99', '>=' ), ); if ( isset( $map_options['language'] ) && '' !== $map_options['language'] ) { $language = 'language=' . $map_options['language']; // This checks for Chinese language. // The Maps JavaScript API is served within China from http://maps.google.cn. if ( 'zh-CN' === $map_options['language'] || 'zh-TW' === $map_options['language'] ) { $api_url = 'http://maps.googleapis.cn'; } } if ( isset( $map_options['google_api'] ) && '' !== $map_options['google_api'] ) { $language = '&' . $language; $url = $api_url . '/maps/api/js?key=' . $map_options['google_api'] . $language; } else { $url = $api_url . '/maps/api/js?' . $language; } if ( UAEL_Helper::is_widget_active( 'Particles' ) ) { wp_localize_script( 'elementor-frontend', 'uael_particles_script', array( 'uael_particles_url' => UAEL_URL . 'assets/min-js/uael-particles.min.js', 'particles_url' => UAEL_URL . 'assets/lib/particles/particles.min.js', 'snowflakes_image' => UAEL_URL . 'assets/img/snowflake.svg', 'gift' => UAEL_URL . 'assets/img/gift.png', 'tree' => UAEL_URL . 'assets/img/tree.png', 'skull' => UAEL_URL . 'assets/img/skull.png', 'ghost' => UAEL_URL . 'assets/img/ghost.png', 'moon' => UAEL_URL . 'assets/img/moon.png', 'bat' => UAEL_URL . 'assets/img/bat.png', 'pumpkin' => UAEL_URL . 'assets/img/pumpkin.png', ) ); } wp_register_script( 'uael-google-maps-api', $url, array( 'jquery' ), UAEL_VER, true ); wp_register_script( 'uael-google-maps-cluster', 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/markerclusterer.js', array( 'jquery' ), UAEL_VER, true ); wp_register_script( 'uael-video-subscribe', 'https://apis.google.com/js/platform.js', array( 'jquery' ), UAEL_VER, true ); wp_register_script( 'uael-google-login', 'https://apis.google.com/js/api:client.js', array( 'jquery' ), UAEL_VER, true ); wp_register_script( 'uael-google-recaptcha', 'https://www.google.com/recaptcha/api.js?onload=onLoadUAEReCaptcha&render=explicit', array( 'jquery', 'uael-registration' ), UAEL_VER, true ); foreach ( $js_files as $handle => $data ) { wp_register_script( $handle, UAEL_URL . $data['path'], $data['dep'], UAEL_VER, $data['in_footer'] ); } wp_localize_script( 'uael-frontend-script', 'uael_script', array( 'ajax_url' => admin_url( 'admin-ajax.php' ), ) ); wp_localize_script( 'uael-posts', 'uael_posts_script', array( 'ajax_url' => admin_url( 'admin-ajax.php' ), 'posts_nonce' => wp_create_nonce( 'uael-posts-widget-nonce' ), ) ); $wc_localize = apply_filters( 'uael_js_localize', array( 'ajax_url' => admin_url( 'admin-ajax.php' ), 'get_product_nonce' => wp_create_nonce( 'uael-product-nonce' ), 'quick_view_nonce' => wp_create_nonce( 'uael-qv-nonce' ), 'add_cart_nonce' => wp_create_nonce( 'uael-ac-nonce' ), ) ); wp_localize_script( 'uael-woocommerce', 'uael_wc_script', $wc_localize ); wp_localize_script( 'uael-woocommerce', 'uael_woo_chekout', array( 'validation_msg' => __( 'Invalid or data missing in the required(*) fields.', 'uael' ), ) ); wp_localize_script( 'uael-table', 'uael_table_script', array( 'table_not_found_str' => __( 'No matching records found', 'uael' ), 'table_length_string' => __( 'Show _MENU_ Entries', 'uael' ), ) ); if ( UAEL_Helper::is_widget_active( 'Timeline' ) ) { wp_localize_script( 'uael-frontend-script', 'uael_post_loader_script', array( 'post_loader' => UAEL_URL . 'assets/img/post-loader.gif', ) ); } if ( UAEL_Helper::is_widget_active( 'LoginForm' ) ) { wp_localize_script( 'uael-frontend-script', 'uael_login_form_script', apply_filters( 'uael_form_error_string', $validation_messages ) ); } wp_localize_script( 'uael-registration', 'uaelRegistration', apply_filters( 'uael_form_error_string', $validation_messages ) ); } /** * Register module required js on elementor's editor action. * * @since 1.30.0 */ public function register_widgets_helper_script() { wp_localize_script( 'elementor-editor', 'UAEWidgetsData', array( 'allowed_tags' => UAEL_Helper::ALLOWED_HTML_WRAPPER_TAGS, 'extension_tree' => UAEL_URL . 'assets/img/extension-tree.png', 'extension_snowman' => UAEL_URL . 'assets/img/extension-snowman.png', 'extension_hang_decor' => UAEL_URL . 'assets/img/extension-hang-decor.png', 'extension_deer' => UAEL_URL . 'assets/img/extension-deer.png', 'santa_cap' => UAEL_URL . 'assets/img/uae-santa-cap.png', 'santa_claus' => UAEL_URL . 'assets/img/santa-claus.png', 'snow' => UAEL_URL . 'assets/img/snow.png', 'hanukkah' => UAEL_URL . 'assets/img/hanukkah.png', ) ); } /** * Enqueue module required styles. * * @since 0.0.1 */ public function enqueue_widget_styles() { $css_files = UAEL_Helper::get_widget_style(); if ( ! empty( $css_files ) ) { foreach ( $css_files as $handle => $data ) { wp_register_style( $handle, UAEL_URL . $data['path'], $data['dep'], UAEL_VER ); wp_enqueue_style( $handle ); } } if ( class_exists( 'Caldera_Forms_Render_Assets' ) && class_exists( 'Caldera_Forms' ) && UAEL_Helper::is_widget_active( 'CafStyler' ) ) { \Caldera_Forms_Render_Assets::maybe_register(); \Caldera_Forms_Render_Assets::optional_style_includes(); \Caldera_Forms_Render_Assets::enqueue_style( 'front' ); \Caldera_Forms_Render_Assets::enqueue_style( 'fields' ); foreach ( \Caldera_Forms_Fields::get_all() as $field_type ) { if ( ! empty( $field_type['styles'] ) ) { foreach ( $field_type['styles'] as $style ) { \Caldera_Forms_Render_Assets::enqueue_style( $style ); } } } } if ( function_exists( 'wpforms' ) && UAEL_Helper::is_widget_active( 'WpfStyler' ) ) { wpforms()->frontend->assets_css(); } $gravity_js_load_frontend_filter = apply_filters( 'uael_gravity_js_load_frontend', false ); $gravity_js_frontend = class_exists( 'GFCommon' ) && UAEL_Helper::is_widget_active( 'GfStyler' ); $gravity_js_backend = $gravity_js_frontend && \Elementor\Plugin::$instance->preview->is_preview_mode(); $gravity_load_condition = ! $gravity_js_load_frontend_filter ? $gravity_js_backend : $gravity_js_frontend; if ( $gravity_load_condition ) { $gf_forms = \RGFormsModel::get_forms( null, 'title' ); foreach ( $gf_forms as $form ) { if ( '0' !== $form->id ) { wp_enqueue_script( 'gform_gravityforms' ); gravity_form_enqueue_scripts( $form->id ); } } } if ( function_exists( 'wpFluentForm' ) && UAEL_Helper::is_widget_active( 'FfStyler' ) && \Elementor\Plugin::$instance->preview->is_preview_mode() ) { wp_enqueue_style( 'uael-fluent-forms-default-css', plugins_url( '/fluentform/public/css/fluentform-public-default.css', 'fluentform' ), null, FLUENTFORM_VERSION ); wp_enqueue_style( 'uael-fluent-forms-public-css', plugins_url( '/fluentform/public/css/fluent-forms-public.css', 'fluentform' ), null, FLUENTFORM_VERSION ); } } /** * Load required js on before enqueue widget JS. * * @since 1.24.0 */ public function enqueue_copy_paste_scripts() { if ( ! isset( self::$branding ) ) { self::$branding = UAEL_Helper::get_white_labels(); } $plugin_branding = self::$branding['plugin']; $category = ( isset( $plugin_branding['short_name'] ) && '' !== $plugin_branding['short_name'] ) ? $plugin_branding['short_name'] : UAEL_PLUGIN_SHORT_NAME; $cross_domain_icon = ( isset( $plugin_branding['short_name'] ) && '' !== $plugin_branding['short_name'] ) ? '' : 'uael-icon-uae'; $folder = UAEL_Helper::get_js_folder(); $suffix = UAEL_Helper::get_js_suffix(); $this->cdn_url = apply_filters( 'uael_cross_domain_cdn', 'https://brainstormforce.github.io/uae-cdcp/updated-index.html' ); // Check for required Compatible Elementor version. if ( ! version_compare( ELEMENTOR_VERSION, '3.5.0', '>=' ) ) { $elementor_old_compatibility = true; } else { $elementor_old_compatibility = false; } wp_enqueue_script( 'uael-cross-site-cp-helper', UAEL_URL . 'assets/' . $folder . '/uael-cross-site-cp-helper' . $suffix . '.js', null, UAEL_VER, true ); wp_enqueue_script( 'uael-cross-domain', UAEL_URL . 'assets/' . $folder . '/uael-cross-domain-copy-paste' . $suffix . '.js', array( 'jquery', 'elementor-editor', 'uael-cross-site-cp-helper' ), UAEL_VER, true ); wp_localize_script( 'uael-cross-domain', 'uael_cross_domain', array( 'ajaxURL' => admin_url( 'admin-ajax.php' ), 'nonce' => wp_create_nonce( 'uael_process_import' ), 'widget_not_found' => __( 'The widget type you are trying to paste is not available on this site.', 'uael' ), /* translators: %s: html tags */ 'uae_copy' => sprintf( __( '%1s Copy', 'uael' ), $category ), /* translators: %s: html tags */ 'uae_paste' => sprintf( __( '%1s Paste', 'uael' ), $category ), /* translators: %s: html tags */ 'uae_copy_all' => sprintf( __( '%1s Copy All', 'uael' ), $category ), /* translators: %s: html tags */ 'uae_paste_all' => sprintf( __( '%1s Paste All', 'uael' ), $category ), 'cross_domain_icon' => $cross_domain_icon, 'cross_domain_cdn' => $this->cdn_url, 'elementorCompatible' => $elementor_old_compatibility, ) ); } /** * Pass UAE specific stats to BSF analytics. * * @since 1.25.0 * @param array $default_stats Default stats array. * @return array $default_stats Default stats with UAE specific stats array. */ public function uae_specific_stats( $default_stats ) { $widgets = array(); $active_widgets = array(); $widgets = UAEL_Helper::get_widget_list(); foreach ( $widgets as $widget => $name ) { if ( UAEL_Helper::is_widget_active( $widget ) ) { array_push( $active_widgets, $widget ); } } $default_stats['uae_settings'] = array( 'elementor_version' => ELEMENTOR_VERSION, 'uae_active_widgets' => $active_widgets, ); return $default_stats; } /** * Return White Label status to BSF Analytics. * Return true if the White Label is enabled from UAE to the BSF Analytics library. * * @since 1.25.0 * @param array $bsf_analytics_wl_arr array of white labeled products. * @return array product name with white label status. */ public function uae_bsf_analytics_white_label( $bsf_analytics_wl_arr ) { if ( ! isset( $bsf_analytics_wl_arr['uael'] ) ) { $bsf_analytics_wl_arr['uael'] = true; } return $bsf_analytics_wl_arr; } /** * Load FPCP helper css in elementor editor preview screen. * * @since 1.28.0 * @access public */ public function enqueue_fpcp_preview() { wp_register_style( 'uael-fpcp-style', UAEL_URL . 'editor-assets/css/fpcp-preview.css', array(), UAEL_VER ); wp_enqueue_style( 'uael-fpcp-style' ); } } /** * Prepare if class 'UAEL_Core_Plugin' exist. * Kicking this off by calling 'get_instance()' method */ UAEL_Core_Plugin::get_instance();