Function Reference: geodir_event_loop_filter_where

Summary

This function has not been documented yet.

Filters

‘geodir_event_listing_filter_where’ [Line: 527]

Source File

geodir_event_loop_filter_where() is located in geodir_event_manager/gdevents_functions.php [Line: 458]

Source Code

function geodir_event_loop_filter_where($where) {
	global $wp_query,$query,$wpdb,$geodir_post_type,$table,$condition_date;
	
	$condition = '';
	$current_date = date_i18n('Y-m-d');
	
	if ( get_query_var( 'event_related_id' ) ) {
		if ( get_query_var( 'geodir_event_type' ) == 'feature' ) {
			$condition = " ( event_date >= '" . $current_date . "' OR ( event_date <= '" . $current_date . "' AND event_enddate >= '" . $current_date . "' ) ) ";
		}
		
		if ( get_query_var( 'geodir_event_type' ) == 'past' ) {
			$condition = " event_date <= '" . $current_date . "' ";
		}
			
		if ( get_query_var( 'geodir_event_type' ) == 'upcoming' ) {
			$condition = " ( event_date >= '" . $current_date . "' OR ( event_date <= '" . $current_date . "' AND event_enddate >= '" . $current_date . "' ) ) ";
		}
		
		$where .= " AND " . $table . ".geodir_link_business = " . get_query_var( 'event_related_id' );
	}
	
	if (get_query_var('geodir_event_date_calendar')) {
		$current_year = date_i18n('Y', get_query_var('geodir_event_date_calendar'));
		$current_month = date_i18n('m', get_query_var('geodir_event_date_calendar'));
		
		//$condition = " YEAR(event_date) = ".$current_year." AND MONTH(event_date) = ".$current_month." ";
		$month_start = $current_year . '-' . $current_month . '-01'; // First day of month.
		$month_end = date_i18n( 'Y-m-t', strtotime( $month_start ) ); // Get last day of month.
		
		$condition = "( ( ( '" . $month_start . "' BETWEEN event_date AND event_enddate ) OR ( event_date BETWEEN '" . $month_start . "' AND event_enddate ) ) AND ( ( '" . $month_end . "' BETWEEN event_date AND event_enddate ) OR ( event_enddate BETWEEN event_date AND '" . $month_end . "' ) ) )";
	}	
	
	if ($condition) {
			
		$find_postids = $wpdb->get_var("SELECT GROUP_CONCAT( DISTINCT event_id SEPARATOR "','") as event_ids FROM ".EVENT_SCHEDULE." WHERE ".$condition);
		
		$event_ids = "'".$find_postids."'";
		
		if (get_query_var('geodir_event_date_calendar')) {
			$where .= " AND $wpdb->posts.ID IN ($event_ids)";
		} else {
			$where .= " AND $wpdb->posts.ID IN ($event_ids)";
		}
	}
	// for dashboard listing
	$is_geodir_dashbord = isset($_REQUEST['geodir_dashbord']) && $_REQUEST['geodir_dashbord'] ? true : false;
	if ( ( is_main_query() && $geodir_post_type == 'gd_event' && (geodir_is_page('listing') || is_search() || $is_geodir_dashbord) ) || get_query_var('geodir_event_listing_filter')) {
		
		$filter = isset($_REQUEST['etype']) ? $_REQUEST['etype'] : '';
		
		if($filter == '')
			$filter = get_option('geodir_event_defalt_filter');
		
		if(get_query_var('geodir_event_listing_filter'))
			$filter = get_query_var('geodir_event_listing_filter');
		
		if ( $filter == 'today' ) {
			$where .= " AND ( " . EVENT_SCHEDULE . ".event_date = '" . $current_date . "' OR ( " . EVENT_SCHEDULE . ".event_date <= '" . $current_date . "' AND " . EVENT_SCHEDULE . ".event_enddate >= '" . $current_date . "' ) ) ";
		}
			
		if ( $filter == 'upcoming' ) {
			$where .= " AND ( " . EVENT_SCHEDULE . ".event_date >= '" . $current_date . "' OR ( " . EVENT_SCHEDULE . ".event_date <= '" . $current_date . "' AND " . EVENT_SCHEDULE . ".event_enddate >= '" . $current_date . "' ) ) ";
		}
		
		if ( $filter == 'past' ) {
			$where .= " AND " . EVENT_SCHEDULE . ".event_date < '" . $current_date . "' ";
		}

        $where = apply_filters('geodir_event_listing_filter_where', $where, $filter);

		if(isset($_REQUEST['event_start']) && !empty($_REQUEST['event_start']) && !isset($_REQUEST['event_end'])){
		
			$where .= " AND ".EVENT_SCHEDULE.".event_date = '".date_i18n('Y-m-d',strtotime($_REQUEST['event_start']))."' ";	
		
		}else{
		
			if(isset($_REQUEST['event_start']) && !empty($_REQUEST['event_start']))
				$where .= " AND ".EVENT_SCHEDULE.".event_date >= '".date_i18n('Y-m-d',strtotime($_REQUEST['event_start']))."' ";
				
			if(isset($_REQUEST['event_end']) && !empty($_REQUEST['event_end']))
				$where .= " AND ".EVENT_SCHEDULE.".event_date <= '".date_i18n('Y-m-d',strtotime($_REQUEST['event_end']))."' ";
		}
		
		
		
		if(isset($_SESSION['all_near_me'])){
			global $plugin_prefix,$wp_query;
			
			if(!$geodir_post_type){$geodir_post_type = $wp_query->query_vars['post_type'];}
			$table = $plugin_prefix . $geodir_post_type . '_detail';
			$DistanceRadius = geodir_getDistanceRadius(get_option('geodir_search_dist_1'));
			$mylat = $_SESSION['user_lat'];
			$mylon = $_SESSION['user_lon'];
			
			if(isset($_SESSION['near_me_range']) && is_numeric($_SESSION['near_me_range'])){$dist =$_SESSION['near_me_range']; }
			elseif(get_option('geodir_near_me_dist')!=''){$dist = get_option('geodir_near_me_dist');}
			else{ $dist = '200';  }
			
			$lon1 = $mylon-$dist/abs(cos(deg2rad($mylat))*69); 
			$lon2 = $mylon+$dist/abs(cos(deg2rad($mylat))*69);
			$lat1 = $mylat-($dist/69);
			$lat2 = $mylat+($dist/69);
			
			$rlon1 = is_numeric(min($lon1,$lon2)) ? min($lon1,$lon2) : '';
			$rlon2 = is_numeric(max($lon1,$lon2)) ? max($lon1,$lon2) : '';
			$rlat1 = is_numeric(min($lat1,$lat2)) ? min($lat1,$lat2) : '';
			$rlat2 = is_numeric(max($lat1,$lat2)) ? max($lat1,$lat2) : '';
			
			$where .= " AND ( ".$table.".post_latitude between $rlat1 and $rlat2 ) 
						AND ( ".$table.".post_longitude between $rlon1 and $rlon2 ) ";
		}
		
		// filter place for linked events
		$venue = isset( $_REQUEST['venue'] ) ? $_REQUEST['venue'] : '';
		if ( $venue != '' ) {
			$venue = explode( '-', $venue, 2);
			$venue_info = !empty($venue) && isset($venue[0]) ? get_post((int)$venue[0]) : array();
			$link_business_id = !empty( $venue_info ) && isset( $venue_info->ID ) ? (int)$venue_info->ID : '-1';
			
			$where .= " AND " . $table . ".geodir_link_business = " . (int)$link_business_id;
		}		
	}
	
	if ( is_search() && isset( $_REQUEST['geodir_search'] ) && isset( $_REQUEST['event_calendar'] ) && is_main_query() ) {
		$condition_date = substr( $_REQUEST['event_calendar'], 0, 4 ) . '-' . substr( $_REQUEST['event_calendar'] , 4, 2 ) . '-' . substr( $_REQUEST['event_calendar'], 6, 2 );
		$filter_date =  date_i18n( 'Y-m-d', strtotime( $condition_date ) );
		$condition = " ( event_date = '" . $filter_date . "' OR ( event_date <= '" . $filter_date . "' AND event_enddate >= '" . $filter_date . "' ) ) ";
		
		if ( $condition ) {
			$where .= " AND $condition ";
		}
	}
	
	return $where;
}