HEX
Server: Apache
System: Linux webd004.cluster130.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64
User: frenchy (106757)
PHP: 7.4.33
Disabled: _dyuweyrj4,_dyuweyrj4r,dl
Upload Files
File: /home/frenchy/refonte2023/wordpress/wp-content/plugins/ova-events/inc/class-ovaev-get-data.php
<?php

if ( !defined( 'ABSPATH' ) ) {
	exit;
}

class OVAEV_get_data {
	public function __construct() {

		// dropdown event category
		add_filter( 'OVAEV_event_type', array( $this, 'OVAEV_event_type' ), 10, 1 );

		// hook to wp_query in archive event
		add_action( 'pre_get_posts', array( $this, 'ovaev_pre_get_events_archive' ) );

		// hook to wp_query in search event
		add_action( 'pre_get_posts', array( $this, 'ovaev_pre_get_events_search' ) );
		
	}


	public function ovaev_pre_get_events_search( $query ){

		$search_event = isset( $_GET['search_event'] ) ? esc_html( $_GET['search_event'] ) : '' ;

		if ( ! is_admin() && $query->is_main_query() ) {

			if( $search_event != ''){

				$cat = isset( $_GET['ovaev_type'] ) ? esc_html( $_GET['ovaev_type'] ) : '' ;
				$ovaev_start_date_search = isset( $_GET['ovaev_start_date_search'] ) ? esc_html( $_GET['ovaev_start_date_search'] ) : '' ;
				$ovaev_end_date_search 	= isset( $_GET['ovaev_end_date_search'] ) ? esc_html( $_GET['ovaev_end_date_search'] ) : '' ;
				
				$paged     = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
				$show_past = OVAEV_Settings::ovaev_show_past();
				$order     = OVAEV_Settings::archive_event_order();
				$orderby   = OVAEV_Settings::archive_event_orderby();


				if( $paged != '' ){
					$query->set( 'paged', $paged );
				}

				$query->set( 'post_type', 'event' );
				$query->set( 'order', $order );

				switch ($orderby) {
					case 'title':
					$query->set( 'orderby', 'title' );
					break;

					case 'event_custom_sort':
					$query->set( 'orderby' , 'meta_value' );
					$query->set( 'meta_key', $orderby );
					break;

					case 'ovaev_start_date':
					$query->set( 'orderby' , 'meta_value' );
					$query->set( 'meta_key', 'ovaev_start_date_time' );
					break;
					
					case 'ID':
					$query->set( 'orderby', 'ID');
					break;
					
					default:
					break;
				}


				// Query Taxonomy
				if($cat){
					$query->set( 
						'tax_query',
						array(
							array(
								'taxonomy' => 'event_category',
								'field'    => 'slug',
								'terms'    => $cat,
							)
						)		
					);
				}


				// Query Date
				if( $ovaev_start_date_search && $ovaev_end_date_search ){

					$query->set( 
						'meta_query',
						array(

							array(
								'relation' => 'OR',
								array(
									'key' 		=> 'ovaev_start_date_time',
									'value' 	=> array( strtotime($ovaev_start_date_search)-1, strtotime($ovaev_end_date_search)+(24*60*60)+1 ),
									'type' 		=> 'numeric',
									'compare' 	=> 'BETWEEN'	
								),
								array(
									'relation' 	=> 'AND',
									array(
										'key' 		=> 'ovaev_start_date_time',
										'value' 	=> strtotime($ovaev_start_date_search),
										'compare' 	=> '<'
									),
									array(
										'key' 		=> 'ovaev_end_date_time',
										'value' 	=> strtotime($ovaev_start_date_search),
										'compare' 	=> '>='
									)
								)
							)
						)
					);
				}
				else if ( $ovaev_start_date_search && !$ovaev_end_date_search ){

					$query->set(
						'meta_query',
						array(

							array(
								'relation' => 'OR',
								array(
									'key' 		=> 'ovaev_start_date_time',
									'value' 	=> [strtotime($ovaev_start_date_search), strtotime($ovaev_start_date_search)+24*60*60],
									'compare' 	=> 'BETWEEN'
								),
								array(
									'relation' 	=> 'AND',
									array(
										'key' 		=> 'ovaev_start_date_time',
										'value' 	=> strtotime($ovaev_start_date_search),
										'compare' 	=> '<'
									),
									array(
										'key' 		=> 'ovaev_end_date_time',
										'value' 	=> strtotime($ovaev_start_date_search),
										'compare' 	=> '>='
									)
								)
							)
						)
					);
				}
				else if ( !$ovaev_start_date_search && $ovaev_end_date_search ){

					$query->set(
						'meta_query',
						array(
							'key' 		=> 'ovaev_end_date_time',
							'value' 	=> strtotime($ovaev_end_date_search)+(24*60*60),
							'compare' 	=> '<='
						)

					);
				}
			}

		}
		

	}
	
