Events Made Easy


Events Made Easy is a full-featured event and membership management solution for WordPress. Events Made Easy supports public, private, draft and recurring events, membership and locations management, RSVP (+ optional approval), several payment gateways (Paypal, 2Checkout, FirstData, Mollie and others) and OpenStreetMap integration. With Events Made Easy you can plan and publish your event, or let people book spaces for your weekly meetings. You can add events list, calendars and description to your blog using multiple sidebar widgets or shortcodes; if you are a web designer you can simply employ the template tags provided by Events Made Easy.

Main features:
* public, private, draft and recurring events with custom and dynamic fields in the RSVP form
* membership management with custom and dynamic fields
* People and groups with custom fields per person
* PDF creation for membership, bookings and people info
* Membership card or booking ticket can be sent as PDF via mail automatically
* RSS and ICAL feeds
* Calendar management, with holidays integration
* Several widgets for event listings and calendar
* location management, with optional OpenStreetMap integration
* RSVP bookings with custom fields and dynamic fields, payment tracking, optional approval, discounts
* Templating for mails, event lists, single events, feeds, RSVP forms, … with specific placeholders for each
* Lots of shortcodes and options
* Payment gateways: Paypal, FirstData, 2CheckOut, Mollie, Worldpay, Sagepay, Stripe, Braintree, Paymill, Instamojo
* Send mails to registered people, automatically send reminders for payments
* Mail queueing and newsletter functionality
* Mailings can be planned in the future, cancelled …
* Multi-site compatible
* Fully localisable and already fully localised in German, Swedish and Dutch. Also fully compatible with (m)qtranslate(-xt): most of the settings allow for language tags so you can show your events in different languages to different people. The booking mails also take the choosen language into account.

For more information, documentation and support forum visit the Official site .



Always take a backup of your db before doing the upgrade, just in case …
1. Upload the events-made-easy folder to the /wp-content/plugins/ directory
2. Activate the plugin through the ‘Plugins’ menu in WordPress
3. Add events list or calendars following the instructions in the Usage section.


After the installation, Events Made Easy add a top level «Events» menu to your WordPress Administration.

  • The Events page lets you edit or delete the events. The Add new page lets you insert a new event.
    In the event edit page you can specify the number of spaces available for your event. You just need to turn on RSVP for the event and specify the spaces available in the right sidebar box.
    When a visitor responds to your events, the box sill show you his booking. You can remove bookings by clicking on the x button or view the respondents data in a printable page.
    You can also specify the category the event is in, if you activated the Categories support in the Settings page.
    Also fine grained control of the RSVP mails and the event layout are possible here, if the defaults you configured in the Settings page are not ok for this specific event.
  • The Locations page lets you add, delete and edit locations directly. Locations are automatically added with events if not present, but this interface lets you customise your locations data and add a picture.
  • The Categories page lets you add, delete and edit categories (if Categories are activated in the Settings page).
  • The People page serves as a gathering point for the information about the people who booked a space for one of your events.
  • The Pending bookings page is used to manage bookings for events that require approval
  • The Change bookings page is used to change bookings for events
  • The CRON page is used to plan automated EME tasks (like sending reminders, cancel unpaid bookings, newsletter)
  • The Settings page allows a fine-grained control over the plugin. Here you can set the format of events in the Events page.
  • Access control is in place for managing events and such:
    — a user with role «Editor» can do anything
    — with role «Author» you can only add events or edit existing events for which you are the author or the contact person
    — with role «Contributor» you can only add events in draft or edit existing events for which you are the author or the contact person

Events list and calendars can be added to your blogs through widgets, shortcodes and template tags. See the full documentation at the Events Made Easy Support Page.

Часто задаваемые вопросы

See the FAQ section at the documentation site.


