File manager - Edit - /home/kdmucyyv/semigocare.co.uk/wp-content/plugins/royal-elementor-addons/admin/includes/wpr-templates-modal-popups.php
Back
<?php namespace WprAddons\Admin\Includes; use WprAddons\Plugin; use WprAddons\Classes\Utilities; if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly. } /** * WPR_Templates_Modal_Popups setup * * @since 1.0 */ class WPR_Templates_Modal_Popups { /** ** Instance of Elemenntor Frontend class. * ** @var \Elementor\Frontend() */ private static $elementor_instance; /** ** Constructor */ public function __construct() { // Elementor Frontend self::$elementor_instance = \Elementor\Plugin::instance(); add_action( 'template_include', [ $this, 'set_post_type_template' ], 9999 ); add_action( 'wp_footer', [ $this, 'render_popups' ] ); } /** * Set blank template for editor */ public function set_post_type_template( $template ) { if ( is_singular( 'wpr_templates' ) ) { if ( 'wpr-popups' === Utilities::get_elementor_template_type(get_the_ID()) && self::$elementor_instance->preview->is_preview_mode() ) { $template = WPR_ADDONS_PATH . 'modules/popup/editor.php'; } return $template; } return $template; } /** ** Popups */ public function render_popups() { $conditions = json_decode( get_option('wpr_popup_conditions'), true ); if ( ! empty( $conditions ) ) { $conditions = $this->reverse_template_conditions( $conditions ); // Global if ( isset( $conditions['global'] ) ) { WPR_Templates_Modal_Popups::display_popups_by_location( $conditions, 'global' ); } // Custom if ( defined('WPR_ADDONS_PRO_VERSION') && wpr_fs()->can_use_premium_code() ) { // Archive \WprAddonsPro\Classes\Pro_Modules::archive_pages_popup_conditions( $conditions ); // Single \WprAddonsPro\Classes\Pro_Modules::single_pages_popup_conditions( $conditions ); } // Enqueue ScrolBar JS //TODO - check if displayed multiple times wp_enqueue_script( 'wpr-popup-scroll-js', WPR_ADDONS_URL .'assets/js/lib/perfect-scrollbar/perfect-scrollbar.min.js', [ 'jquery' ], '0.4.9' ); } } /** ** Reverse Template Conditions */ public function reverse_template_conditions( $conditions ) { $reverse = []; foreach ( $conditions as $key => $condition ) { foreach( $condition as $location ) { if ( ! isset( $reverse[$location] ) ) { $reverse[$location] = [ $key ]; } else { array_push( $reverse[$location], $key ); } } } return $reverse; } /** ** Display Popups by Location */ public static function display_popups_by_location( $conditions, $page ) { foreach ( $conditions[$page] as $key => $popup ) { WPR_Templates_Modal_Popups::render_popup_content( $popup ); } } /** ** Display Elementor Content */ public static function render_popup_content( $slug ) { $template_name = ''; $template_id = Utilities::get_template_id( $slug ); if ( defined('ICL_LANGUAGE_CODE') ) { $default_language_code = apply_filters('wpml_default_language', null); $current_language_code = apply_filters( 'wpml_current_language', NULL ); IF ( ICL_LANGUAGE_CODE !== $default_language_code ) { $template_id = apply_filters('wpml_object_id', $template_id, 'wpr_templates', true, $current_language_code); } } $get_settings = WPR_Templates_Modal_Popups::get_template_settings( $slug ); $get_elementor_content = self::$elementor_instance->frontend->get_builder_content( $template_id, false ); if ( '' === $get_elementor_content ) { return; } // Encode Settings $get_encoded_settings = ! empty( $get_settings ) ? wp_json_encode( $get_settings ) : '[]'; // Template Settings Attribute $template_settings_attr = "data-settings='". esc_attr($get_encoded_settings) ."'"; // Return if NOT available for current user if ( ! WPR_Templates_Modal_Popups::check_available_user_roles( $get_settings['popup_show_for_roles'] ) ) { return; } if ( ! self::$elementor_instance->preview->is_preview_mode() ) { echo '<div id="wpr-popup-id-'. esc_attr($template_id) .'" class="wpr-template-popup" '. $template_settings_attr .'>'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped echo '<div class="wpr-template-popup-inner">'; // Popup Overlay & Close Button echo '<div class="wpr-popup-overlay"></div>'; // Template Container echo '<div class="wpr-popup-container">'; // Close Button if ( \Elementor\Plugin::$instance->experiments->is_feature_active( 'e_font_icon_svg' ) ) { // GOGA: why not included echo '<div class="wpr-popup-close-btn"><i class="fa fa-times"></i></div>'; } else { echo '<div class="wpr-popup-close-btn"><i class="eicon-close"></i></div>'; } // Elementor Template Content echo '<div class="wpr-popup-container-inner">'; echo ''. $get_elementor_content; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped echo '</div>'; echo '</div>'; echo '</div>'; echo '</div>'; } } /** ** Get Template Settings */ public static function get_template_settings( $slug ) { $settings = []; $defaults = []; $template_id = Utilities::get_template_id( $slug ); $meta_settings = get_post_meta( $template_id, '_elementor_page_settings', true ); $popup_defaults = [ 'popup_trigger' => 'load', 'popup_load_delay' => 1, 'popup_scroll_progress' => 10, 'popup_inactivity_time' => 15, 'popup_element_scroll' => '', 'popup_custom_trigger' => '', 'popup_specific_date' => date( 'Y-m-d H:i', strtotime( '+1 month' ) + ( get_option( 'gmt_offset' ) * HOUR_IN_SECONDS ) ), 'popup_stop_after_date' => false, 'popup_stop_after_date_select' => date( 'Y-m-d H:i', strtotime( '+1 day' ) + ( get_option( 'gmt_offset' ) * HOUR_IN_SECONDS ) ), 'popup_show_again_delay' => 1, 'popup_disable_esc_key' => false, 'popup_automatic_close_switch' => false, 'popup_automatic_close_delay' => 10, 'popup_animation' => 'fade', 'popup_animation_duration' => 1, 'popup_show_for_roles' => '', 'popup_show_via_referral' => false, 'popup_referral_keyword' => '', 'popup_display_as' => 'modal', 'popup_show_on_device' => true, 'popup_show_on_device_mobile' => true, 'popup_show_on_device_tablet' => true, 'popup_disable_page_scroll' => true, 'popup_overlay_disable_close' => false, 'popup_close_button_display_delay' => 0, ]; // Determine Template if ( strpos( $slug, 'popup') ) { $defaults = $popup_defaults; } foreach( $defaults as $option => $value ) { if ( isset($meta_settings[$option]) ) { $settings[$option] = $meta_settings[$option]; } } return array_merge( $defaults, $settings ); } /** ** Check Available User Rols */ public static function check_available_user_roles( $selected_roles ) { if ( empty( $selected_roles ) ) { return true; } $current_user = wp_get_current_user(); if ( ! empty( $current_user->roles ) ) { $role = $current_user->roles[0]; } else { $role = 'guest'; } if ( in_array( $role, $selected_roles ) ) { return true; } return false; } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.30 | Generation time: 0 |
proxy
|
phpinfo
|
Settings