	public function ovaev_pre_get_events_archive( $query ) {

		if ( ! is_admin() && $query->is_main_query() ) {

			if ( is_post_type_archive( 'event' ) || is_tax('event_category') || is_tax('event_tag') ) {

				$posts_per_page  = OVAEV_Settings::archive_event_posts_per_page();

				$paged     = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
				$show_past = OVAEV_Settings::ovaev_show_past();
				$order     = OVAEV_Settings::archive_event_order();
				$orderby   = OVAEV_Settings::archive_event_orderby();
				
				if( $show_past == 'no' ){
					$query->set(
						'meta_query',
						array(
							array(
								'key' => 'ovaev_end_date_time',
								'value' => current_time( 'timestamp' ),
								'compare' => '>'
							)
						)
					);
				}

				if( $paged != '' ){
					$query->set( 'paged', $paged );
				}
				
				$query->set( 'post_type', 'event' );
				$query->set( 'posts_per_page', $posts_per_page  );
				$query->set( 'order', $order );

				switch ($orderby) {
					case 'title':
					$query->set( 'orderby', 'title' );
					break;

					case 'event_custom_sort':
					$query->set( 'orderby' , 'meta_value' );
					$query->set( 'meta_key', $orderby );
					break;

					case 'ovaev_start_date':
					$query->set( 'orderby' , 'meta_value' );
					$query->set( 'meta_key', 'ovaev_start_date_time' );
					break;
					
					case 'ID':
					$query->set( 'orderby', 'ID');
					break;
				}

			}
		}
		
	}	
	

	/**
	 * Categories Event Type
	 */
	public function OVAEV_event_type($selected){

		$args = array(
			'show_option_all'   => '' ,
			'show_option_none'   => esc_html__( 'All Categories', 'ovaev' ),
			'post_type'         => 'event',
			'post_status'       => 'publish',
			'posts_per_page'    => '-1',
			'option_none_value' => '',
			'orderby'           => 'ID',
			'order'             => 'ASC',
			'show_count'        => 0,
			'hide_empty'        => 0,
			'child_of'          => 0,
			'exclude'           => '',
			'include'           => '',
			'echo'              => 1,
			'selected'          => $selected,
			'hierarchical'      => 1,
			'name'              => 'ovaev_type',
			'id'                => '',
			'depth'             => 0,
			'tab_index'         => 0,
			'taxonomy'          => 'event_category',
			'hide_if_empty'     => false,
			'value_field'       => 'slug',
			'class' 			=> 'ovaev_type',
		);
		
		return wp_dropdown_categories($args);
	}

	

	public static function get_events_simple_calendar( $category, $filter_event, $exclude_cat ){

		if( ! $category ) return [];

		$exclude_cat  = explode(", ",$exclude_cat);

		if( $category == 'all' ){
			$args_base = array(
				'post_type' 	 => 'event',
				'post_status' 	 => 'publish',
				'orderby'		 => 'id',
				'order'			 => 'ASC',
				'posts_per_page' => '-1',
				'tax_query' => array(
                    array(
                        'taxonomy' => 'event_category',
                        'field'    => 'term_id',
                        'terms'    => $exclude_cat,
                        'operator' => 'NOT IN',
                    ),
                ),
			);
		} else {
			$args_base = array(
				'post_type' 		=> 'event',
				'post_status' 		=> 'publish',
				'orderby'			=> 'id',
				'order'				=> 'ASC',
				'posts_per_page' 	=> '-1',
				'tax_query' => array(
					array(
						'taxonomy' => 'event_category',
						'field'    => 'slug',
						'terms'    => $category,
					)
				),
			);
		}

		//filter event
		if ( $filter_event == 'past_event' ) {
			$args_base['meta_query'] = [
				[
					'key' => 'ovaev_end_date_time',
					'value' => current_time( 'timestamp' ),
					'compare' => '<'
				],
			];
		} elseif ( $filter_event == 'upcoming_event' ) {
			$args_base['meta_query'] = [
				[
					'key' => 'ovaev_end_date_time',
					'value' => current_time( 'timestamp' ),
					'compare' => '>'
				],
			];
		} else {
			if ( $filter_event == 'special_event' ) {
				$args_base['meta_query'] = [
					[
						'key' => 'ovaev_special',
						'value' => 'checked',
						'compare' => '='
					],
				];
			}
		}

		$events = new WP_Query( $args_base );

		$events_array = array();

		if($events->have_posts() ) : while ( $events->have_posts() ) : $events->the_post();
				
			$id 		= get_the_id();
			$start_date = get_post_meta( $id, 'ovaev_start_date', true );
			$end_date 	= get_post_meta( $id, 'ovaev_end_date', true );	
			$item 		=  array(  
				'endDate' 	=> date( 'Y-m-d', strtotime( $end_date ) ) ,
				'startDate' => date( 'Y-m-d', strtotime( $start_date ) ) ,
				'url' 		=> get_post_type_archive_link( 'event' ).'?ovaev_start_date_search='.$start_date.'&ovaev_end_date_search=&ovaev_type=&post_type=event&search_event=search-event',
				
			);

	   		array_push($events_array, $item);

		endwhile; endif; wp_reset_postdata();
	    return json_encode( $events_array );
	}

