
Vic Ratnieks
Hi,
Is there a way of adding the FES form to the Full Calendar widget so that you can click on a day that does NOT have an event and that day becomes the default day of the booking being made?
The customer then fills in the rest of the form and the dates they have requested are marked pending until approved so no one else can book them?
Can the FES form be modal, or be used by a modal plugin like OceanWP modal?
Cheers, Vic

Stephen Harris
Downgrading to that version shouldn’t be a problem.
If anything is causing the duplicate bookings it will be something client-side (javascript). It might be difficult to determine what exactly is causing it though.
If you can provide access to the site, get in touch via the contact form I can take a look (or if you need the older version to revert to).

Michael Docker
I just created a test event to see how bookings are handled. I created a ticket with 50 spaces, capped the booking at 50 places and selected a booking form. When I go to the event it just says ‘This event is sold out’. Please help.

Stephen Harris
Hi David,
Regarding the duplicate booking issue, the above logs suggest that the client has made multiple requests. I haven’t been able to replicate this issue. Does it happen consistently? Can you see the browser making duplicate requests in your network tab of the browser console?
The eventorganiser_pre_gateway_booking has been deprecated since 3.0. (Apologies, this wasn’t listed in the changelog). How bookings/payments works now (in order to Strong Customer Authentication) is that the user stays on the same page for, and the browser makes a series of calls to the WordPress API.
When the booking is complete, the user can be redirected but this isn’t configurable on a per-gateway option.
However, the content of the confirmation section can be changed (see templates/eo-booking-form-confirmation.php). The template is written in PHP but then is rendered using underscore, so you can conditionally change the content based on the booking object (e.g. its status and amount).

AK
Thank you Stephen!
Date filter is working fine again.
I’m still testing v3 at my staging and there is just one thing I just wanted to check with you before I upgrade:
When I have a browser console open while submitting a booking form and I intentionally leave out a required field or giva a wrong answer to the math question.
This brings up the expected validation error messages for the user.
However in the browser console there now is the following error:
“XHR POST /wp-json/eventorg/v1/booking HTTP/2 400 Bad Request”
When the form is filled out corrected, submission is working normal.
Is that browser console error expected/normal here or is it a bug?
Grateful for your insights on this before I upgrade!
Thanks!
Anders

Stephen Harris
Hi Madeleine,
Just to confirm – you are seeing duplicate bookings rather than just duplicate notifications?
Are you able to provide a link to the site (and a login) for me to see this? First thing to check is if its caused by duplicate requests form the browser to the API or whether something on the API is calling the booking code to run twice.
The former can be checked by looking in the network tab of your browser console.
For the latter, first add define( 'WP_DEBUG_LOG', true); in wp-config.php above where it says to stop editing. Then add the following line
$this->logger->error(wp_debug_backtrace_summary());
immediately before eo_insert_booking() on line 167 of includes/booking/BookingController.php.
Then make a test booking. In your wp-content folder you should see an eventorganiserp.log. file. In it, corresponding to the time when you made the booking you should see something like
[eventorgpro-error] 2021-03-26 00:48:42 172.19.0.1 require(‘wp-blog-header.php’), wp, WP->main, WP->parse_request, do_action_ref_array(‘parse_request’), WP_Hook->do_action, WP_Hook->apply_filters, rest_api_loaded, WP_REST_Server->serve_request, WP_REST_Server->dispatch, WP_REST_Server->respond_to_request, EventOrganiserPro\WP{closure}, EventOrganiserPro\booking\BookingController->create_booking
What logs do you see?

Madeleine Parkyn
Hi Stephen
In case this helps. When I test the booking form (using a new private browser window) only one booking is made and one confirmation email sent. The duplicates are happening when other people make bookings.
Many thanks
Madeleine

Madeleine Parkyn
Hello Stephen
I have a problem which has just started in the last few days. When someone books an event the system is making duplicate bookings and sending out 2 email confirmations. I realise that you probably need more information than this, but do you know why this is happening? Or what else do you need to know?
This is quite pressing because it is causing us a lot of trouble.
Many thanks for your help.
Madeleine

Robert Stankey
Hi Stephen,
It looks like you’ve solved my issue with the symptoms described. For those interested, in my case I had an entry form with custom fields and I only wanted those fields to be displayed in the bookings view for the events that used said entry form. This link provides more detail on what my issue was – https://wp-event-organiser.com/forums/topic/checkbox-required-option-not-working-in-attendee-questions/
Thanks!