Ich verwende EME seit mehreren Jahren und bin top zufrieden damit! Auch wenn es einem als Nicht-Programmierer schwer fällt, die ein oder andere persönliche Anforderung an das Plugin umzusetzen, die Möglichkeiten sind jedenfalls schier unendlich. Das Plugin wird ständig weiter entwickelt und realisierbare Feature-Wünsche werden auch umgesetzt.
After several tested plugins for ticket bookings, I decided to go with EME because it is very flexible and you can get used to it very quickly. Also a good export function is built in order to be able to print booking lists. Very important: The developer regularly provides updates and responds quickly to notifications about bugs or new ideas/features/requests in the EME-forum. ... and it's absolutely free - which is a good reason for a donation (everyone has to pay for his coffee)! Keep it up...
The Events Made Easy plugin can do just about everything I need to create, manage, and ticket events. Flexible with lots of settings to customise it, and the ability to take payments built in. Just understand that there's a little learning curve, so take some time to read the documentation to get started.
Il offre de très nombreuses possibilités et répond à de très nombreuses situations sans forcer la main. Il demande cependant un investissement certain pour en tirer toutes les subtilités. Sa traduction récente en français apporte une aide non négligeable.
From the first look it seems a complicated plugin. So first I deactivated it and started to look for other event plugins. Then I came back to EME (including the front end plugin) and started to read the description more carefully. As soon as you get a grip on the structure, it is a breeze to set it up and create your events pages. You can do almost anything with it. It is very flexible and you are not restricted by a time frame to pay for the use of a very well written plugin as it is free. But I am convinced that no good work must left unpaid. And the best feature of this plugin is the support. It is super fast and the author does more than expected to help you with your problems. He even looked into the theme that was actually creating the problem and found the solution. This is what I call a SUPPORT.
Franky, you have created a perfect plugin. I never have seen any other plugin which is so flexible to manage all information regarding events. Also your support is very prompt and my requests regarding changes or new functions have been implemented immediately. I will give you 5 stars for the EMEFS as well.
Посмотреть все 92 отзыва

Участники и разработчики

«Events Made Easy» — проект с открытым исходным кодом. В развитие плагина внесли свой вклад следующие участники:


«Events Made Easy» переведён на 6 языков. Благодарим переводчиков за их работу.

Перевести «Events Made Easy» на ваш язык.

Заинтересованы в разработке?

Посмотрите код, проверьте SVN репозиторий, или подпишитесь на журнал разработки по RSS.

Журнал изменений

2.1.51 (2019/11/16)

  • Handle empty dates (like memmberships without ending better)

2.1.50 (2019/11/14)

  • Make sure custom fields of type date store the info again

2.1.49 (2019/11/14)

  • List of bookings is now ordered by lastname by default (this influences the printable booking report and the csv export)
  • Location info on recurrence admin page is now shown again
  • Added single event duration on recurrence page overview, and replaced «Specific days» by the actual days the recurrence happens at
  • Mailings can now be planned for multiple days in one go
  • Event duration is now to be configured in days for a recurrence, no more event beginning/end date
  • Added #_PASSWORD as an event placeholder too, so you can mail the password to people

2.1.48 (2019/11/08)

  • Redirect to booking payment page, so people can use the back-button if they change their mind halfway during payment
    Options are added to the EME options, tab «Payments», so you can tune or disable this redirect.
  • Fix the dynamic price calculation when editing a booking in the backend
  • Use utc-milliseconds for setting dates and times the datepicker, this is more cross-browser resilient
  • Allow import of attributes when importing events or locations (by prepending the attribute name with «att_» as column header)
  • Add an option to change the timepicker step interval (defaults to 5 minutes-interval), in the Settings, tab «Other»
  • Make sure event and location placeholders are replaced by their html counterpart during mail if html mail is desired
  • Fix call to eme_db_insert_event when importing events

2.1.47 (2019/11/06)

  • Switch datepicker date format to php format, more compatible
  • Today button selects today too again
  • Search on date in the bookings overview was not switched to the new datepicker yet

