File "Module.php"
Full Path: /home/attunedd/public_html/wp-content/plugins/carousel-slider/modules/HeroCarousel/Module.php
File size: 2.72 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace CarouselSlider\Modules\HeroCarousel;
use CarouselSlider\Helper;
use CarouselSlider\Supports\Sanitize;
defined( 'ABSPATH' ) || exit;
/**
* Module class
*
* @package Modules/HeroCarousel
*/
class Module {
/**
* The instance of the class
*
* @var self
*/
protected static $instance;
/**
* Ensures only one instance of the class is loaded or can be loaded.
*
* @return self
*/
public static function init() {
if ( is_null( self::$instance ) ) {
self::$instance = new self();
add_filter( 'carousel_slider/register_view', [ self::$instance, 'view' ] );
add_action( 'carousel_slider/save_slider', [ self::$instance, 'save_slider' ], 10, 2 );
add_action( 'rest_api_init', [ new Controller(), 'register_routes' ] );
if ( Helper::is_request( 'admin' ) ) {
Admin::init();
Ajax::init();
}
}
return self::$instance;
}
/**
* Register view for hero carousel
*
* @param array $views List of views.
*
* @return array
*/
public function view( array $views ): array {
$views['hero-banner-slider'] = new View();
return $views;
}
/**
* Save slider content and settings
*
* @param int $slider_id The slider id.
* @param array $data User submitted data.
*/
public function save_slider( int $slider_id, array $data ) {
if ( isset( $data['carousel_slider_content'] ) ) {
$_content_slides = is_array( $data['carousel_slider_content'] ) ? $data['carousel_slider_content'] : [];
$_slides = array_map(
function ( $slide ) {
return Item::sanitize( $slide );
},
$_content_slides
);
$_slides = array_values( $_slides );
update_post_meta( $slider_id, '_content_slider', $_slides );
}
if ( isset( $data['content_settings'] ) && is_array( $data['content_settings'] ) ) {
$this->update_content_settings( $slider_id, $data['content_settings'] );
}
}
/**
* Update hero carousel settings
*
* @param int $post_id post id.
* @param array $setting Settings array.
*/
private function update_content_settings( int $post_id, array $setting ) {
$_settings = [
'slide_height' => Sanitize::css_dimension( $setting['slide_height'] ),
'content_width' => Sanitize::css_dimension( $setting['content_width'] ),
'content_animation' => sanitize_text_field( $setting['content_animation'] ),
'slide_padding' => [
'top' => Sanitize::css_dimension( $setting['slide_padding']['top'] ),
'right' => Sanitize::css_dimension( $setting['slide_padding']['right'] ),
'bottom' => Sanitize::css_dimension( $setting['slide_padding']['bottom'] ),
'left' => Sanitize::css_dimension( $setting['slide_padding']['left'] ),
],
];
update_post_meta( $post_id, '_content_slider_settings', $_settings );
}
}