	public static function get_events_calendar( $category, $filter_event, $exclude_cat ){
		if( ! $category ) return [];

		$exclude_cat  = explode(", ",$exclude_cat);
		
		if( $category == 'all' ){
			$args_base = [
				'post_type' 	 => 'event',
				'post_status' 	 => 'publish',
				'orderby'		 => 'id',
				'order'			 => 'ASC',
				'posts_per_page' => '-1',
				'tax_query' => array(
                    array(
                        'taxonomy' => 'event_category',
                        'field'    => 'term_id',
                        'terms'    => $exclude_cat,
                        'operator' => 'NOT IN',
                    ),
                ),
			];
		} else {
			$args_base = [
				'post_type' 		=> 'event',
				'post_status' 		=> 'publish',
				'orderby'			=> 'id',
				'order'				=> 'ASC',
				'posts_per_page' 	=> '-1',
				'tax_query' => [
					[
						'taxonomy' => 'event_category',
						'field'    => 'slug',
						'terms'    => $category,
					],
				],
			];
		}

		//filter event
		if ( $filter_event == 'past_event' ) {
			$args_base['meta_query'] = [
				[
					'key' => 'ovaev_end_date_time',
					'value' => current_time( 'timestamp' ),
					'compare' => '<'
				],
			];
		} elseif ( $filter_event == 'upcoming_event' ) {
			$args_base['meta_query'] = [
				[
					'key' => 'ovaev_end_date_time',
					'value' => current_time( 'timestamp' ),
					'compare' => '>'
				],
			];
		} else {
			if ( $filter_event == 'special_event' ) {
				$args_base['meta_query'] = [
					[
						'key' => 'ovaev_special',
						'value' => 'checked',
						'compare' => '='
					],
				];
			}
		}

		$events 	  = new WP_Query( $args_base );

		$events_array = array();

		if($events->have_posts() ) : while ( $events->have_posts() ) : $events->the_post();
				
			$id 				= get_the_id();
			$start_date 		= get_post_meta( $id, 'ovaev_start_date', true );
			$end_date 			= get_post_meta( $id, 'ovaev_end_date', true );	

			$special_event 		= get_post_meta( $id, 'ovaev_special', true );	

			$time_format 		= OVAEV_Settings::archive_event_format_time();

			$ovaev_start_date 	= get_post_meta( $id, 'ovaev_start_date_time', true );
			$ovaev_end_date   	= get_post_meta( $id, 'ovaev_end_date_time', true );

			$date_start    		= $ovaev_start_date != '' ? date_i18n(get_option('date_format'), $ovaev_start_date) : '';
			$date_end      		= $ovaev_end_date != '' ? date_i18n(get_option('date_format'), $ovaev_end_date) : '';

			$time_start    		= $ovaev_start_date != '' ? date_i18n( 'H:i', $ovaev_start_date ) : '';
			$time_end      		= $ovaev_end_date != '' ? date_i18n( 'H:i', $ovaev_end_date ) : '';

			$item = [
				'start' 	=> date( 'Y-m-d', strtotime( $start_date ) ) .' '.$time_start,
				'end' 		=> date( 'Y-m-d', strtotime( $end_date ) ) .' '.$time_end,
				'url' 		=> get_the_permalink(),
				'title' 	=> get_the_title(),
				'desc' 		=> '<a href='.get_the_permalink().'>'.get_the_post_thumbnail().'</a>'
								.'<p><a href='.get_the_permalink().'>'.get_the_title().'</a></p>',
				'special' 	=> $special_event,

			];
			array_push($events_array, $item);

		endwhile; endif; wp_reset_postdata();
	    return json_encode( $events_array );
	}

}
new OVAEV_get_data();