
Tina McCarthy
Hello
I run multiple events each week and I need to be able to distinguish and identify/download all registered users for each event.
Can I make a duplicate of a form or do I need to create one each time?
Many thanks

Stephen Harris
Just an updatehere: A custom class setting will be added for 1.7, and other settings to be added include:
- Allowing fields to be “nested” (but, only beneath the
fieldset
element) (1.7 – End of April / beginning of May)
- Moving booking name/e-mail and button within the form customiser (1.8)
- Adding conditional logic (TBA, tentatively 1.9).
Updates are typically one month apart (subject to sufficient beta testing), but 1.8 shall be a very import, but small update. So 1.9 may follow sooner.

John Ribar
Natalie — I had a similar problem, and Stephen sent me the following ideas:
If PayPal considers the payment confirmed (sometimes Payments ‘require action’, for instance if a different currency is used) then this indicates that PayPal was unable to communicate with your site. If you view the booking admin screen, does a PayPal transaction ID appear under the booking ID (the booking ID will be smaller number preceded by a hash tag, the transaction ID should be a letter/number ID appearing beneath it). If there isn’t an ID then PayPal wasn’t able to communicate with your site, if there is – then PayPal did but was unable to confirm payment (you can see the reason for this by viewing the booking’s admin screen and clicking ‘Show Gateway Response’).
In the former case this can be caused by some membership plug-ins if they are set up to redirect users, or some ‘maintaince mode’ plug-ins. If you have a PayPal business account you can log-in to PayPal and go to “My Acccount > History > IPN History”. This details the IPN (instant payment notifications) made to your site, indicating a confirmed payment.
If you view one of these, feel free to reply with the contents of that page. What is of particular importance is the notification url and the HTTP response status. However, I’d suggest first testing the plug-in without any plug-ins installed and switched to TwentyTweleve theme. If we can identify a conflict with a plug-in I’d be happy to look into it and resolve it for you.
Don’t know if it will fix your issues, but maybe something to start with…
John

Joe Iadanza
One more thing…
(First, thanks again for the tutorial link… I created the extra plugin from that and it worked perfectly. That was my first plugin making experience…)
On the booking form, when a offline payment option has been made for buying the ticket, It displays “Thank you for your booking. You shall receive an e-mail containing your tickets once we have confirmed payment”.
I see in FUNCTIONS, where this dialog is created. I want to change this wording. How can I do that (perhaps in my separate functions plugin?) so that it’s overriding this? If I change it in the plugin, I suspect it will just get written-over after the next update.
Cheers,
Joe

Stephen Harris
Hi Tina,
As a quick fix for the issue you can add:
#eo-booking-form .eo-bookee-details p{
margin: 0;
}
to your theme’s style.css
.
However this issue shall be addressed in 1.8 (not 1.7). In 1.7 there’s a lot of change to the way the plug-in handles booking forms, but there no noticable changes on the front-end. With those implemented 1.8 will be a much smaller update, largely addressing the issues you’ve raised (Name, e-mail, and “book” button all being brought into the form customiser).
This will cause some minor mark-up changes (though as you’ve noted, hopefully for the better). However, for those that have edited the template eo-booking-form.php
, some changes will be needed to update that template. The reason 1.8 will be a small, focused, update is so that efforts can be concentrated on ensuring its a smooth update, and that updating doesn’t “break” anything, but instead gives the user a chance to make any necessary alterations.
To be clear, only where the user has edited eo-booking-form.php
, will the user be required to do anything. The plan is currently to detect such an instance and alert the user to the changes. Additionally, for such users, changes won’t be immediate but request manual confirmation from the user.
I’ll be writing a blog post nearer the time regarding this .

Stephen Harris
Hi Adrian,
You can easily add an address field, however, this is saved with the booking, rather than with the user. Additionally there isn’t a way of pre-populating the fields.
The only way around this would be to use the ‘hook’ field. By adding a hook (call it adrian_booking_form_address_fields
) you can execute arbitrary code at that point:
function adrian_address_fields(){
//Print HTML mark-up for desired fields (e.g. address)
//Give the fields a name attribute which you'll use to retrieve the entered values later
if( is_user_logged_in() ){
$user_id = get_current_user_id;
//Use the user ID to pre-populate fields. Retrieving this data
//will depend on where you store it. It's probably best to use get_user_meta()/update_user_meta()
}
}
add_action( 'adrian_booking_form_address_fields', 'adrian_address_fields' );
The added fields should now appear in the booking form at the location you place the hook element. To save the data hook into eventorganiser_pre_gateway_booking
function adrian_save_address_fields( $booking_id ){
//Retrieve values: look in $_POST for the names you gave the fields
if( is_user_logged_in() ){
$user_id = get_current_user_id;
//Save data to the user ID
}
}
add_action( 'eventorganiser_pre_gateway_booking', 'adrian_save_address_fields' );
However, this data won’t appear along with the booking form (in the admin screen / bookings export ) as it’s effectively by-passing the booking form handling of things. Additional code could include it in the bookings export, however. Additionally the data is associated with the user, not booking.
In 1.8 there’s a major rewrite of the way the plug-in handles booking forms, exposing a lot API which can be used to pre-populate fields, or even add additional ones. This is due for the end of this month, and I’ll include a tutorial on how to do just that. In 1.8 you could pre-populate fields and/or store the data elsewhere, and it’ll also be included along with rest of the booking form data.

