HEX
Server: Apache
System: Linux host.fiblib.com 5.14.0-570.58.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Oct 29 06:24:11 EDT 2025 x86_64
User: scientificreligi (1062)
PHP: 8.0.30
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //home/scientificreligi/www/wp-content/plugins/auteur-framework/core/elementor/elementor.class.php
<?php
// Do not allow directly accessing this file.
use Elementor\Core\Files\CSS\Post;
use Elementor\Core\Settings\Page\Manager;
use Elementor\Plugin;

if (!defined('ABSPATH')) {
	exit('Direct script access denied.');
}
if (!class_exists('G5P_Core_Elementor')) {
	class G5P_Core_Elementor
	{
		private static $_instance;

		public static function getInstance()
		{
			if (self::$_instance == NULL) {
				self::$_instance = new self();
			}

			return self::$_instance;
		}


		public function init()
		{
			add_filter('ube_get_element_configs', array($this, 'change_ube_get_element_configs'));
			add_filter('ube_autoload_file_dir', array($this, 'change_ube_autoload_file_dir'), 10, 2);
			add_action('elementor/frontend/after_enqueue_styles', array($this, 'elementor_custom_css'));

			add_action('elementor/document/after_save', array($this,'update_theme_color'), 10, 2);

			add_action('gsf_after_change_options/g5plus_auteur_options', array($this,'update_elementor_accent_color') , 10, 2);
			add_action('gsf_after_change_options/g5plus_auteur_skin_options', array($this,'update_elementor_color') , 11, 2);
			add_action( 'init', array( $this, 'register_scripts' ) );
			add_action( 'init', array( $this, 'register_style' ) );



			G5P()->loadFile(G5P()->pluginDir('core/elementor/templates.php'));
		}

		public function update_theme_color($obj, $data) {
			if (is_a($obj, 'Elementor\Core\Kits\Documents\Kit')) {
				/**
				 * @var $obj Elementor\Core\Kits\Documents\Kit
				 */
				$map_colors = array(
					'accent' => 'accent_color',
					'primary' => 'primary_color',
					'text' => 'text_color',
					'border' => 'border_color',
					'muted' => 'disable_color',
				);

				$system_colors = isset($data['settings']['system_colors']) ? $data['settings']['system_colors'] : array();

				$theme_options = get_option(G5P()->getOptionName(), array());

				$skin_options = get_option(G5P()->getOptionSkinName(), array());

				$current_skin = G5P()->options()->getOptions('content_skin');

				foreach ($map_colors as $k => $v) {
					$current_color = array();
					foreach ($system_colors as $cl) {
						if ($cl['_id'] === $k) {
							$current_color = $cl;
							break;
						}
					}
					if (isset($current_color['color'])) {
						if (in_array($k,array('accent','primary'))) {
							if (isset($theme_options[$v])) {
								$theme_options[$v] = $current_color['color'];
							}
						} else {
							if (isset($skin_options['color_skin'])) {
								foreach ($skin_options['color_skin'] as &$color_option) {
									if (isset($color_option['skin_id']) && ($color_option['skin_id'] === $current_skin)) {
										if (isset($color_option[$v])) {
											$color_option[$v] = $current_color['color'];
											break;
										}

									}
								}
							}
						}
					}
				}

				update_option(G5P()->getOptionName(), $theme_options);
				update_option(G5P()->getOptionSkinName(), $skin_options);

			}
		}

		public function update_elementor_accent_color($options, $preset) {
			if ($preset === '') {
				$map_colors = array(
					'accent' => 'accent_color',
					'primary' => 'primary_color',
				);

				if (class_exists('Elementor\Plugin')) {
					$kit_id = Elementor\Plugin::$instance->kits_manager->get_active_id();

					$kit = Elementor\Plugin::$instance->documents->get( $kit_id );
					$meta_key = Elementor\Core\Settings\Page\Manager::META_KEY;
					$kit_raw_settings = $kit->get_meta( $meta_key );

					if (!isset($kit_raw_settings['system_colors'])) {
						return;
					}

					foreach ($map_colors as $k => $v) {
						if (isset($options[$v])) {
							foreach ($kit_raw_settings['system_colors'] as &$cl) {
								if ($cl['_id'] === $k) {
									$cl['color'] = $options[$v];
								}
							}
						}
					}

					$kit->update_meta($meta_key, $kit_raw_settings);

					$post_css = Elementor\Core\Files\CSS\Post::create( $kit_id );
					$post_css->delete();
				}
			}
		}

		public function update_elementor_color($options, $preset) {
			if ($preset === '') {
				$current_skin = G5P()->options()->getOptions('content_skin');
				if (!isset($options['color_skin'])) {
					return;
				}

				$current_skin_option = array();

				foreach ($options['color_skin'] as $skin) {
					if (isset($skin['skin_id']) && ($skin['skin_id'] === $current_skin)) {
						$current_skin_option = $skin;
						break;
					}
				}

				if (count($current_skin_option) === 0) {
					return;
				}


				$map_colors = array(
					'text' => 'text_color',
					'border' => 'border_color',
					'muted' => 'disable_color',
				);

				if (class_exists('Elementor\Plugin')) {
					$kit_id = Elementor\Plugin::$instance->kits_manager->get_active_id();

					$kit = Elementor\Plugin::$instance->documents->get( $kit_id );
					$meta_key = Elementor\Core\Settings\Page\Manager::META_KEY;
					$kit_raw_settings = $kit->get_meta( $meta_key );

					if (!isset($kit_raw_settings['system_colors'])) {
						return;
					}

					foreach ($map_colors as $k => $v) {
						if (isset($current_skin_option[$v])) {
							foreach ($kit_raw_settings['system_colors'] as &$cl) {
								if ($cl['_id'] === $k) {
									$cl['color'] = $current_skin_option[$v];
								}
							}
						}
					}

					$kit->update_meta($meta_key, $kit_raw_settings);

					$post_css = Elementor\Core\Files\CSS\Post::create( $kit_id );
					$post_css->delete();
				}
			}
		}

		private function get_elements()
		{
			$element_event = $element_portfolio = $element_product = array();

			if(class_exists('Tribe__Events__Main')) {
				$element_event = array(
					'Events' => esc_html__('Auteur Events', 'auteur-framework'),
					'Events_Slider' => esc_html__('Auteur Events Slider', 'auteur-framework'),
					'Event_Countdown' => esc_html__('Event Countdown', 'auteur-framework'),
				);
			}

			$custom_post_type_disable = G5P()->options()->get_custom_post_type_disable();
			if(!in_array('portfolio', $custom_post_type_disable)) {
				$element_portfolio = array(
					'Portfolios'          => esc_html__( 'Portfolios', 'auteur-framework' ),
					'Portfolios_Slider'   => esc_html__( 'Portfolios Slider', 'auteur-framework' ),
					'Portfolios_Singular' => esc_html__( 'Portfolios Singular', 'auteur-framework' ),
					'Portfolios_Category' => esc_html__( 'Portfolios Category', 'auteur-framework' ),
				);
			}

			if (class_exists('WooCommerce')) {
				$element_product = array(
					'Product_Singular' => esc_html__('Product Singular', 'auteur-framework'),
					'Products' => esc_html__('Products', 'auteur-framework'),
					'Products_Slider' => esc_html__('Products Slider', 'auteur-framework'),
					'Product_Tabs' => esc_html__('Product Tabs', 'auteur-framework'),
					'Product_Tabs_Slider' => esc_html__('Product Tabs Slider', 'auteur-framework'),
					'Products_Review' => esc_html__('Products Review', 'auteur-framework'),
					'Products_Authors' => esc_html__('Products Authors', 'auteur-framework'),
				);
			}

			$element = array(
				'Posts' => esc_html__('Auteur Post', 'auteur-framework'),
				'Posts_Slider' => esc_html__('Auteur Posts Slider', 'auteur-framework'),
			);

			return apply_filters('auteur_elements', array_merge($element_event,$element_portfolio,$element_product,$element));
		}

		public function register_scripts() {
			wp_register_script(G5P()->assetsHandle('posts'),G5P()->helper()->getAssetUrl('assets/js/elementor/posts.min.js'),array(),G5P()->pluginVer());
			wp_register_script(G5P()->assetsHandle('posts-slider'),G5P()->helper()->getAssetUrl('assets/js/elementor/posts-slider.min.js'),array(),G5P()->pluginVer());
			wp_register_script(G5P()->assetsHandle('products'),G5P()->helper()->getAssetUrl('assets/js/elementor/products.min.js'),array(),G5P()->pluginVer());
			wp_register_script(G5P()->assetsHandle('products-slider'),G5P()->helper()->getAssetUrl('assets/js/elementor/products-slider.min.js'),array(),G5P()->pluginVer());
			wp_register_script(G5P()->assetsHandle('product-tabs'),G5P()->helper()->getAssetUrl('assets/js/elementor/product-tabs.min.js'),array(),G5P()->pluginVer());
			wp_register_script(G5P()->assetsHandle('product-tabs-slider'),G5P()->helper()->getAssetUrl('assets/js/elementor/product-tabs-slider.min.js'),array(),G5P()->pluginVer());
			wp_register_script(G5P()->assetsHandle('products-review'),G5P()->helper()->getAssetUrl('assets/js/elementor/products-review.min.js'),array(),G5P()->pluginVer());
			wp_register_script(G5P()->assetsHandle('products-authors'),G5P()->helper()->getAssetUrl('assets/js/elementor/products-authors.min.js'),array(),G5P()->pluginVer());
			wp_register_script(G5P()->assetsHandle('events'),G5P()->helper()->getAssetUrl('assets/js/elementor/events.min.js'),array(),G5P()->pluginVer());
			wp_register_script(G5P()->assetsHandle('events-slider'),G5P()->helper()->getAssetUrl('assets/js/elementor/events-slider.min.js'),array(),G5P()->pluginVer());
			wp_register_script(G5P()->assetsHandle('event-countdown'),G5P()->helper()->getAssetUrl('assets/js/elementor/event-countdown.min.js'),array(),G5P()->pluginVer());
			wp_register_script(G5P()->assetsHandle('portfolios'),G5P()->helper()->getAssetUrl('assets/js/elementor/portfolios.min.js'),array(),G5P()->pluginVer());
			wp_register_script(G5P()->assetsHandle('portfolios-slider'),G5P()->helper()->getAssetUrl('assets/js/elementor/portfolios-slider.min.js'),array(),G5P()->pluginVer());
			wp_register_script(G5P()->assetsHandle('portfolios-singular'),G5P()->helper()->getAssetUrl('assets/js/elementor/portfolios-singular.min.js'),array(),G5P()->pluginVer());
		}

		public function register_style() {
			wp_register_style(G5P()->assetsHandle('product-singular'), G5P()->helper()->getAssetUrl('shortcodes/product-singular/assets/scss/product-singular.min.css'), array(), G5P()->pluginVer());
			wp_register_style(G5P()->assetsHandle('product-reviews'), G5P()->helper()->getAssetUrl('shortcodes/product-reviews/assets/scss/product-reviews.min.css'), array(), G5P()->pluginVer());
			wp_register_style(G5P()->assetsHandle('portfolio-singular'), G5P()->helper()->getAssetUrl('shortcodes/portfolio-singular/assets/scss/portfolio-singular.min.css'), array(), G5P()->pluginVer());
			wp_register_style(G5P()->assetsHandle('event-countdown'), G5P()->helper()->getAssetUrl('shortcodes/countdown/assets/scss/countdown.min.css'), array(), G5P()->pluginVer());
			wp_register_style(G5P()->assetsHandle('portfolio-category'), G5P()->helper()->getAssetUrl('shortcodes/portfolio-category/assets/scss/portfolio-category.min.css'), array(), G5P()->pluginVer());
		}

		public function change_ube_get_element_configs($configs)
		{

			$elements = $this->get_elements();

			$g5_elements = isset($configs['auteur_elements']) ? $configs['auteur_elements'] : array(
				'title' => esc_html__('Auteur Elements', 'auteur-framework'),
				'items' => array()
			);

			foreach ($elements as $k => $v) {
				$g5_elements['items']["Auteur_{$k}"] = array(
					'title' => $v
				);
			}

			$configs['auteur_elements'] = $g5_elements;
			return $configs;
		}

		public function change_ube_autoload_file_dir($path, $class)
		{
			$prefix = 'UBE_Element_Auteur_';
			if (strpos($class, $prefix) === 0) {
				$file_name = substr($class, strlen($prefix));
				$file_name = str_replace('_', '-', $file_name);
				$file_name = strtolower($file_name);
				return G5P()->pluginDir("elements/{$file_name}/config.php");
			}
			return $path;
		}

		public function elementor_custom_css()
		{
			$body_font = G5P()->options()->get_body_font();
			$body_font = GSF()->core()->fonts()->processFont($body_font);
			$body_font_family = GSF()->core()->fonts()->getFontFamily($body_font['font_family']);

			$primary_font = G5P()->options()->get_primary_font();
			$primary_font_family = GSF()->core()->fonts()->getFontFamily($primary_font['font_family']);

			$custom_css = <<<CSS
			body.elementor-page {
	--e-global-typography-primary-font-family: '{$primary_font_family}';
	
	--e-global-typography-text-font-family : '{$body_font_family}';
	--e-global-typography-text-font-weight: {$body_font['font_weight']};
}	
			
			
		.elementor-column-gap-default > .elementor-column > .elementor-element-populated {
			padding: 15px;
		}
CSS;
			wp_add_inline_style('elementor-frontend', $custom_css);
		}

	}
}