Stephen Harris
Hi Robert,
I’ve tested this using the code from https://wp-event-organiser.com/blog/tutorial/attendee-questions/ by adding a require checkbox and it works as intended.
Looking at your code, I can see you have a $wp_query->post->post_name condition. If that condition fails, then the fields are not added to the form. The assumption here is that $wp_query is populated with the detail of the current event, but that is not necessarily the case (in fact, probably isn’t) when processing the booking which is done via REST API call. It will generally be true when rendering the form which is probably why you are seeing the fields ok.
Given your other post about missing data, I think what’s happening here is that when the booking is processed you’re conditional is false so the attendee fields are not added. This means the attendee data fields are neither validated (this issue) nor saved (this issue).
I appreciate that in the other issue you say you’ve used the code in the original blog post so I could be wrong.
However, if you want to target a particular event you can reliably get that event ID as the second argument to the eventorganiser_get_event_booking_form callback:
function my_attach_attendee_questions( $form, $event_id ){
//...
}
add_action( 'eventorganiser_get_event_booking_form', 'my_attach_attendee_questions', 5, 2 );
Notice the additional 2 as the fourth argument to add_action, and the additional $even_id as a second argument to the callback function.

Robert Stankey
I’m creating a new booking form (ie – a registration form) for an upcoming event and need to collect information from each ticket purchased. I found information on creating Attendee Questions (https://wp-event-organiser.com/blog/tutorial/attendee-questions/) and one question requires clicking on a checkbox to accept a consent form. The checkbox is set to required but I can click the Book button to proceed without checking the box.
As an additional experiment I went back to the Booking form and added a required checkbox and that works correctly so there’s something about programmatically adding it as an Attendee Question that is a bug (or something I’m not following correctly).
Here is my code
add_action( ‘eventorganiser_get_event_booking_form’, ‘my_attach_attendee_questions’, 5 );
function my_attach_attendee_questions( $form ){
global $wp_query;
mylog($wp_query->post->post_name);
if($wp_query->post->post_name == 'signup-test') {
mylog("found signup-test");
//Define the field we want to add
$attendee_fields = array(
array(
'id' => '_competitor-consent',
'label' => 'test label',
'options' => array( 'A' => 'I agree to the consent agreement.'),
'type' => 'checkbox',
'required' => true,
),
);
//The attendee-questions element acts as a 'holder' for the elements
//we want repeated for each ticket
$attendee_questions = $form->get_element( 'attendee-questions' );
//If it doesn't exist, we'll create it
if ( ! $attendee_questions ) {
$ticketpicker = $form->get_element( 'ticketpicker' );
$position = intval( $ticketpicker->get( 'position' ) ) + 1;
$parent = $ticketpicker->get_parent();
$parent = ( $parent ? $parent->id : false );
//Create the attendee questions els
$attendee_questions = EO_Booking_Form_Element_Factory::create(array(
'id' => 'attendee-questions',
'type' => 'attendee-questions',
'elements' => $attendee_fields,
'ticket_label' => "Ticket: {{{ticketname}}}",
));
//Add the attendee questions right after the ticket picker
$form->add_element( $attendee_questions, array( 'at' => $position, 'parent' => $parent ) );
} else {
//Attendee questions field already exists, optional: over-ride with our elements
$attendee_questions->set( 'elements', $attendee_fields );
$attendee_questions->_modelElements->set( $attendee_questions->get('elements'), array( 'form' => $form ) );
}
}
}

Stephen Harris
Hi Denis,
Typically this should only happen if you have “simple booking enabled” in the booking form settings – it isn’t by default – and you only have one ticket.
If it isn’t, then I might need to look at the site to investigate further.

Denis Voelke
Hello,
I’m sorry but I don’t understand at all how to display, in the reservation form, the field allowing to choose the number of places to reserve. I have the PRO license, I have also installed “Event Organiser Booking Notification Settings”. The reservation form is displayed, but not the possibility to choose the number of places. Thanks for your help!
Denis

Jean Fraser
Hi Stephen
We are experiencing the exact same issue. Using the latest version of both the standard and pro bugin the booking form fields just reorder themselves randomly after saving.
Standard version: 3.10.2
Pro Version: 3.0.16
I was able to go through various backups to find older versions I had of the pro version and 3.0.9 works fine. The next version I have is 3.0.14 which also mixes everything up as well as 3.0.15.
Interestingly I note in the Change Log that the issue was dealt with in 3.0.10… unfortunately I don’t have a copy of this version but it seems that it worked fine for me before this.
In an attempt to troubleshoot the issue I installed a fresh copy of WordPress using just the default WordPress theme and only the Event Organiser plugins… the issue occurred with this senario.
For now we are using the older version of the pro plugin… but obviously would prefer to be using the latest version.
Many thanks

Stephen Harris
Hi Robert,
So that message appears if eo_get_schedule_last() return a date object earlier than ‘now’.
That in turn calls eo_get_event_schedule and uses the schedule_last key from the return array. That gets the last start date from event meta (wp_postmetadata table). Specifically the key _eventorganiser_schedule_last_start. So you should check the database for that key for that event.
Alternatively you could edit the eo-booking-form.php template in event-organiser-pro/templates to print out the date-time its returning.
My guess is that that key in the database is either been deleted or doesn’t exist. I’ve not come across this issue, but changing the event’s dates and resaving the event should update it. (Note, it’s not might not get updated if you don’t make changes to the event)