<?php
namespace CarouselSlider\Modules\ImageCarousel;
use CarouselSlider\Abstracts\Data;
use CarouselSlider\Helper;
/**
* ExternalImageItem class
*
* @package CarouselSlider/Modules/ImageCarousel
*/
class ExternalImageItem extends Data {
/**
* The image url
*
* @param array $data The data.
*/
public function __construct( array $data ) {
$this->data = $data;
}
/**
* The image url.
*
* @return string
*/
public function get_image_url(): string {
return $this->get_prop( 'url' );
}
/**
* Get title
*
* @return string
*/
public function get_title(): string {
return $this->get_prop( 'title' );
}
/**
* Get caption
*
* @return string
*/
public function get_caption(): string {
return $this->get_prop( 'caption' );
}
/**
* Get alt text
*
* @return string
*/
public function get_alt_text(): string {
return $this->get_prop( 'alt' );
}
/**
* Get link
*
* @return string
*/
public function get_link_url(): string {
return $this->get_prop( 'link_url' );
}
/**
* Get image html
*
* @param bool $lazy Load image lazily.
*
* @return string
*/
public function get_image_html( bool $lazy = true ): string {
$attrs = [ 'alt' => esc_attr( $this->get_alt_text() ) ];
if ( $lazy ) {
if ( Helper::is_using_swiper() ) {
$attrs['src'] = esc_url( $this->get_image_url() );
$attrs['loading'] = 'lazy';
} else {
$attrs['class'] = 'owl-lazy';
$attrs['data-src'] = esc_url( $this->get_image_url() );
}
} else {
$attrs['src'] = esc_url( $this->get_image_url() );
}
return '<img ' . join( ' ', Helper::array_to_attribute( $attrs ) ) . ' />';
}
/**
* Get link start html
*
* @param string $target The target.
*
* @return string
*/
public function get_link_html_start( string $target = '_blank' ): string {
$link_url = $this->get_link_url();
if ( $link_url ) {
return '<a href="' . esc_url( $link_url ) . '" target="' . esc_attr( $target ) . '">';
}
return '';
}
/**
* Get link end html
*
* @return string
*/
public function get_link_html_end(): string {
$link_url = $this->get_link_url();
if ( $link_url ) {
return '</a>';
}
return '';
}
}