HEX
Server: nginx/1.24.0
System: Linux webserver 6.8.0-59-generic #61-Ubuntu SMP PREEMPT_DYNAMIC Fri Apr 11 23:16:11 UTC 2025 x86_64
User: wpuser (1002)
PHP: 8.3.6
Disabled: NONE
Upload Files
File: /opt/wpsites/datainsightnow.com/wp-content/plugins/essential-blocks/blocks/PostCarousel.php
<?php
namespace EssentialBlocks\blocks;

use EssentialBlocks\Utils\Helper;

class PostCarousel extends PostBlock {
	protected $frontend_scripts = array(
		'essential-blocks-post-carousel-frontend',
		'essential-blocks-slickjs',
	);
	protected $frontend_styles  = array(
		'essential-blocks-frontend-style',
		'essential-blocks-slick-style',
		'essential-blocks-fontawesome',
	);

	protected static $default_attributes = array(
		'arrows'           => true,
		'dots'             => true,
		'dotPreset'        => 'dot-circle',
		'autoplaySpeed'    => 3000,
		'speed'            => 500,
		'adaptiveHeight'   => true,
		'autoplay'         => true,
		'infinite'         => true,
		'pauseOnHover'     => true,
		'slideToShowRange' => 3,
		'titleLength'      => '10',
		'leftArrowIcon'    => 'fas fa-chevron-circle-left',
		'rightArrowIcon'   => 'fas fa-chevron-circle-right',
	);

	public function get_default_attributes() {
		return array_merge( parent::$default_attributes, self::$default_attributes );
	}

	/**
	 * Unique name of the block.
	 *
	 * @return string
	 */
	public function get_name() {
		return 'post-carousel';
	}

	/**
	 * Register all other scripts
	 *
	 * @return void
	 */
	public function register_scripts() {
		$this->assets_manager->register(
			'post-carousel-frontend',
			$this->path() . '/frontend/index.js',
			array( 'jquery' )
		);
		$this->assets_manager->register( 'slickjs', 'js/slick.min.js' );
	}

	/**
	 * Block render callback.
	 *
	 * @param mixed $attributes
	 * @param mixed $content
	 * @return mixed
	 */
	public function render_callback( $attributes, $content ) {
		if ( is_admin() ) {
			return;
		}

		$queryData = $attributes['queryData'];

		// Query Result
        $result = $this->get_posts( $queryData );
        $query  = [];
        if ( isset( $result->posts ) && is_array( $result->posts ) && count( $result->posts ) > 0 ) {
            $query = apply_filters( 'eb_post_carousel_query_results', $result->posts );
        }

		$attributes = wp_parse_args( $attributes, $this->get_default_attributes() );

		$className = isset( $attributes['className'] ) ? $attributes['className'] : '';
		$classHook = isset( $attributes['classHook'] ) ? $attributes['classHook'] : '';

		$_default_attributes = array_keys( parent::$default_attributes );
		if ( isset( $attributes['leftArrowIcon'] ) ) {
			$_default_attributes[] = 'leftArrowIcon';
		}
		if ( isset( $attributes['rightArrowIcon'] ) ) {
			$_default_attributes[] = 'rightArrowIcon';
		}
		$_essential_attrs = array();
		array_walk(
			$_default_attributes,
			function ( $key ) use ( $attributes, &$_essential_attrs ) {
				$_essential_attrs[ $key ] = $attributes[ $key ];
			}
		);

		$_slider_attributes = self::$default_attributes;

		unset( $_slider_attributes['dotPreset'] );
		unset( $_slider_attributes['titleLength'] );

		$_slider_attributes['TABslideToShowRange'] = 2;
		$_slider_attributes['MOBslideToShowRange'] = 1;

		$_slider_settings = array();
		array_walk(
			$_slider_attributes,
			function ( $value, $key ) use ( $attributes, &$_slider_settings ) {
				$_slider_settings[ $key ] = isset( $attributes[ $key ] ) ? $attributes[ $key ] : $value;
			}
		);

		ob_start();
		Helper::views(
			'post-carousel',
			array_merge(
				$attributes,
				array(
					'essentialAttr'  => $_essential_attrs,
					'sliderSettings' => $_slider_settings,
					'className'      => $className,
					'classHook'      => $classHook,
					'thumbnailSize'  => '',
					'posts'          => $query,
					'block_object'   => $this,
				)
			)
		);

		return ob_get_clean();
	}
}