File "ElementorWidget.php"

Full Path: /home/attunedd/public_html/wp-content/plugins/carousel-slider/includes/Integration/Elementor/ElementorWidget.php
File size: 3.32 KB
MIME-type: text/x-php
Charset: utf-8

<?php

namespace CarouselSlider\Integration\Elementor;

use CarouselSlider\Frontend\Frontend;
use CarouselSlider\Helper;
use Elementor\Controls_Manager;
use Elementor\Widget_Base;

defined( 'ABSPATH' ) || exit;

/**
 * ElementorWidget class
 */
class ElementorWidget extends Widget_Base {

	/**
	 * Get element name.
	 *
	 * @inheritDoc
	 */
	public function get_name(): string {
		return 'carousel-slider-elementor';
	}

	/**
	 * Get element title.
	 *
	 * @inheritDoc
	 */
	public function get_title(): string {
		return esc_html__( 'Carousel Slider - Elementor', 'carousel-slider' );
	}

	/**
	 * Get widget icon.
	 *
	 * @inheritDoc
	 */
	public function get_icon(): string {
		return 'eicon-carousel';
	}

	/**
	 * Get script dependencies.
	 *
	 * @inheritDoc
	 */
	public function get_script_depends(): array {
		return [ 'carousel-slider-frontend' ];
	}

	/**
	 * Get style dependencies.
	 *
	 * @inheritDoc
	 */
	public function get_style_depends(): array {
		return [ 'carousel-slider-frontend' ];
	}

	/**
	 * Get widget keywords.
	 *
	 * @inheritDoc
	 */
	public function get_keywords(): array {
		return [ 'image', 'photo', 'carousel', 'slider' ];
	}

	/**
	 * Register controls.
	 *
	 * @inheritDoc
	 */
	protected function register_controls() {
		$posts   = Helper::get_sliders();
		$options = [];
		foreach ( $posts as $post ) {
			$options[ $post->ID ] = $post->post_title;
		}

		$this->start_controls_section(
			'content_section',
			[
				'label' => __( 'Slider Settings', 'carousel-slider' ),
				'tab'   => Controls_Manager::TAB_CONTENT,
			]
		);

		$this->add_control(
			'slider_id',
			[
				'label'      => __( 'Choose slider', 'carousel-slider' ),
				'type'       => Controls_Manager::SELECT,
				'input_type' => 'url',
				'options'    => $options,
			]
		);

		$this->add_control(
			'site_url',
			[
				'type'       => Controls_Manager::HIDDEN,
				'input_type' => 'hidden',
				'value'      => site_url(),
			]
		);

		$this->end_controls_section();
	}

	/**
	 * Render element output in the editor.
	 *
	 * @inheritDoc
	 */
	public function content_template() {
		?>
		<div class="carousel-slider-iframe-container">
			<div class="carousel-slider-iframe-overlay"></div>
			<iframe class="carousel-slider-iframe"
					src="{{settings.site_url}}?carousel_slider_preview=1&carousel_slider_iframe=1&slider_id={{settings.slider_id}}"
					height="0" width="500"></iframe>
		</div>
		<?php
	}

	/**
	 * Render element.
	 *
	 * @inheritDoc
	 */
	protected function render() {
		$settings  = $this->get_settings_for_display();
		$slider_id = intval( $settings['slider_id'] );

		if ( 'elementor' === ( $_GET['action'] ?? '' ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
			$args = add_query_arg(
				[
					'carousel_slider_preview' => true,
					'carousel_slider_iframe'  => true,
					'slider_id'               => $slider_id,
				],
				site_url()
			);

			$html  = '<div class="carousel-slider-iframe-container">';
			$html .= '<div class="carousel-slider-iframe-overlay"></div>';
			$html .= '<iframe class="carousel-slider-iframe" src="' . $args . '" height="0" width="500"></iframe>';
			$html .= '</div>';
			echo wp_kses_post( $html );

			return;
		}

		$html  = '<div class="carousel-slider-elementor-widget">';
		$html .= Frontend::init()->carousel_slide( [ 'id' => $slider_id ] );
		$html .= '</div>';

		echo wp_kses_post( $html );
	}
}