HEX
Server: Apache
System: Linux webm004.cluster121.gra.hosting.ovh.net 5.15.167-ovh-vps-grsec-zfs-classid #1 SMP Tue Sep 17 08:14:20 UTC 2024 x86_64
User: grainesdfo (155059)
PHP: 5.4.45
Disabled: _dyuweyrj4,_dyuweyrj4r,dl
Upload Files
File: /home/grainesdfo/www/wp-content/plugins/raven/includes/modules/custom-scripts/module.php
<?php

namespace Raven\Modules\Custom_Scripts;

defined( 'ABSPATH' ) || die();

use Raven\Base\Module_base;

class Module extends Module_Base {

	public function __construct() {
		parent::__construct();

		add_action( 'elementor/element/after_section_end', [ $this, 'register_controls' ], 15, 2 );
		add_action( 'elementor/css-file/post/parse', [ $this, 'page_custom_css' ] );
		add_action( 'wp_print_footer_scripts', [ $this, 'page_custom_js' ], 999 );
	}

	public function register_controls( \Elementor\Controls_Stack $controls_stack, $section_id ) {
		$allowed_post_types = [
			'wp-post',
			'wp-page',
		];

		if ( 'section_custom_css_pro' !== $section_id ) {
			return;
		}

		if ( ! in_array( $controls_stack->get_name(), $allowed_post_types, true ) ) {
			return;
		}

		$controls_stack->start_controls_section(
			'section_raven_custom_scripts',
			[
				'label' => __( 'Custom CSS/JS', 'raven' ),
				'tab' => 'advanced',
			]
		);

		$controls_stack->add_control(
			'raven_custom_css',
			[
				'type' => 'code',
				'label' => __( 'Custom CSS', 'raven' ),
				'language' => 'css',
				'render_type' => 'ui',
				'show_label' => true,
				'separator' => 'none',
			]
		);

		$controls_stack->add_control(
			'raven_custom_js',
			[
				'type' => 'code',
				'label' => __( 'Custom JS', 'raven' ),
				'language' => 'javascript',
				'render_type' => 'none',
				'show_label' => true,
				'separator' => 'none',
			]
		);

		$controls_stack->end_controls_section();
	}

	public function page_custom_css( $post_css ) {
		$document = \Elementor\Plugin::instance()->documents->get( $post_css->get_post_id() );

		if ( ! $document ) {
			return;
		}

		$custom_css = $document->get_settings( 'raven_custom_css' );

		$custom_css = trim( $custom_css );

		if ( empty( $custom_css ) ) {
			return;
		}

		$custom_css = str_replace( 'selector', $document->get_css_wrapper_selector(), $custom_css );

		$post_css->get_stylesheet()->add_raw_css( $custom_css );
	}

	public function page_custom_js() {
		if ( \Elementor\Plugin::instance()->editor->is_edit_mode() || \Elementor\Plugin::instance()->preview->is_preview_mode() ) {
			return;
		}

		$document = \Elementor\Plugin::instance()->documents->get( get_the_ID() );

		if ( ! $document ) {
			return;
		}

		$custom_js = $document->get_settings( 'raven_custom_js' );

		if ( empty( $custom_js ) ) {
			return;
		}

		echo "<script type='text/javascript'>{$custom_js}</script>";
	}

}