CCCPaste

Prevent guest users from booking before waitl...

<?php

/*
* Prevent guest users from booking before waitlists
*/

add_filter('em_bookings_is_open','my_booking_open', 100, 2);
function my_booking_open( $return, $EM_Bookings ){
global $wpdb;

if( get_option('dbem_waitlists_events') && !is_user_logged_in() ) {

$EM_Event = $EM_Bookings->get_event();

$waitlist_events = get_option('dbem_waitlists_events_default');

if ( $waitlist_events ){

if (!empty($EM_Event->event_attributes['waitlist'])) {

$statuses = array(6,7);

$sql = 'SELECT SUM(booking_spaces) FROM '.EM_BOOKINGS_TABLE. ' WHERE booking_status IN ('. implode(',', $statuses) .') AND event_id=%d';

$pending_spaces = $wpdb->get_var( $wpdb->prepare($sql, $EM_Bookings->event_id) );

if ( $pending_spaces > 0 ){

$return = false;

}

}

}

}


if( get_option('dbem_waitlists_events') && is_user_logged_in() ) {

$current_user = wp_get_current_user(); //$current_user->ID

$statuses = array(6,7);

$sql = 'SELECT SUM(booking_spaces) FROM '.EM_BOOKINGS_TABLE. ' WHERE booking_status IN ('. implode(',', $statuses) .') AND event_id=%d AND person_id=%d';

$pending_spaces = $wpdb->get_var( $wpdb->prepare($sql, $EM_Bookings->event_id, $current_user->ID ) );

if ( $pending_spaces > 0 && !isset($_REQUEST['uuid']) ){

$return = false;

}

}

return $return;
}