Andrew Shankie
Hi Stephen,
I think I’ve found a bug – when using the Stripe payment gateway, if you select the credit card expiry year field, it seems to switch focus back to the month field, meaning that it’s impossible to complete your card details on iOS. I don’t immediately know what might be causing this as I don’t see anything in the Stripe JS about this.
Also, a minor typo that I discovered (though it’s not causing me any issues): on line 55 of eventorganiser-stripe-init.js, there’s an additional ‘e’ in the class name, i.e. .eeo-booking-form…
Cheers,
Andrew

Stephen Harris
Hi David,
There are two fields automatically added to the booking form name/e-mail, and if a user is logged in these are automatically hidden (and their profile fields are used).
You can hide events from logged-out users, by setting them as ‘private’ (this a standard WordPress feature that can be used to hide posts/pages from visitors). Who has permission to view private events can be set in the Settings > Event Organiser > Permissions page (available in the free version).
Regarding booking history, there are two shortcodes available: Booking history (which allows a user to view the bookings they’ve made) and events the user is attending in which they can view the event’s they are attending. I think the relevant of the two here is Booking history. However, currently this does not allow users to cancel existing bookings. An option to allow this will be implemented in the next major release (1.8) which is expected to be releases in early May.

Stephen Harris
Hi Catherine,
In the template, where you’ve added the details to the template you can wrap it in the following if
statement
$now = new DateTime( 'now', eo_get_blog_timezone() );
if( $now <= eo_get_schedule_last( DATETIMEOBJ ) ){
//Add link
}
eo_get_schedule_last()
returns the (start) date of the last occurrence for the event . (If the event is non-recurring then this is the start date of the event). The above if
statement displays the link only when that date is after ‘now’.
If you’re using the booking feature in Pro, then that should automatically suppress the booking form when the event has finished.

ckai
Hi Stephen,
thanks for your support. Your solution for my second questions works, but then the total costs are calculated wrong (with rounding errors and prices like 10,9847392945 EUR). Finally I write a text above the Booking Form that all taxes are included.
The shipping costs for hard tickets are working now. I modified occurrence-picker.js for the visible price and add a further item to the paypal gateway with 2 EUR shipping costs. Maybe not a very nice way, but it’s okay for the moment.
The ‘price fields’ sounds interessting anyway.
Thank you.

Stephen Harris
Yes, you can use the hook eventorganiser_pre_gateway_checkout_paypal
. E.g.:
function my_alter_paypal_cart( $cart, $booking ){
//$booking is an array. $booking['booking_id'] contains the booking ID
/*
$cart is of the form:
$cart = array(
'return' => //return url
'item_name_0' => //Ticket name,
'amount_0' => //Ticket price
'quantity_0' => //Ticket quantity,
'item_name_1' => //Ticket name (second ticket type),
'amount_1' => //Ticket price (second ticket type),
'quantity_1' => //Ticket quantity (second ticket type),
....
'custom' => //custom data as query variables. e.g. booking_id=X&event_id=Y...
);
*/
//Adjust $cart and return it
return $cart;
}
add_filter( 'eventorganiser_pre_gateway_checkout_paypal', 'my_alter_paypal_cart', 5, 2 );
The custom
key allows you to send extra data to PayPal. However, by default, extra data won’t ‘do’ anything. But should be viewable in PayPal. Please note that the value of the custom
is key is a query string, e.g. field_1=value_1&field_2=vaue_2....
. So if you wish to change the data sent you could do:
//Turn query string into array in $custom
parse_str( $cart['custom'], $custom );
//Alter $custom array. Do not change booking_id!
//Re-build custom query string with the altered $custom array
$cart['custom'] = build_query( $custom );
Note, you should never alter booking_id
, as the plug-in relies on this. By default included data is booking ID, event ID, occurrence ID, (booking) user ID, ticket quantity.
Does that help?

Andrew Shankie
Hi Stephen,
In general, I’m loving the new stripe plugin. There’s one slight catch – anecdotal evidence from users suggest that the form looks a bit ‘dodgy’ as it doesn’t have any payment card logos, or an indication that the payments are processed by a legitimate provider (Stripe). I think that this is discouraging some people from booking.
Though the styling here isn’t amazing, I hope you get the idea:
http://bracketfire.com/wp-content/uploads/2013/01/Screen-Shot-2013-01-01-at-3.54.27-PM.png
Thanks,
Andrew

Adrian Maleska
I’m using this function to calculate the event duration in days and display it above the booking form.
$curr_start_date = eo_get_the_start('Ymd', $event_id);
$curr_end_date = eo_get_the_end('Ymd', $event_id);
$event_duration_days = ($curr_end_date - $curr_start_date) +1;
$days_suffix = $event_duration_days > 1 ? "Days" : "Day";
echo "Event length is "."event_duration_days." ".$days_suffix;
On the event page everything works fine but I’m also using the booking form via shortcut in posts and there eo_get_the_start(‘Ymd’, $event_id); returns false.
I’m aware that this may be related to this post:
eo_get_the_start-not-working-anymore-on-update
Obviously I should feed the fourth argument with the occurrence id like that:
eo_get_the_start('Ymd', $event_id, null,$post->occurrence_id);
But I’m on an other page and $post->occurrence_id will deliver nothing. Now I’m stucked. Any idea how to get the occurrence id?

Urban Norlander
Hi
Now it´s impossible to submit mor than one ticket in total.
I don´t no whats wrong. I´ve tried to create anorher form and it´s ok to submit one ticket but than it says that it´s impossible to make anymore bookings. I have tried with a different email. But still no luck I can only submit one ticket in total.
Please help. I cant use event organiser if this problem continues
/Urban