2.1.46 (2019/11/04)

  • Take backslashes from wp datetime format into account for datepicker datetime format
  • Make sure fields of type RSVP are shown in the list of fields of the booking overview table
  • Remove unused code from old datepickers
  • Show the correct error if creating a formfield fails on validation

2.1.45 (2019/11/03)

  • Make sure datepicker also works in the frontend
  • Also allow price description for non-multiprice events, use #_PRICEDESCRIPTION in templates to show it

2.1.44 (2019/11/03)

  • Renamed the class eme-submit-button to eme_submit_button (was only used in the payment buttons).
    So if you styled your buttons using eme-submit-button, please check your css and change it to eme_submit_button
  • Updated Braintree API to version 4.4.0
  • For multiprice events you can now add a description per price category, which is used in CSV exports too
    Also #_PRICEDESCRIPTION{xx} returns the price description of the xx-th category, which can be used in forms etc …
  • Add valid from/to for discounts (the «valid to» used to be «expiration date») in datetime format
  • Make sure newly create persons are active upon member import
  • fix the edit-page link for events
  • Save the end-date for recurences based on «specific dates», so it shows correctly in the recurrence overview
  • Switch to new datetimepicker

2.1.43 (2019/10/19)

  • Update Mollie API to v2.12.0
  • Update Stripe API to v7.3.1
  • An expired member now also has paid status set to «no»
  • Allow event/location author to be edited
  • Allow #_INCLUDE{xx} in templates, so you can include other templates
  • Added access controls for event author to list/approve/edit bookings
  • Attendance check was not working when checking the QR code due to a typo, fixed
  • Revamp the access rights screen
  • When searching based on event_id, it now overrides scope and event name searching in the event list (as it should)
  • Fix edit location url (generated by #_EDITLOCATIONURL)
  • There was too much being sanitized for admin input for event/location/membership custom fields
  • Fix when editing a location would reset the location author to 0
  • Small fix when deleting a custom field via the delete trash icon (the linked answers were not deleted)

2.1.42 (2019/10/11)

  • Also add the «list locations» access capability (was forgotten in 2.1.41)

2.1.41 (2019/10/10)

  • Improve the event overview and filtering of bookings per event
  • Deleted bookings were still shown when viewing all bookings for a person
  • Created a new custom formfield type «RSVP», the type «Generic» is now deprecated
  • Call hook eme_delete_event_action earlier, so you can alert all bookings if the event is deleted too
  • Added a «Manage recurrences» section next to «Manage events», to more easily have an overview of just recurrences
  • Added access controls for people and members (list/author/edit).
    The list access control is new and for those already limiting access specifically for people or members, this value needs to be checked.
  • Allow attachments for approved,pending and paid mails per event too

2.1.40 (2019/09/30)

  • Implemented trash/restore for events
  • group_id is no longer a required parameter for the shortcode eme_people

2.1.39 (2019/09/29)

  • For rsvp forms, dynamic data conditions on all fields is now possible, even if the field condition is a placeholder not mentioned in the form (the field condition can then be one of the booking placeholers)
  • ICAL export no longer gives the ORGANIZER attribute, it is not required
  • Bugfix when editing a booking and clearing/changing the personal info of the booking (it didn’t accept the changes and the booking stayed on the old person info)
  • The EME DB version can now be changed as an option. Changing it to a lower value will — upon save — cause the db updates to be run again (if those failed for some reason).
  • Correct #_WAITING_LIST_CLOSED and #_WAITING_LIST_ACTIVATED (in case the expected value was 0, it currently returned the empty string but in this release it will return 0)

2.1.38 (2019/09/16)

  • Answers to custom fields can now also be shown for memberships and bookings in their overview table
  • Comment can now also be shown for bookings in the overview table
  • Small bugfix to show select2-dropdown again for dynamic data fields

2.1.37 (2019/09/08)

  • Change in [eme_add_multibooking_form]: if the options template_id and template_id_header are not provided, a default will be used.
    The default will be ‘#_{d/m/Y} #_24HSTARTTIME: #_SEATS
    ‘ if template_id is not provided
    The default will be ‘Lastname: #_LASTNAME
    Firstname: #_FIRSTNAME
    Email: #_EMAIL
    ‘ if template_id_header is not provided
  • «Denied» has been renamed to «Deleted» for bookings deleted by the admin
  • Revamp the per-event and admin email templates section
  • Upgrade select2 to 4.0.10

2.1.36 (2019/08/22)

  • Fix discount edit when option «stay on page after edit» is selected
  • Fix allowed html in several options upon save again
  • Allow more characters in the slug

2.1.35 (2019/08/19)

  • Fix the country edit

2.1.34 (2019/08/17)

  • Fix a longstanding wrong call to the php header function for the email tracker image

2.1.33 (2019/08/17)

  • Updated Stripe API to version 6.41.0
  • Updated Braintree API to version 4.2.0
  • Updated Leaflet API to version 1.5.1
  • Fix so #REQ_SPACES works as expected (workaround is to use #REQ_SEATS)
  • Generated pdf names now start with «ticket-» and «member-» (and no longer end with that)
  • Stripe webhook implemented (go to your EME payment settings and press «save», then the webhook will be created)
  • The payment options tab is now an collapsed list op options per gateway, sos you can go faster to the gateway of choice

2.1.32 (2019/08/03)

  • Mailing fixes (updated template was used for approval mails, which was wrong, and also the denied and pending mails were not sent)

2.1.31 (2019/07/31)

  • Small html fixes in the events editing pane
  • Some mails were not being sent (IPN and mail to contact person upon payment)

2.1.30 (2019/07/29)

  • small bugfix for people placeholders replacement

2.1.29 (2019/07/29)

  • Added featured image to rss feed
  • Show event start date with local timezone in RSS feed if wanted (and not GMT)
  • Add contact person paid emails format (next to the IPN format for the contact person)
  • Documented the filter eme_csv_column_filter (allows you to change 1 CSV output line, so you can switch/remove/change columns). See the documentation on hooks and filters for an example.
  • Added capabilities (access right settings) for attendance or member checks (both urls generated by #_ATTENDANCE_QRCODE and #_MEMBER_QRCODE) so you can more easily allow someone to be able to check for event attendance or if a member is active
  • update select2 js to 4.0.8
  • add mail header «X-EME-mailid», so in the future if/when we handle bounces we can indicate which mail failed
  • added a per-event option to create a WP user after a successful booking
  • fix for discount groups with regular and early bird-combo (the reported discount codes used were not correct)
  • Added a filter eme_ical_filter, which lets you influence each entry of an ical entry in the ical feed of events. It takes one parameter: the current ical-representation of a single event (matching your filters, based on the ical link you generated with [eme_ical_link]), so you can add/remove/change lines per entry.

Implemented #ESC and #URL for people placeholders

2.1.28 (2019/07/11)

  • Correct CSV export of bookings if dynamic fields were included (export was on multiple lines in excel)
  • Add warning in EME options page if the SEO permalink settings are conflicting with an existing page
  • Added event placeholder #_ADDBOOKINGFORM_IF_LOGGED_IN, which shows the booking form only if logged in. The difference with requiring WP membership when defining the RSVP properties for an event is that in the latter case you can’t change your personal info (it comes from your profile)
  • Account for unsupported PHP timezones
  • Documented #_ADDBOOKINGFORM_IF_USER_HAS_CAP, #_ADDBOOKINGFORM_IF_USER_HAS_ROLE and the conditional placeholders #_USER_HAS_ROLE and #_USER_HAS_CAP
  • Allow the phone field to be edited if the RSVP option «Require WP membership» is selected and the phone info in the WP userprofile is empty
  • Show a hint on autocomplete on the lastname field if you have the needed rights

2.1.27 (2019/06/27)

  • Importing people now allows one or more group (or groups) columns. Each such column can contain either a group id or a groupsname (or multiple ids or names, separated by «||»)
  • In the RSVP form, you can now use #_COUNTRY{xx} (with «xx» being the code of a country created in EME, not the name). If used, that country will be selected as default in the form.
  • For a required formfield of type checkbox with multiple values, the html rendered required all values to be checked. Now only one needs to be checked.
  • ical fixes (events are exported in gmt now, and added the organizer field)
  • New excerpt functionality:
    • if «» is present in the event notes, #_EXCERPT will take the part before this seperator, and #_NOEXCERPT the part after it
    • if «» is not present, #_EXCERPT will take the first 55 characters by default (filter eme_excerpt_length can be used to change this), #_NOEXCERPT will be the complete text

2.1.26 (2019/06/14)

  • Make eme_attendees and #_ATTENDEES work again (error in sql statement)
  • #_EXCERPT placeholder should obey the wordpress filter the_excerpt, not the_content

2.1.25 (2019/06/13)

  • Update Mollie API to 2.10.0
  • Catch more template errors when saving a template
  • Added option ‘order’ to shortcode [eme_attendees], the default order is «lastname ASC, firsname ASC»
  • Fix editing holidays
  • Fix uploading files for bookings

2.1.24 (2019/05/28)

  • Updated select2 library to 4.0.7
  • Fix sending of html mail

2.1.23 (2019/05/22)

  • Don’t remove carriage returns from tables when sending mail
  • The event notes field now obeys the wordpres regular filters (meaning all should behave as it does in regular posts for the notes field)

2.1.22 (2019/05/15)

  • Fix custom field headers in printable output
  • Fix mollie payment detection
  • Fix #_RESPSEATS{xx} and #_ATTENDSEATS{xx}
  • Don’t show the single location map if the lat/lon coordinates are empty (and thus avoid a javascript error on the page too)

2.1.21 (2019/05/09)

  • Add Instamojo payment gateway for Indian users (only Indian Rupee supported)
  • Support Indian Rupee in the currency selection
  • Added member placeholder #_MEMBER_QRCODE, which returns a qrcoded-url to check if a member is active.
    This can be used inside a membercard pdf and allows EME member admins to quickly check (using a qr-reading app) if a member is active

2.1.20 (2019/05/04)

  • Make sure the paypal payment works for production sites

2.1.19 (2019/05/04)

  • Fix a PHP warning for memberships and number of function arguments

2.1.18 (2019/05/03)

  • Add an option that influences whether or not a list of events should be shown on the default special events page.
    This complements the option to show a calendar on the default special events page.
    It is recommended to leave this option off and use placeholders on regular wordpress pages instead.
  • Custom fields of type «People field» can now be included in the CSV export for bookings
    This can be set in the definition of the custom field.
  • Mollie notification can arrive later than the return page shown, resulting in an wrong message shown of the payment not being paid
    Now we store the mollie payment id generated with the EME payment, so we can check in the return page the result too
  • Image url in the db was stored as relative url. Although the image id takes precedence, it is cleaner to store the url as is too.
    Also the image placeholders (for events, people) now have a full url (so they work correctly in mails too)
  • Add a parseFloat conversion in the javascript for single map locations, to make sure javascript recognizes the coordinates as floating point and not text
  • In the location map, the popup was not sized correctly if an image was included, due to the image size not being known yet. JS code has been added to rectify that.
  • Update to new v2-API for PayPal payments (v1 is in the process of being deprecated by PayPal)
    While webhooks don’t work, it should be fine. Bugs in the API or the way PayPal shows info (in the sandbox the amount and description are not shown to the buyer)
    will hopefully get fixed by PayPal.
  • Legacy paypal IPN works again
  • Update to Braintree API version 3.40, and make Braintree actually work (typo fix)
  • Update Stripe API to conform with their use of Strong Customer Authentication

2.1.17 (2019/04/19)

  • Fix a longstanding bug (but unnoticed) where a combination of groups to send mail to would result in not all the intented people to receive it
  • Block the change of «field purpose» for custom fields if the field is already being used in answers
  • QR-code fixes (qrcode was not being generated ok and optimisations done when generating)
  • Some more options added when you want to send out the optional ticket PDF for bookings
  • Fix an undefined variable php warning

2.1.16 (2019/04/17)

  • Fix a race condition where placeholders for people fields would replace #_FIELD-related placeholders that were in fact meant for rsvp/members

2.1.15 (2019/04/16)

  • Small fix so #_NAME is also accepted again (as a fallback, deprecated alternative to #_PERSONLASTNAME)
  • Clarification notice: #_RESP* and #_ATTEND* related placeholders still work
    (they might be considered as deprecated and the doc will change accordingly but currently there’s no need for people to change their templates or config)

2.1.14 (2019/04/16)

  • If the booking price is 0 and there’s no approval required, the optional PDF will be included in the mail sent at booking time
  • #_ATTENDANCE_QRCODE can now also be used in regular mails, not only in a PDF template
  • #_PERSONAL_FILES is now a people placeholder too
  • For people, #_ID is deprecated in favor of #_PERSONID, and all people placeholders can be preceded with #_PERSON (so #_PERSONID, #_PERSONLASTNAME, etc …)
  • For bookings and attendees: the person-related placeholders should now start with #_PERSONxxx (and not with #_RESP or #_ATTEND anymore for the placeholders that hold person info)
  • #_INVITEURL and #_INVITEURL{xx} can now be used in mails towards people (in case the mail is event-related #_INVITEURL will take the event id of the related event,
    otherwise #_INVITEURL{xx} should be used with ‘xx’ being the id or name of the event)
    These 2 can send out an invite url to people concerning an event. In case the event is then marked as invite-only, only the people that received such a mail can rsvp once.
  • Added a new event placeholder #_IS_INVITE_ONLY (can be used in a eme_if-condition to show some other content if the event is invitation-only)
  • CSS fix for the small calendar widget month name (it was not centered anymore)

2.1.13 (2019/03/28)

  • Fix [eme_events] showing only 1 event when the option «Number of events to show in lists» is 0 and no specific limit is set in the shortcode itself

2.1.12 (2019/03/28)

  • When you send out a mailing immediately and the «always queue» option is active, that mailing will now get a name and be visible in the mailing overview too
  • Fix using show_recurrent_events_once and limit together
  • Beter default contact person detection
  • Ignore people in trash status in more functions, avoids problems when someone subscribes to an email group and the same person/email is already in the trash
  • Make adding attachments work also when html mails are not activated
  • CSS change: the calendar header showing the month name (when using the table layout) is now also using thead+th and not thead+td

2.1.11 (2019/03/16)

  • Fix template sorting by name
  • Make attachment selection for mail templates work when editing a membership
  • Add placeholder #_USER_HAS_ROLE{xxx} (‘xxx’ being the name of a wp role), so you can check if a user has a certain wp role and show/hide things based on that
  • Fix for rsvp start/end conditions
  • Added extra discount conditions: now you can require users to be logged-in for the discount to apply, or to be a part of an EME group or membership or have a certain WP role

2.1.10 (2019/03/05)

  • Add an option (in the «Other» section) where you can add extra html tags and attributes to be allowed for html content in eme settings (like templates)
  • Add an option (in the «Events» section) that allows to specify a redirect url if a person not logged-in tries to view a private event (by default redirect to wp login page is done)

2.1.9 (2019/03/02)

  • Fix editing a multiprice booking when the total amount of seats is 0 (meaning unlimited)
  • Allow sending a mail when adding a new member via the admin backend
  • Fix #_FIELDS in rsvp mails
  • Small sql fixes to be able to sort (as expected) on custom fields in people/members admin screen

2.1.8 (2019/02/22)

  • Cancel format options have been simplified and can contain people too
  • Fix legacy paypal button not showing up due to typo

2.1.7 (2019/02/20)

  • Get a XML sitemap by visiting the url https://../?eme_sitemap=public
  • For CSV imports, the enclosure can be an empty string too
  • If the admin email is not matched to a user, take the first person with admin role as email sender
  • Allow html in attributes and properties again
  • Disable autofill on forms for events/locations/members, to aid people having autofill issues
  • Allow attachments to be sent for approved, pending and booking paid emails, also for mailgroup subscriber emails and new members
  • Added an option to allow RSVP cancel based on age of the booking
  • Deprecated shortcode eme_cancel_booking_form in favor of eme_cancel_all_bookings_form
  • Add options to set a template to cancel a payment (the form shown when browsing the url #_CANCEL_URL)
  • Added the old paypal method back (but it is called «Legacy Paypal» now)
  • Added 2 placeholders #_CURDATE and #_CURTIME, can be used to inform people/contacts of the date/time an action happened (like rsvp, cancel, member signup, payment, …)

2.1.6 (2019/02/10)

  • A discount can now be in more than one group
  • Fix html showing in extra html headers for events or locations
  • ical fixes for utf-8 encoded characters (and line folding like required by the rfc)

2.1.5 (2019/02/06)

  • Event status was always set as draft upon save, this has been corrected

2.1.4 (2019/02/05)

  • Add a new option in the RSVP settings for an event so you can decide in which mail the optional PDF attachment should be included: the approval or payment mail
  • Placeholders #_ADDBOOKINGFORM_IF_USER_IN_GROUP{xx}, #_ADDBOOKINGFORM_IF_USER_IS_MEMBER_OF{xx}, #_IS_USER_IN_GROUP{xx} and #_IS_USER_MEMBER_OF{xx} can now also take the id of the group or membership as parameter (and not just the name anymore)
  • Send membership reminder mails also in grace period
  • Some more sanitizing, we don’t even trust admins …
  • Unslash where needed
  • RSVP cancel cutoff time was ignored

2.1.3 (2019/02/01)

  • Fix a typo that prevented RSVP bookings from happening

2.1.2 (2019/01/30)

  • Security Fix: one could bypass the allowed file types to be uploaded
  • Update Paypal to use their new interface.
    If you have a Paypal account, you need to undertake actions if you wish to continue to accept payments via Paypal.
    You need to create a Paypal «app» and enter the newly obtained client ID and secret in the EME payment options.
    See this page for more info and guidelines.
  • Add custom fields for membership definitions too (like for events and locations)
  • Disabling certificates for sending mail is now only possible for private ip’s, not for public mailservers anymore

2.1.1 (2019/01/27)

  • Fix dynamic-table html generation (closing «>» was missing for «table», most browsers fix this automatically, but is not nice)
  • Make pdf generation more resilient to html errors (like the one mentioned above)
  • eme_holidays was not working as expected

2.1.0 (2019/01/26)

  • Fix people import from csv
  • Improve sql when searching for custom field answers
  • Add an option to automatically archive old mailings after a certain period of days (can be set in GDPR options)
  • Add an option to automatically remove old events after a certain period of days (can be set in GDPR options)
  • Make the permalink for calendar days a little more strict, so events starting with yyyy-mm-dd-* don’t match and correctly go to the event
  • «Extra event html headers» and «Extra location html headers» now allow javascript too
  • Add an action in the People admin window to verify the integrity between WP users and EME people (a WP user should be linked to at most 1 EME person)
  • Add a mailing option to ignore the massmail setting if wanted (explanation added in-screen) for both event and generic mails
  • Early-bird discount is possible by just leaving the coupon code empty for the discount and if you define an expiration date
  • Fix mail logic for rsvp mails (some combinations of EME settings did not send out mails as would be expected)
  • Avoid loading the Mollie API if it is already loaded by another plugin
  • Update Mollie API to 2.5.0
  • RSVP full message can now also be changed in the backend
  • Disable (or try to) autocomplete for RSVP password protection
  • Add placeholder #_ATTENDANCE_QRCODE, generating a qrcode to send to people. This in facts just encodes the attendance url (generated by #_ATTENDANCE_URL also)
  • Document the use of #_ATTENDANCE_QRCODE ==> #_ATTENDANCE_QRCODE can only be used in the pdf template for tickets or membership cards
    If any other php lib is loaded providing the same qrcode class, the qrcode will refuse to load, so then you’ll need to use a shortcode provided by the other
    plugin to create the qrcode based on the value of #_ATTENDANCE_URL
  • Allow event/location/people properties (see functions eme_init_event_props, eme_init_location_props, eme_init_person_props) to be imported too
  • Fix a show_recurrent_events_once sql bug (in fact not a bug, but indeterministic result) due to newer mysql/mariadb versions
  • Add scope parameter to shortcode eme_holidays (default=all, other values: past or future; shows all/past/future holidays)

2.0.85 (2019/01/09)

  • Correct yet another bug at activation when using offset-based timezones

2.0.84 (2019/01/09)

  • Correct a bug at activation when using offset-based timezones

2.0.83 (2019/01/09)

  • Add an option to automatically remove pending members after a certain period of days (can be set per membership)
  • Add an option to automatically remove expired members or old bookings after a certain period of days (can be set in GDPR options)
  • Allow a separator to be specified for multi-value custom fields when printing the values via #_FIELD or #_FIELDVALUE by using a second set of braces specifying the separator
    This can be used as: #_FIELD{xx}{yy}
    The current known #_FIELD{xx} corresponds with #_FIELD{xx}{||}
  • Fix readonly/hidden formfields
  • Also update people fields from within a new booking
  • Stripe currency upon submit needs to be lowercase …
  • Membership payments via several payment gateways (stripe, paymill and braintree) was not calculating the correct price resulting in the payment not being successful.
  • No file upload allowed as custom field for events or locations
  • Number of bookedseats can be 0 if set to be
  • Update dompdf to 0.8.3
  • Update leaflet to 1.4.0
  • Update leaflet-markercluster to 1.4.1
  • Update Mollie API to 2.4.1

2.0.82 (2019/01/02)

  • GDPR is now a field per person, will be completed when asking for it via #_GDPR in a form (until now the #_GDPR was not stored in the DB)
  • Placeholder #_GDPR now also works for people info (like #_LASTNAME etc), so you can let people now in e.g. the RSVP or member mail that they approved.
  • New shortcode [eme_gdpr_approve], shows a form where people can give their GDPR approval (based on email). The mail being sent is configured in the EME options for GDPR.
    You can then use a WP page with this shortcode to send to all people that haven’t approved yet too.
  • Code deup
  • Fix an undefined array warning in eme_events.php
  • Fix location eventful paging
  • Fix notcategory containing a «+» for events

2.0.81 (2018/12/29)

  • Placeholder IS_USER_MEMBER_OF was failing due to a wrong sql statement
  • Make #_USER_HAS_CAP{xx}, #_IS_USER_IN_GROUP{xx} and #_IS_USER_MEMBER_OF{xx} return 0 for not logged users too
  • Create/edit for countries/states/discounts and discount groups are now aligned with the other edit screens, this allows more explanation added on the screen which makes certain fields more clear
  • Correct captcha detection in multibooking form

2.0.80 (2018/12/23)

  • Initialize some arrays to avoid php notices/warnings
  • More sql cleanups (makes everything more pretty code-wise and also makes events listing work again …)

Older changes can be found in changelog.txt