<?php if ( ! defined( 'ABSPATH' ) ) { exit; } if ( ! class_exists( 'Gutentor_P3_Hooks' ) ) { /** * Block Specific Hooks Class For Gutentor * * @package Gutentor * @since 2.0.0 */ class Gutentor_P3_Hooks extends Gutentor_Block_Base { /** * Name of the block. * * @access protected * @since 1.0.1 * @var string */ protected $block_name = 'p3'; /** * Prevent some functions to called many times * * @access private * @since 2.0.0 * @var integer */ private static $counter = 0; /** * Gets an instance of this object. * Prevents duplicate instances which avoid artefacts and improves performance. * * @static * @access public * @since 2.0.0 * @return object */ public static function get_instance() { // Store the instance locally to avoid private static replication. static $instance = null; // Only run these methods if they haven't been ran previously. if ( null === $instance ) { $instance = new self(); } // Always return the instance. return $instance; } /** * Set register_block_type_args variable on parent * Used for blog template loading * * @since 3.0.6 * @package Gutentor * @author Gutentor <info@gutentor.com> */ public function register_block_type_args() { $this->register_block_type_args = array( 'view_script_handles' => array( 'slick' ), 'style_handles' => array( 'slick' ), ); } /** * Add Filter * * @access public * @since 2.0.0 * @return void */ public function add_filter( $hook, $component, $callback, $priority = 10, $accepted_args = 1 ) { add_filter( $hook, array( $component, $callback ), $priority, $accepted_args ); } /** * Add Action * * @access public * @since 2.0.0 * @return void */ public function add_action( $hook, $component, $callback, $priority = 10, $accepted_args = 1 ) { add_action( $hook, array( $component, $callback ), $priority, $accepted_args ); } /** * Run Block * * @access public * @since 2.0.0 * @return void */ public function run() { parent::run(); /*Block Specific PHP hooks*/ $this->add_filter( 'gutentor_post_module_main_wrap_class', $this, 'add_carousel_arrow_class', 15, 2 ); $this->add_filter( 'gutentor_post_module_grid_row_class', $this, 'add_carousel_row', 15, 2 ); $this->add_filter( 'gutentor_post_module_attr', $this, 'add_carousel_data', 15, 2 ); $this->add_filter( 'gutentor_post_module_grid_column_class', $this, 'add_carousel_class', 15, 2 ); $this->add_filter( 'gutentor_post_module_before_block_items', $this, 'add_carousel_arrow', 15, 2 ); } /** * Adding Carousel Class * * @param {array} output * @param {object} props * @return {array} */ public function add_carousel_arrow_class( $output, $attributes ) { $gutentorBlockName = ( isset( $attributes['gName'] ) ) ? $attributes['gName'] : ''; $block_list = array( 'gutentor/p1' ); if ( ! in_array( $gutentorBlockName, $block_list ) ) { return $output; } if ( ! isset( $attributes['p1CarouselOpt'] ) || ! $attributes['p1CarouselOpt']['enable'] ) { return $output; } if ( ! isset( $attributes['p1CarouselOpt']['arrowsPosition'] ) ) { return $output; } $arrow_position = $attributes['p1CarouselOpt']['arrowsPosition']; $enable_desktop_arrow = isset( $attributes['p1CarouselOpt']['arrows'] ) && $attributes['p1CarouselOpt']['arrows']; $enable_tablet_arrow = isset( $attributes['p1CarouselOpt']['arrowsT'] ) && $attributes['p1CarouselOpt']['arrowsT']; $enable_mobile_arrow = isset( $attributes['p1CarouselOpt']['arrowsM'] ) && $attributes['p1CarouselOpt']['arrowsM']; $arrow_position_desktop = array_key_exists( 'desktop', $arrow_position ) ? $arrow_position['desktop'] : false; if ( $enable_desktop_arrow && $arrow_position_desktop ) { $output = gutentor_concat_space( $output, $arrow_position_desktop . '-desktop' ); } $arrow_position_tablet = array_key_exists( 'tablet', $arrow_position ) ? $arrow_position['tablet'] : false; if ( $enable_tablet_arrow && $arrow_position_tablet ) { $output = gutentor_concat_space( $output, $arrow_position_tablet . '-tablet' ); } $arrow_position_mobile = array_key_exists( 'mobile', $arrow_position ) ? $arrow_position['mobile'] : false; if ( $enable_mobile_arrow && $arrow_position_mobile ) { $output = gutentor_concat_space( $output, $arrow_position_mobile . '-mobile' ); } return $output; } /** * Adding Container Remove Classes * * @param {array} output * @param {object} props * @return string */ public function add_carousel_row( $output, $attributes ) { if ( ! isset( $attributes['p1CarouselOpt'] ) || ! $attributes['p1CarouselOpt']['enable'] ) { return $output; } $local_data = str_replace( 'grid-row', '', $output ); if ( isset( $attributes['p1CarouselOpt']['carouselID'] ) ) { $local_data = gutentor_concat_space( $local_data, $attributes['p1CarouselOpt']['carouselID'] ); } return gutentor_concat_space( $local_data, 'gutentor-module-carousel-row' ); } /** * Adding Carousel Data * * @param {array} output * @param {object} props * @return {array} */ public function add_carousel_data( $output, $attributes ) { if ( ! isset( $attributes['p1CarouselOpt'] ) || ! $attributes['p1CarouselOpt']['enable'] ) { return $output; } $p1CarouselOpt = $attributes['p1CarouselOpt']; $local_data = array(); if ( isset( $p1CarouselOpt['dots'] ) ) { $local_data['data-dots'] = ( $p1CarouselOpt['dots'] ) ? 'true' : 'false'; } if ( isset( $p1CarouselOpt['dotsT'] ) ) { $local_data['data-dotstablet'] = ( $p1CarouselOpt['dotsT'] ) ? 'true' : 'false'; } if ( isset( $p1CarouselOpt['dotsM'] ) ) { $local_data['data-dotsmobile'] = ( $p1CarouselOpt['dotsM'] ) ? 'true' : 'false'; } if ( isset( $p1CarouselOpt['arrowNext'] ) ) { $local_data['data-nextarrow'] = ( $p1CarouselOpt['arrowNext'] ) ? $p1CarouselOpt['arrowNext'] : ''; } if ( isset( $p1CarouselOpt['arrowsPrev'] ) ) { $local_data['data-prevarrow'] = ( $p1CarouselOpt['arrowsPrev'] ) ? $p1CarouselOpt['arrowsPrev'] : ''; } if ( isset( $p1CarouselOpt['arrows'] ) ) { $local_data['data-arrows'] = ( $p1CarouselOpt['arrows'] ) ? 'true' : 'false'; } if ( isset( $p1CarouselOpt['arrowsT'] ) ) { $local_data['data-arrowstablet'] = ( $p1CarouselOpt['arrowsT'] ) ? 'true' : 'false'; } if ( isset( $p1CarouselOpt['arrowsM'] ) ) { $local_data['data-arrowsmobile'] = ( $p1CarouselOpt['arrowsM'] ) ? 'true' : 'false'; } if ( isset( $p1CarouselOpt['arrowsPosition']['desktop'] ) ) { $local_data['data-arrowsPositionDesktop'] = ( $p1CarouselOpt['arrowsPosition']['desktop'] . '-desktop' ); } if ( isset( $p1CarouselOpt['arrowsPosition']['tablet'] ) ) { $local_data['data-arrowsPositionTablet'] = ( $p1CarouselOpt['arrowsPosition']['tablet'] . '-tablet' ); } if ( isset( $p1CarouselOpt['arrowsPosition']['mobile'] ) ) { $local_data['data-arrowsPositionMobile'] = ( $p1CarouselOpt['arrowsPosition']['mobile'] . '-mobile' ); } if ( isset( $p1CarouselOpt['infinite'] ) ) { $local_data['data-infinite'] = ( $p1CarouselOpt['infinite'] ) ? 'true' : 'false'; } if ( isset( $p1CarouselOpt['speed'] ) ) { $local_data['data-speed'] = $p1CarouselOpt['speed']; } if ( isset( $p1CarouselOpt['autoplay'] ) ) { $local_data['data-autoplay'] = ( $p1CarouselOpt['autoplay'] ) ? 'true' : 'false'; if ( isset( $p1CarouselOpt['autoplaySpeed'] ) ) { $local_data['data-autoplayspeed'] = $p1CarouselOpt['autoplaySpeed']; } if ( isset( $p1CarouselOpt['pauseOnFocus'] ) ) { $local_data['data-pauseonfocus'] = ( $p1CarouselOpt['pauseOnFocus'] ) ? 'true' : 'false'; } if ( isset( $p1CarouselOpt['pauseOnHover'] ) ) { $local_data['data-pauseonhover'] = ( $p1CarouselOpt['pauseOnHover'] ) ? 'true' : 'false'; } } if ( isset( $p1CarouselOpt['draggable'] ) ) { $local_data['data-draggable'] = ( $p1CarouselOpt['draggable'] ) ? 'true' : 'false'; } /*center mode*/ if ( isset( $p1CarouselOpt['cmondesktop'] ) ) { $local_data['data-cmondesktop'] = ( $p1CarouselOpt['cmondesktop'] ) ? 'true' : 'false'; if ( isset( $p1CarouselOpt['cmpaddingdesktop'] ) ) { $local_data['data-cmpaddingdesktop'] = ( $p1CarouselOpt['cmpaddingdesktop'] ) ? $p1CarouselOpt['cmpaddingdesktop'] : ''; } } if ( isset( $p1CarouselOpt['cmontablet'] ) ) { $local_data['data-cmontablet'] = ( $p1CarouselOpt['cmontablet'] ) ? 'true' : 'false'; if ( isset( $p1CarouselOpt['cmpaddingtablet'] ) ) { $local_data['data-cmpaddingtablet'] = ( $p1CarouselOpt['cmpaddingtablet'] ) ? $p1CarouselOpt['cmpaddingtablet'] : ''; } } if ( isset( $p1CarouselOpt['cmonmobile'] ) ) { $local_data['data-cmonmobile'] = ( $p1CarouselOpt['cmonmobile'] ) ? 'true' : 'false'; if ( isset( $p1CarouselOpt['cmpaddingmobile'] ) ) { $local_data['data-cmpaddingmobile'] = ( $p1CarouselOpt['cmpaddingmobile'] ) ? $p1CarouselOpt['cmpaddingmobile'] : ''; } } if ( isset( $p1CarouselOpt['slideitem']['desktop'] ) ) { $local_data['data-slideitemdesktop'] = $p1CarouselOpt['slideitem']['desktop']; } if ( isset( $p1CarouselOpt['slideitem']['tablet'] ) ) { $local_data['data-slideitemtablet'] = $p1CarouselOpt['slideitem']['tablet']; } if ( isset( $p1CarouselOpt['slideitem']['mobile'] ) ) { $local_data['data-slideitemmobile'] = $p1CarouselOpt['slideitem']['mobile']; } if ( isset( $p1CarouselOpt['slidescroll']['desktop'] ) ) { $local_data['data-slidescroll-desktop'] = $p1CarouselOpt['slidescroll']['desktop']; } if ( isset( $p1CarouselOpt['slidescroll']['tablet'] ) ) { $local_data['data-slidescroll-tablet'] = $p1CarouselOpt['slidescroll']['tablet']; } if ( isset( $p1CarouselOpt['slidescroll']['mobile'] ) ) { $local_data['data-slidescroll-mobile'] = $p1CarouselOpt['slidescroll']['mobile']; } return $local_data; } /** * Adding carousel class * * @param {array} output * @param {object} props * @return {array} */ public function add_carousel_class( $output, $attributes ) { if ( ! isset( $attributes['p1CarouselOpt'] ) || ! $attributes['p1CarouselOpt']['enable'] ) { return $output; } return gutentor_concat_space( $output, 'gutentor-carousel-item' ); } /** * Adding carousel class * * @param {array} output * @param {object} props * @return {array} */ public function add_carousel_arrow( $output, $attributes ) { $gutentorBlockName = ( isset( $attributes['gName'] ) ) ? $attributes['gName'] : ''; $block_list = array( 'gutentor/p1' ); if ( ! in_array( $gutentorBlockName, $block_list ) ) { return $output; } if ( ! isset( $attributes['p1CarouselOpt'] ) || ! $attributes['p1CarouselOpt']['enable'] ) { return $output; } $p1CarouselOpt = ( isset( $attributes['p1CarouselOpt'] ) && $attributes['p1CarouselOpt']['enable'] ) ? $attributes['p1CarouselOpt'] : false; $desktop_row_position = ( $p1CarouselOpt && isset( $p1CarouselOpt['arrowsPosition']['desktop'] ) && $p1CarouselOpt['arrowsPosition']['desktop'] ) ? $p1CarouselOpt['arrowsPosition']['desktop'] . '-desktop' : false; if ( $desktop_row_position != 'gutentor-slick-a-default-desktop' ) { $output .= '<div class="gutentor-slick-arrows"></div>'; } return $output; } } } /** * Return instance of Gutentor_P3_Hooks class * * @since 1.0.0 */ if ( ! function_exists( 'gutentor_p3_hooks' ) ) { function gutentor_p3_hooks() { return Gutentor_P3_Hooks::get_instance(); } } gutentor_p3_hooks()->run();