=== Booking Activities ===
Contributors: bookingactivities, yoancutillas
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=7EKU434L7NEVC
Tags: booking, reservation, booking form, woocommerce booking, booking events
Tested up to: 6.9
Stable tag: 1.16.46
License: GPLv3 or later
License URI: https://www.gnu.org/licenses/gpl-3.0.html

Reservation system specialized in activities: sports, leisure, courses, events, tourism, and more! Works great with WooCommerce.


== Description ==

Booking Activities is a complete booking tool designed for activities.
It is very easy to use:

1. **Drag and drop** your activities onto your schedule.
2. Copy / Paste a **shortcode** to display a booking form. Or **integrate it with WooCommerce** products.
3. **Pick** an event on this calendar and book it. 

Try this reservation tool live on the [demo website](https://demo.booking-activities.fr/en/), or [generate a temporary site](https://tastewp.com/template/bookingactivities/?redirect=admin.php%3Fpage%3Dbookacti_calendars&ni=true) to test the backend!

[youtube https://www.youtube.com/watch?v=Q7gbK5i4DPU]

*Video made with v1.1.1. Booking Activities is constantly evolving.*


= Main features =

★ = Unique feature only Booking Activities has.

**Editor**

* ★ **WYSIWYG**: Visually build your plannings
* ★ **Drag and drop** events directly on the calendar
* ★ **Group your events** to easily sell bundles, subscriptions, seminars, or events spreading on several days
* Create **repeated events** (with desired frequency and exceptions dates)
* Unlimited calendars, activities, events and bookings.
* **Permission management system**: your managers manage only their own calendars and reservations. E.g.: You can [set up Booking Activities for a marketplace](https://booking-activities.fr/en/blog/set-up-a-booking-marketplace-with-booking-activities/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme) *(Booking Activities can only be managed from the backend)*.

**Booking forms**

* **Fully customizable** forms in a WYSIWYG editor
* **Shortcodes** to display reservation forms or simple calendars
* ★ Display events from multiple schedules and activities at once
* ★ **One-click booking**: just pick the desired event(s) on the calendar and click on "Book"! 
* Custom action when you submit the form or when you click an event: make a reservation, ★ **add a product to cart, redirect to a URL**
* Pick multiple events and book them all at once / ★ **add them all to cart at once**
* ★ **Seamless login / registration**: embedded in the form and processed with the reservation. You can also **book without account**, or **display a login form only** with a shortcode.
* 100% responsive: looks great on mobiles, tablets and computers.
* ★ *Set any custom fields and any booking metadata thanks to [Advanced Forms](https://booking-activities.fr/en/downloads/advanced-forms/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_campaign=advanced-forms&utm_content=readme) add-on*

**Online payments with WooCommerce**

* Calendars are automatically integrated to WooCommerce product pages
* ★ Attach multiple calendars and activities to one WC product
* ★ **Cart expiration system**: bookings in the shopping cart are temporary
* Auto-validation when payment is completed
* ★ WooCommerce order status and its bookings status are smartly bound
* ★ Automatic refunds by WC coupon or via the gateway (if allowed)

**Manage reservations**

* Find all your bookings at a glance on a calendar and in a list. Use dynamic filters, sorting, and custom columns
* Booking actions: validate, cancel, reschedule, ★ refund...
* ★ Display your customer's bookings calendar and their booking list with a shortcode
* ★ Your customers can **cancel** or **reschedule** their bookings and **ask a refund** by themselves
* **Export** your bookings as **CSV** and **iCal** feeds and **sync** them on spreadsheet and calendar apps (e.g.: Google Sheet, Google Calendar)

**Availability options**

* Set the **booking period**: customers can't book too early or too late
* Make your **events private** or bookable by multiple users
* ★ Set the min and max bookings allowed per user per event
* Offer some activities to certain user roles only

**Notifications**

* **Automatic emails** are sent to both administrator and customer when a booking is made, when its state changes, and when it is rescheduled
* **Fully customize** and configure all your email notifications
* In multilangual sites, emails are sent to your customers **in their own language**
* *Send activity-specific notifications and **reminders** via email, **SMS and ★ Push** thanks to [Notification Pack](https://booking-activities.fr/en/downloads/notification-pack/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_campaign=notification-pack&utm_content=readme) add-on*

**Translation ready**

* **Multilingual support** with WPML and ★ [qTranslate-XT](https://github.com/qtranslate/qtranslate-xt) (free plugin)
* ★ Auto-detect and switch languages, date/time format, first day of the week...
* Customize most frontend messages directly in the settings
* Fully translated in English and French. You can also help us [translating Booking Activities](https://translate.wordpress.org/projects/wp-plugins/booking-activities) in your language.

**The best inside**

* **API for developers** (PHP actions and filters, JS actions).
* Use the beautiful and handy **[FullCalendar](https://fullcalendar.io/)**
* Support WP Multisite
* Support WP privacy tools for exporting and erasing your customers personal data

See the whole [features list here](https://booking-activities.fr/en/documentation/features/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme).


= Extend these features with add-ons: =

* **[Resource Availability](https://booking-activities.fr/en/downloads/resource-availability/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_campaign=resource-availability&utm_content=readme)**: Manage your resource availability and assignment
* **[Advanced Forms](https://booking-activities.fr/en/downloads/advanced-forms/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_campaign=advanced-forms&utm_content=readme)**: Add any (paid) custom fields to your booking forms
* **[Display Pack](https://booking-activities.fr/en/downloads/display-pack/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_campaign=display-pack&utm_content=readme)**: Customize your calendars or set alternative display (datepicker)
* **[Prices and Credits](https://booking-activities.fr/en/downloads/prices-and-credits/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_campaign=prices-and-credits&utm_content=readme)**: Set per event prices, decreasing prices, price categories (adults, children, etc.), pay with credits
* **[Notification Pack](https://booking-activities.fr/en/downloads/notification-pack/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_campaign=notification-pack&utm_content=readme)**: Send activity-specific notifications and booking reminders by email, SMS and Push
* **[Order for Customers](https://booking-activities.fr/en/downloads/order-for-customers/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_campaign=order-for-customers&utm_content=readme)**: You can book / place an order in the name of your customers
* **[Waiting List](https://booking-activities.fr/en/downloads/waiting-list/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_campaign=waiting-list&utm_content=readme)**: Join the waiting list for sold-out events (automatic notification / booking)

See the whole [add-ons list here](https://booking-activities.fr/en/add-ons/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme)


= This plugin is great for... You? =

To know if Booking Activities is made for you, you just need to understand **how it works**:

1. **You place** events on a calendar
2. **Customers pick** them and book them

If this fits your business then give it a try!

This booking system has been specially designed to fulfill the needs of **most activity providers**:

* For **tourism, sport and leisure** (nautical, aerial, land, mountain, foot or wheels, outdoor or indoor...)
* For **courses, trainings, exhibitions** (education, music, drawing, seminar...)
* For **cultural activities** (museum, theatre / cinema, booking events...)
* *For you too, but you are not in this list? [Tell us](https://booking-activities.fr/en/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme#contact)* :)


= We are listening =

**You are the developers**. *You have always been.*

Booking Activities has been designed and developed in collaboration with activity providers.

**Now it is getting better thanks to you.**

Then feel free to tell us if you miss a feature, if you find a bug or anything to make your booking system better!

* [Documentation](https://booking-activities.fr/en/documentation/user-documentation/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme)
* [Report a bug / Request a feature](https://github.com/bookingactivities/booking-activities/issues/)
* [Contact us](https://booking-activities.fr/en/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme#contact) at contact@booking-activities.fr (French and English)


= Requirements =

* **WordPress**: 3.6 or later
* **PHP**: 5.6 or later
* **MySQL**: 5.7.22 or later (or MariaDB 10.5.4 or later)
* **WooCommerce**: 3.x or later
* *Booking Activities can be used without WooCommerce*



== Frequently Asked Questions ==

= I am not an activity provider, can this plugin still meet my needs? =
Yes of course. It is basically a reservation system based on event scheduling. In other words, you build your event calendar and allow them to be booked. You can find another purposes to it.
To know if it actually meets your needs, simply try it, it's free. 
If you are on a hurry, you can just check the [demo website](https://demo.booking-activities.fr/en/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme).
Or read the full [features description](https://booking-activities.fr/en/documentation/features/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme) if you are looking for something in particular.

= Create and fill your first calendar = 
**Create your first calendar**

1. Go to Booking Activities / Calendar Editor page
2. Click on the big '+' button
3. Set a title
4. In the "Editor" tab, you can set your working hours
5. Click on the dialog OK button, the calendar is loading!

**Create your first activity**

1. Click on the '+' button in the 'Activities' area
2. Set a title, an availability, a color and a duration
3. Click on the dialog OK button, the activity is added to the list!

**Create your first event**

1. Drag an activity from the list and drop it on the calendar
2. Drag and drop the event to move it
3. Mouseover the event and click on its settings wheel to edit its properties

**Congrats! You have created your first event schedule**


= Display a reservation form = 
*Make sure to have at least one calendar, one activity and one event at a future date* 

1. Go to Booking Activities / Booking forms page
2. Select the desired form or create a new one
3. Click on the setting gear on the "Calendar" field to set the calendar(s) to display (and many other settings)
4. Copy the shortcode given in the "How to integrate this form" area (it looks like `[bookingactivities_form form=""]`)
5. Past this shortcode in any post or page you like
6. Go on this post / page frontend, the booking form appears! 

/!\ Reservation forms displayed via shortcode are not bound to WooCommerce at all. If you want to bind a WC product to a calendar, check "Use it with WooCommerce" in this FAQ.


= Display the calendar only = 
*Make sure to have at least one calendar, one activity and one event at a future date* 

1. Go to Booking Activities / Booking forms page
2. Select the desired form or create a new one
3. Keep the "Calendar" field and remove all the others (like "Login/Register", "Quantity" and "Submit" fields)
4. Copy the shortcode given in the "How to integrate this form" area (it looks like `[bookingactivities_form form=""]`)
5. Past this shortcode in any post or page you like
6. Go on this post / page frontend, the calendar appears alone! 


= Display user's booking list = 
*Make sure the user has bookings and he / she is logged in, otherwise it will not show anything* 

1. Past this shortcode in any post or page you like: `[bookingactivities_list]`
2. Go on this post / page frontend, the booking list appears!

*Depending on BA settings and bookings dates, actions like cancel or reschedule may appear. Try them!* 


= Use it with WooCommerce = 
*Make sure to have at least one booking form with one event available at a future date* 
*You also need to activate WooCommerce and create one product* 

1. Go to Products / *Your Product*
2. In 'Product data' area, check 'Activity', a new 'Activity' tab appears
3. In 'Activity' tab, bind the desired booking form to the product
4. Go on this product page on the frontend, a booking form appears!

*For Variable Products, you need to check the 'Activity' checkbox and set a calendar and an activity for each variation.* 


= Does this plugin accept reservation online payments? =
Yes, you can accept payments for bookings through WooCommerce. Booking Activities is perfectly integrated to WooCommerce:

* Booking forms will appears automatically on product pages 
* A cart expiration system is implemented to make sure that bookings in the shopping basket won't stay in the basket forever, taking the place of someone else
* Bookings are automatically validated when the payment is received, or cancelled if not
* If you change order quantity or state, so do the bookings, and vice versa


= Should I accept payments for bookings? =
Here is a pros and cons analysis:

**PROS:**

* Customers are engaged, if they book, they come.
* Saves time: customers have already paid.
* Customers can come without money, they can offer the activity to a relative
* Automatic cashing, billing, accounting and stats

**CONS:**

* May discourage customers, depending on the type of activity you provide and your target
* Takes more time for customers, and more diffult process, higher cart abandonment rate
* You will have to do much more development, administrative and legal procedures, and you will have more expenses (bank commission, maintenance ...)

We recommend to accept online payments since it's a great way to automate your business management and make it grow.


= Events are not "Booked" after booking form submission, they are "Pending", why? =
Don't worry, the reservation is well registered. Now, it is up to you to turn it to "Booked" right away or when your customer comes, or when your customer gives you the money...
But you can just turn the default booking status to "Booked" in Booking Activities settings.
Note that if you use WooCommerce and online payments, booking status turn automatically to "Booked" if the payment is complete, or "Cancelled" if not.


= Cart expires but events are still booked = 
A bot cleans expired bookings hourly. So just wait up to 1 hour.
Usually, users are still on your website when their bookings expire, if so, they are immediatly removed.
Else, they will be cancelled later, with the others in that case.


= My events appear to be booked, but no bookings appear in the list =
Temporary bookings (such as In cart events) take active slots but may not appear in the booking list.
Go to the "Bookings" page, under the "States" filter select "Delivered", "Booked", "Pending" and "In cart".
Then, just click on "Apply Filters". Now you can see all kind of active bookings.


= Cancelled bookings disapeared from the list, I need to see them! =
Go to the "Bookings" page. Under the "States" filter, select all the available status.
Click on "Apply Filters" and then you will be able to see inactive bookings (cancelled, expired, removed, refunded, refund requested).


= Email notifications are not sent =
If you enabled "Asynchronous email" option in Booking Activities settings ("Notifications" tab), emails will be sent the next time someone (anyone) loads any page of your website.
Then, you only need to refresh or visit any page of your website and then check your inbox.
If you disable "Asynchronous email" option, then the loading will last until the email is actually sent.


= Ask for support = 
**We answer within 48h**. You can contact us in many ways:
- By email at [contact@booking-activities.fr](mailto:contact@booking-activities.fr)
- On [WordPress support forum](https://wordpress.org/support/plugin/booking-activities)
- On [GitHub issue tracker](https://github.com/bookingactivities/booking-activities/issues/)

If you don't receive a reply within 48h by email, a technical problem has probably occurred, please try again, or try on an other medium.


== Screenshots ==

1. Drag and drop to edit. Click to book. Works both with a shortcode and WooCommerce.
2. WYSIWYG calendar editor. Simply drag and drop events. Click on events for additional settings (availability, repetition...).
3. Create daily, weekly or monthly repeated events. You can add exception dates to the repetition.
4. Grouping your events is simple: just select multiple events and click on 'Add a group'. Or select an existing group and start editing it right away.
5. Create and customize your booking form. You can combine events and settings of multiple schedules. You can make each form unique.
6. Use a shortcode to display a booking form (or a calendar alone). Your customers can log in or register as they book, they can also book without account.
7. When a customer clicks on a grouped event, the whole group is selected. If the event is part of several groups, the customer has to choose one from a dialog.
8. There is also an option to allow your customers to pick multiple events of their choice at once.
9. Easily bind a reservation form to a WooCommerce product. You can set a different event calendar to each variation.
10. A reservation form appears automatically on desired WooCommerce product pages.
11. WooCommerce cart expiration system: when time is up, bookings are cancelled and cart emptied. You can also disable it.
12. Your bookings are displayed on a calendar, when you mouseover an event, and in a list that you can filter, sort and customize. Manage your bookings: change state (cancel, validate), reschedule, refund...
13. Synchronize your bookings and display them in your Google Calendar events' description
14. Customers also have their booking list and calendar thanks to a shortcode. They can cancel, reschedule or ask a refund by their own (if you allow them).
15. Your customers can manage their bookings from their WooCommerce orders as well.
16. Orders status are bound to their bookings status. If bookings are cancelled / booked / refunded, so do the order (and vice-versa).
17. Email notifications are automatically sent to the customer or the administrator when they need to be informed of a change.
18. Make your emails look just like you want thanks to the HTML editor and special tags. You can also choose to deactivate a notification.


== Changelog ==

= 1.16.46 - 2025/12/09 =
* Tweak - The [Waiting List](https://booking-activities.fr/en/downloads/waiting-list/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme) add-on is now available!
* Fix - Fix qTranslateConfig deprecation notice with qTranslateXT 1.16
* Fix - Fix escaping errors

= 1.16.45 - 2025/12/02 =
* Tweak - Compatibility with Waiting List add-on 1.0.0
* Tweak - Add customer avatar column to user booking list (customer_avatar) and backend booking list
* Tweak - Remove hint on duration field as it may be misleading
* Tweak - Hide bullet point followed by colon in WC item meta
* Tweak - Remove "Password required" option from "User data (login / registration)" field settings
* Tweak - Allow empty values for title, label, tooltip, placeholder, options and value fields in form fields settings
* Fix - Admnistrators could not reschedule to a past event from admin if "Administrators can reschedule bookings to" option was set to "Same form"
* Fix - Booking dialogs may not appear on block based sites
* Fix - Columns order may not be taken into account with select2 4.0.13
* Fix - Call woocommerce_coupon_is_valid hook in try catch to improve compatibility
* Fix - Do not allow dialogs content to overflow after resizing
* Fix - Prevent payment for orders with bookings whose status is not valid
* Dev - Add "expired" booking filter (can only be used programmatically)
* Dev - Make "from", "to", "end_from", "end_to", "created_from" and "created_to" booking filters work when retrieving booking groups as well
* Dev - Allow boolean value for "booking_group_id" booking filter to retrieve only (non) grouped bookings (can only be used programmatically)
* Dev - Remove bookacti_booking_list_displayed_status hook, use bookacti_user_booking_list_default_statuses instead
* Dev - Remove bookacti_change_booking_status_options hook, use bookacti_change_booking_status_dialog_booking_status_fields instead
* Dev - Remove bookacti_new_booking_notification_args hooks, use bookacti_booking_status_change_notification_args instead
* Dev - Remove bookacti_send_booking_group_status_change_notification function, use bookacti_send_booking_status_change_notification instead
* Dev - Remove bookacti_booking_group_status_change_notification_* hooks, use bookacti_booking_status_change_notification_* instead
* Dev - Refactor bookacti_send_booking_status_change_notification function and bookacti_booking_status_change_notification_* hooks parameters to handle both single and group bookings
* Dev - Add bookacti_booking_quantity_updated and bookacti_booking_status_changed hooks on every WC actions that affects booking quantity or status
* Dev - Add context in $args parameter of bookacti_booking_quantity_updated, bookacti_booking_group_quantity_updated, bookacti_booking_status_changed and bookacti_booking_group_status_changed hooks
* Dev - Refactor all parameters of bookacti_booking_payment_status_changed and bookacti_booking_group_payment_status_changed hooks
* Dev - Refactor all parameters of bookacti_booking_quantity_updated and bookacti_booking_group_quantity_updated hooks
* Dev - Refactor all parameters of bookacti_event_updated hook
* Dev - Replace first parameter of bookacti_activity_updated and bookacti_group_category_updated hooks
* Dev - Refactor parameters of bookacti_is_booking_in_delay function and hook
* Dev - Refactor parameters of bookacti_bypass_booking_changes_deadline hook
* Dev - Improve compatibility with "button" type submit, and not only "input" type submit
* Dev - Add a secret key to process async notifications via URL
* Dev - Add PHP hooks in calendar editor dialogs, refactor some code to standardize everything
* Dev - Clean session data on woocommerce_cart_emptied as recommended in WC 10.3

= 1.16.44 - 2025/09/03 =
* Fix - Product selectboxes may remain empty in booking form calendar settings

= 1.16.43 - 2025/08/19 =
* Fix - Form field meta not saved when value was empty array (e.g. "All" group categories in Calendar settings)
* Fix - Incorrect availability display after creating an event in the calendar editor
* Dev - Improve compatibility with deposit plugins
* Dev - Remove bookacti_booking_states_you_can_manually_change hook, use bookacti_change_booking_status_options instead

= 1.16.42 - 2025/08/12 =
* Tweak - Add an option in WooCommerce > Settings > Advanced to change the Bookings endpoint
* Tweak - Allow to log in with username instead of email address with booking form login fields
* Dev - Remove bookacti_validate_booking_form_submission hook, use bookacti_validate_form_fields instead
* Dev - Remove bookacti_booking_form_booking_inserted and bookacti_booking_form_booking_group_inserted hooks, use bookacti_picked_event_booking_inserted instead
* Dev - Remove bookacti_booking_form_values_before_booking hook, use bookacti_booking_form_values or bookacti_booking_form_before_booking instead
* Dev - Remove bookacti_login_form_user_registered hook, use bookacti_booking_form_user_registered instead
* Dev - Remove bookacti_group_of_events_booked hook, use bookacti_booking_group_fully_inserted instead
* Dev - Change bookacti_booking_form_user_logged_in and bookacti_booking_form_user_registered hooks parameters
* Dev - Change bookacti_validate_registration_form and bookacti_validate_login_form hooks expected return value
* Dev - Remove rerender delay from calendar editor to improve compatibility with hooks triggered after
* Dev - Split the booking form process into multiple smaller functions
* Dev - Refactor WC endpoints for a better WC handling
* Dev - Refactor and standardize form field updating process
* Lib - Update FullCalendar to 6.1.19

= 1.16.41 - 2025/08/05 =
* Fix - Do not display negative availability on frontend
* Fix - Error message not displayed when validating picked events with JS before sending form

= 1.16.40 - 2025/07/23 =
* Tweak - Improve cart item meta display with WC classic cart
* Tweak - Set unexpectedly removed order item booking status to "removed" instead of "cancelled"
* Dev - Dissociate event availability check and groups of events availability check in JS
* Dev - Replace all JS hooks used to change group of events dialog option HTML with the a unique hook bookacti_group_of_events_option
* Dev - Process all checks when checking if the selected event is available on a specific form instead of stopping after the first failure

= 1.16.39 - 2025/06/30 =
* Fix - Since 1.16.38, order items booking meta were saved and displayed twice after updating the order (the fix applies to future orders only, for existing orders you need to delete the undesired meta manually)
* Dev - Standardize group of events availability check in JS in one function bookacti_is_group_of_events_available
* Dev - Add bookacti_calendar_event_data_transform JS hook
* Lib - Update FullCalendar to 6.1.18

= 1.16.38 - 2025/06/25 =
* Tweak - Standardize display of WC item meta in cart, orders, and emails, for all WC versions
* Tweak - Allow displaying the content of a private, draft or pending page in WooCommerce My Account Bookings tab
* Tweak - Allow selecting private, draft or pending WC products in calendar settings selectboxes
* Fix - Add robustness checks when retrieving notification settings in case of corrupted data
* Lib - Update select2 library to 4.0.13

= 1.16.37 - 2025/06/17 =
* Fix - With PHP version < 8.1 characters &#039; may appear in booking exports
* Dev - Fallback to get_option when using wp_load_alloptions in case autoload is off

= 1.16.36 - 2025/06/11 =
* Fix - Allow users with bookacti_read_templates permission to view activities and events and their settings in calendar editor

= 1.16.35 - 2025/06/02 =
* Tweak - Declare Booking Activities compatible with WooCommerce cart and checkout blocks (after more than a year of beta testing)
* Fix - Translations may not be loaded in specific configurations

= 1.16.34 - 2025/04/18 =
* Fix - Hide WC Payments quick payments buttons on activity product pages (the booking needs to be added to cart first)
* Fix - Apply z-index to Booking Activities' select2 selectboxes only
* Dev - Refactor bookacti_log function to use error_log instead of fwrite, and gmdate instead of date
* Lib - Update FullCalendar to 6.1.17

= 1.16.33 - 2025/03/19 =
* Fix - Duplicating booking forms did not keep field order
* Fix - When trying to book without account for an email with an account: Prefer using embedded login method, and fix login link redirect

= 1.16.32 - 2025/03/03 =
* Fix - Temporary fix for WC select2 sitewide custom CSS (lack prefix or scope)
* Dev - Allow booking list actions to be performed from a dynamically created element

= 1.16.31 - 2025/02/17 =
* Tweak - Use the Bookings custom page title as tab label and page title in WC My Account
* Tweak - Add {booking_count} tag in iCal booking export settings and in notification tags
* Fix - Booking notifications were not send when WC orders turned to Partially Paid (with a deposit plugin)

= 1.16.30 - 2025/02/10 =
* Fix - Cart items may be deleted right after a booking was added to cart

= 1.16.29 - 2025/02/07 =
* Tweak - Add "Customer order note" column in booking export
* Tweak - Add {customer_order_note} notification tag
* Fix - Expired and removed bookings were not automatically deleted from database if cart expiration option was not active

= 1.16.28 - 2025/01/07 =
* Dev - Add checks before removing select2 from a selectbox to prevent JS errors

= 1.16.27 - 2024/12/18 =
* Fix - Reschedule notifications were not sent after moving a booked event in the calendar editor

= 1.16.26 - 2024/12/11 =
* Dev - Replace deprecated UTF8 PHP functions as of PHP 8.2

= 1.16.25 - 2024/11/29 =
* Fix - Select2 could be applied to non select elements

= 1.16.24 - 2024/11/22 =
* Feature - Add compatibility with some deposit plugins for WooCommerce (Beta)
* Fix - Events not appearing on reschedule calendar under certain circumstances
* Fix - Add aria-label for booking status icons and booking action buttons
* Fix - Clean possibly corrupted repeated events
* Dev - Improve availability div HTML structure in the group of events selection dialog

= 1.16.23 - 2024/11/14 =
* Fix - Some texts may not be translated after switching / restoring language with WPML, Polylang or qTranslate-XT with Wordpress 6.7

= 1.16.22 - 2024/11/13 =
* Fix - Row number per page may be incorrect in List Tables
* Fix - Plugin was not translated with Wordpress 6.7

= 1.16.21 - 2024/10/18 =
* Tweak - Reassign the bookings' owner and booking forms' author to the selected user when a user is deleted
* Fix - Block Cart item total may be incorrect when changing quantity if price was set dynamically with add-ons

= 1.16.20 - 2024/10/16 =
* Tweak - Display the grayed out number of places (like before 1.16.9) if "unavail." text is set to "{current}" in Settings > Messages tab.

= 1.16.19 - 2024/10/01 =
* Dev - Bump version to refresh WP repository

= 1.16.18 - 2024/10/01 =
* Tweak - Do not automatically change the quantity value according to min and max after the customer manually changed it
* Dev - Add the bookacti_wc_cart_item_price hook to change a cart item price having a booking
* Dev - Improve product selectbox compatibility with different variable product types

= 1.16.17 - 2024/09/13 =
* Fix - PHP error when a logged in user tries to validate the log in form
* Fix - AJAX pagination in admin booking list
* Dev - Remove div container for WC cart item remove link to improve compatibility with third party plugins

= 1.16.16 - 2024/09/05 =
* Tweak - Increase PHP version requirement to 5.6 or later
* Tweak - Change the login button type from "button" to "submit" when only the login field is displayed
* Fix - Unit name was displayed in availability area even if "Show unit in availability" option was OFF

= 1.16.15 - 2024/08/13 =
* Fix - PHP error when generating coupon as a refund for a booking if WC was 9.0+ and WC Legacy REST API plugin was not installed

= 1.16.14 - 2024/08/08 =
* Tweak - Reactivate WC add to cart button on product page after 10 seconds to improve compatibility with third-party AJAX add to cart

= 1.16.13 - 2024/07/17 =
* Fix - Error message not displayed in the booking forms list if the form author user has been deleted
* Fix - Booking bulk action did not take into account the "created_from" and "created_to" filters

= 1.16.12 - 2024/07/16 =
* Dev - Add booking filter "created_from" and "created_to" (as URL parameter only, no GUI)
* Lib - Update FullCalendar to 6.1.15

= 1.16.11 - 2024/06/26 =
* Fix - Events may be displayed twice if the calendar opening was a past date, and if "Past events" option was OFF
* Fix - "unavail." mention was hidden on small events

= 1.16.10 - 2024/06/19 =
* Tweak - Try to support Polylang via its compatibility API with WPML
* Fix - Multiday events may not be correctly rendered in Day Grid views with Trim option

= 1.16.9 - 2024/06/11 =
* Tweak - Display "unavail." on events that cannot be booked even though they are not full. This text can be customized in the Settings > Messages tab.
* Fix - WooCommerce cart expiration countdown is now visible in WC cart block
* Fix - Old booking data were not passed to reschedule notification
* Lib - Update FullCalendar to 6.1.14

= 1.16.8 - 2024/05/28 =
* Tweak - Add {calendar_title} notification tag
* Fix - PHP error with some WC add-ons due to missing third argument in woocommerce_coupon_is_valid hook 
* Fix - Multiday events may not be correctly rendered in Day Grid views with Trim option
* Dev - Add template_title, template_active, creation_date and expiration_date parameters to booking group objects
* Lib - Update FullCalendar to 6.1.13

= 1.16.7 - 2024/05/01 =
* Tweak - If "Show only first event of groups" option is ON, display only the groups starting with the selected event in the dialog to select a group of events
* Fix - Groups of events may be incorrectly generated
* Fix - Improve compatibility between "Trim" option and "Show only first event of groups" option

= 1.16.6 - 2024/04/29 =
* Fix - PHP error when loading a booking list including a booking refunded with a WC coupon on the backend

= 1.16.5 - 2024/04/17 =
* Fix - PHP error when changing booking group status
* Fix - PHP warning when cart contains non activity products, or when cart content is null
* Fix - "Booking form location on product pages" option is now compatible with WP Blocks
* Tweak - Encapsulate the cart form in a div when "Booking form location on product pages" option is set to "Full width" (non blocks)

= 1.16.4 - 2024/04/12 =
* Fix - "At the earliest" option was based on events ending time instead of their starting time
* Fix - Change activity text color in calendar editor according to Display Pack add-on settings
* Fix - Make sure cart item quantity matches booking quantity and prevent checkout otherwise
* Fix - Incorrect {price_raw} and {price} notification tags value when used with WooCommerce and Booking Activities add-ons
* Fix - Hide "Select all ... items" button when no bookings are selected in backend booking list
* Dev - Use CSS classes to hide empty weeks when "Trim" option is active, so developers can change their appearance

= 1.16.3 - 2024/04/05 =
* Feature - Filter the booking list by booking (group) ID
* Fix - Weeks may be hidden even if they have events if "Trim" option is active
* Fix - "Show only first event of groups" option should be hidden when Group Category = None

= 1.16.2 - 2024/04/04 =
* Feature - Allow administrators to change the booking forms author
* Feature - Filter the booking form list by ID, title and author
* Tweak - Display an error message in the booking forms list if the form author is not allowed to manage the displayed calendars
* Tweak - Hide weeks on Day Grid views if all the days are empty if "Trim" option is active
* Fix - Notification not sent to administrators when an administrator reschedule a booking
* Fix - Incorrect booking status displayed in WC notification after completing a failed order
* Dev - Remove data conversion for updates from versions prior or equal to 1.14.3 (you need to update Booking Activities to 1.15 before updating it to 1.16)

= 1.16.1 - 2024/03/26 =
* Fix - Notifications not sent after changing a booking (even if "Send notifications" option was ON)
* Fix - Prevent performing any booking action if no bookings are selected
* Fix - Browser may hang after deleting a lot of bookings (bookings were correctly deleted)
* Fix - Site setting "Are started groups of events bookable?" was not taken into account (but group category setting was)
* Fix - Started group events were not grayed out if not bookable
* Fix - Make "Trim" option compatible with "Show only first event of groups" option
* Dev - Update some js scripts dependencies

= 1.16.0 - 2024/03/21 =
* Bookings bulk actions, reschedule scope - **[See the user-friendly release note](https://booking-activities.fr/en/blog/booking-activities-1-16-bookings-bulk-actions-reschedule-scope-etc/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme)**
* Feature - Edit multiple bookings at once: change status, change quantity, reschedule, refund, delete, send notification
* Feature - Add an option to allow customers to reschedule a booking to a different activity and / or to a different calendar (in Calendar Editor > the activity settings > Availability tab)
* Feature - Add an option to allow administrators to reschedule a booking to a different activity and / or to a different calendar (in Settings > Cancellation tab)
* Feature - Add an option to select the activities a booking can be rescheduled to (in Calendar Editor > the activity settings > Availability tab)
* Feature - Send only one notification for multiple bookings / for WC order (the "Asynchronous notifications" option must be ON in Settings > Notifications tab)
* Feature - Manually send a notification from the backend booking list (in the Actions column)
* Feature - Allow customers to manage their bookings without being logged in by using an authentication key in the URL of the page displaying the [bookingactivities_list] shortcode (see {user_auth_key} notification tag)
* Feature - Add the {user_auth_key} notification tag (to be used as the user_auth_key URL parameter value, e.g.: yoursite/my-booking-list/?user_auth_key={user_auth_key})
* Tweak - "Customer" booking filter: List the customer emails from booking made without accounts
* Tweak - "Customer" booking filter: Display the bookings made with and without account by the selected customer (need a page refresh, not working with AJAX)
* Tweak - You cannot display events from a calendar that the booking form author cannot manage
* Tweak - Remove "When to load the events?" option, you can use the bookacti_booking_system_default_attributes hook to set auto_load to 0 (after page load (default)) or 1 (on page load (not recommended, support no longer provided))
* Tweak - Unselect an event by clicking it again (even if multiple events selection is deactivated)
* Tweak - Export bookings included in groups if the booking list is filtered by event and if export settings are "One row for each booking of the group"
* Fix - Booking filters may not be correctly applied after reloading the bookings page
* Fix - Deleting an activity deleted it from all calendars instead of removing it only from the current calendar
* Fix - Decode HTML entities before displaying WooCommerce price
* Fix - Incorrect bookings retrieved if booking_group_id_operator filter was set to "OR" and no booking ids where provided
* Fix - Selected user ID was displayed in user selectbox instead of proper label
* Fix - English was used instead of site locale in javascript if site locale code had no underscore
* Fix - (WIP) Support WooCommerce Cart Block: validate cart item quantity and change booking quantity accordingly
* Fix - (WIP) Support WooCommerce Checkout Block: change booking status after checkout
* Dev - (WIP) Declare WC Cart and Checkout blocks as NOT supported by Booking Activities and its add-ons for now (use WC Cart and Checkout shortcodes instead)
* Dev - Functions to update and delete Booking Activities objects metadata now allow multiple object ids
* Dev - Refactor async notifications scheduling
* Dev - Lots of hooks and functions have changed, especially regarding booking actions, test and update your custom code consequently
* Lib - Update FullCalendar to 6.1.11

= 1.15.0 - 2022/08/31 =
* Update Fullcalendar to v5 - **[See the user-friendly release note](https://booking-activities.fr/en/blog/booking-activities-1-15-fullcalendar-v5/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme)**

= 1.14.0 - 2022/06/08 =
* Add WPML Compatibility - **[See the user-friendly release note](https://booking-activities.fr/en/blog/booking-activities-1-14-wpml-compatibility-multilingual-sites/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme)**

= 1.13.0 - 2022/03/01 =
* Set up your leave periods - **[See the user-friendly release note](https://booking-activities.fr/en/blog/booking-activities-1-13-days-off/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme)**

= 1.12.0 - 2021/08/23 =
* Repeat groups of events - **[See the user-friendly release note](https://booking-activities.fr/en/blog/booking-activities-1-12-repeat-groups-of-events/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme)**

= 1.11.0 – 2021/05/05 =
* Advanced options to repeat events - **[See the user-friendly release note](https://booking-activities.fr/en/blog/booking-activities-1-11-advanced-options-to-repeat-events/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme)**

= 1.10.0 - 2021/03/12 =
* Cancel or reschedule a whole event and notify customers - **[See the user-friendly release note](https://booking-activities.fr/en/blog/booking-activities-1-10-cancel-or-reschedule-a-booked-event-and-notify-customers/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme)**

= 1.9.0 - 2021/01/27 =
* Multiple bookings - **[See the user-friendly release note](https://booking-activities.fr/en/blog/booking-activities-1-9-multiple-bookings-cancel-an-event/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme)**

= 1.8.0 - 2020/05/12 =
* Preview bookings on mouseover, Export bookings to iCal, etc. - **[See the user-friendly release note](https://booking-activities.fr/en/blog/booking-activities-1-8-bookings-preview-ical-export-login-beforehand-etc/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme)**

= 1.7.0 - 2019/03/01 =
* Add a product to cart from a booking form - **[See the user-friendly release note](https://booking-activities.fr/en/blog/booking-activities-1-7-form-actions-and-sytem-tools/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme)**

= 1.6.0 - 2018/11/29 =
* Export events, Book without account - **[See the user-friendly release note](https://booking-activities.fr/en/blog/booking-activities-1-6-export-and-booking-without-account/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme)**

= 1.5.0 - 2018/05/05 =
* Make customizable booking forms - **[See the user-friendly release note](https://booking-activities.fr/en/blog/booking-activities-1-5-booking-forms/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme)**

= 1.4.0 - 2018/02/24 =
* Availability options (e.g. private events) - **[See the user-friendly release note](https://booking-activities.fr/en/blog/booking-activities-1-4-availability-options/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme)**

= 1.3.0 - 2018/01/28 =
* Improved bookings management - **[See the user-friendly release note](https://booking-activities.fr/en/blog/booking-activities-1-3-improved-booking-management/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme)**

= 1.2.0 - 2017/10/12 =
* Email notifications - **[See the user-friendly release note](https://booking-activities.fr/en/blog/booking-activities-1-2-email-notifications/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme)**

= 1.1.0 - 2017/07/16 =
* Make groups of events - **[See the user-friendly release note](https://booking-activities.fr/en/blog/booking-activities-1-1-grouped-events/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme)**

= 1.0.0 - 2017/03/25 =

**[See changelog for all versions](https://booking-activities.fr/en/documentation/changelog/)**



== Upgrade Notice ==

= 1.16.45 =
Major changes in code:
* If you have purchased add-ons, you need to update them too.
* If you have custom code, you may need to adapt it. No support can be provided for your custom code.

= 1.15.8 =
Requires MySQL 5.7.22 or later, or MariaDB 10.5.4 or later

= 1.15.0 =
Major changes in code:
* If you have custom code, especially javascript and CSS affecting the calendars, you will probably need to adapt it. No support can be provided for your custom code.

= 1.12.0 =
Major changes in code:
* If you have purchased add-ons, you need to update them too.
* If you have custom code, you may need to adapt it. No support can be provided for your custom code.
* The archiving tool has been removed. You can still find the backups you have made in wp-content/uploads/booking-activities/archives and manually import them with phpMyAdmin.
* You won't be able to restore your previous backups of the wp_bookacti_exceptions table as is after the update

= 1.9.0 =
Major changes in code:
* If you have purchased add-ons, you need to update them too.
* If you have custom code, you may need to adapt it. No support can be provided for your custom code.

= 1.1.0 =
Major update with breaking changes. To be safe, make a backup of your database. 
You need to update your Booking Activities add-ons in the same time (if you have any) as they will not be compatible anymore.

= 1.0.4 =
If you are using Booking Activities with WooCommerce, make sure you are using 2.6.0 or later, and try to update to WooCommerce 3.* as soon as possible since BW compatibility functions are now deprecated
