<?php
/*asanch92  Even Manager 
http://wp-events-plugin.com/tutorials/create-a-custom-placeholder-for-event-formatting/
Es restringeix la reserva de l'esdeveniment a un de sol si es forma part de l'etiqueta "Sortides" o "Tallers"
*/
include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
if ( is_plugin_active( 'events-manager/events-manager.php' ) ){
	//add_filter('em_event_output_placeholder','my_em_styles_placeholders',1,3);
	add_filter( 'em_bookings_has_booking','my_em_bookings_has_bookingSortides' ,10,2);
	add_filter( 'em_bookings_has_booking','my_em_bookings_has_bookingTallers' ,10,2);
}


function reserva_unica_js($EM_Event, $user_id, $tag){
	$replace="";
	// We are firstly checking if the user has already booked a ticket at this event, if so we do nothing.
	$EM_Booking = $EM_Event->get_bookings()->has_booking();
	if( !is_object($EM_Booking) && is_numeric($user_id) && $user_id > 0) {
		//Mirem si l'id d'usuari té més d'una reserva
		global $wpdb;
		$wpdb->show_errors();
		//Consultem els events reservats per l'usuari id
		$table_nameb = $wpdb->prefix.'em_bookings';
		$table_namee =  $wpdb->prefix.'em_events';
		$rows = $wpdb->get_results ($wpdb->prepare("select  e.event_id  from `$table_nameb` b, `$table_namee` e  where e.event_id=b.event_id and `person_id` = '%s' ", $user_id));	
		$wpdb->hide_errors();
		//Mirem tots els esdeveniments de la persona
		//i quan veiem que hi ha una reserva amb el tag 'tag' sortim del foreach
		$tagRepetit=false;
		if ( $rows ) {
			foreach ( $rows as $row ){		
				//Construeim un objecte EM_EVENT per recuperar els tags que té
				require_once (ABSPATH . '/wp-content/plugins/events-manager/classes/em-event.php');
				$event= new EM_Event($row->event_id);
				//Mirem els tags que te
				$count=0;
				$tags = get_the_terms($event->post_id, EM_TAXONOMY_TAG);
				if( is_array($tags) && count($tags) > 0 ){
					foreach($tags as $tagrow){ 
						//Hi ha un altre esdeveniment amb el mateix tag reserva per la persona
						if($tagrow->name == $tag ) {
							
							//Recuparem el booking associat
							$EM_Booking = $event->get_bookings()->has_booking();
							$replace=amagar_formulari_booking($tag, $EM_Booking);
							//Sortim del dos foreach
							break 2;
						}
					}
				}
			}
		}
	}
	
	return $replace;
}


//Amaguem el formulari que genera el placeholder #_BOOKINGFORM
function amagar_formulari_booking($tag, $EM_Booking){
 
	$content='<script type="text/javascript" language="Javascript">				
	            jQuery(document).ready(function($) {
					//$(".em-booking-form").hide();
					$(".'.$tag.'").show();
				});
	       	 </script>';
	return $content;
}

function my_em_bookings_has_bookingSortides($EM_Booking, $EM_Bookings){
	$tag2Match="Sortides"; 
	return my_em_bookings_has_booking($EM_Booking, $EM_Bookings, $tag2Match);

}

function my_em_bookings_has_bookingTallers($EM_Booking, $EM_Bookings){
	$tag2Match="Tallers"; 
	return my_em_bookings_has_booking($EM_Booking, $EM_Bookings, $tag2Match);

}

function my_em_bookings_has_booking($EM_Booking, $EM_Bookings, $tag2Match){
	//Si es la reserva, no fem res
	if(is_object($EM_Booking)){
		return $EM_Booking;
	}
	$user_id = get_current_user_id(); 
	//Mirem si l'id d'usuari té més d'una reserva
	global $wpdb;
	$wpdb->show_errors();
	//Consultem els events reservats per l'usuari id
	$table_nameb = $wpdb->prefix.'em_bookings';
	$table_namee =  $wpdb->prefix.'em_events';
	//recuparem tots els id d'esdeveniments que te reservades la persona actual 
	$bookings = $wpdb->get_results ($wpdb->prepare("select  e.event_id  from `$table_nameb` b, `$table_namee` e  where e.event_id=b.event_id and `person_id` = '%s' ", $user_id));	
	$wpdb->hide_errors();
	//Mirem tots els esdeveniments que te reservats la persona actual
	//i quan veiem que hi ha una reserva amb el tag 'tag' blocagem
	if ( $bookings ) {
		global $EM_Event;
		foreach ( $bookings as $booking ){
			//Mirem els tags que te l'esdeveniment reservat
			$event= new EM_Event($booking->event_id);
			
			//Mirem els tags que te l'esdeveniment reservat
			$tagsEvent = get_the_terms($event->post_id, EM_TAXONOMY_TAG);
			if( is_array($tagsEvent) && count($tagsEvent) > 0 ){
				foreach($tagsEvent as $tagEvent){ 
					//Si l'esdeveniment reservat te el tag a restringir, 
					//mirem si l'actual esdeveniment tambe te aquest tag
					if($tagEvent->name == $tag2Match ) {
						//Perque tot coincideixi i no deixar reservar l'actual event
						//tambe ha de tenir el $tag2Match
						
						$tagsEventAct = get_the_terms($EM_Event->post_id, EM_TAXONOMY_TAG);
						if( is_array($tagsEventAct) && count($tagsEventAct) > 0 ){
							foreach($tagsEventAct as $tag){ 
								if($tag->name == $tag2Match ) {
									return $booking;
								}
							}
						}
					}
				}
			}
		}
	}
		
	return $EM_Booking;
}


?>
