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 reserve 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
* 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
* 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 partially localised in Italian, Spanish, German, Swedish, French and Dutch. Also fully compatible with qtranslate (and mqtranslate): 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 reservation. You can remove reservation 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 reserved a space in your events.
  • The Pending approvals page is used to manage registrations/bookings for events that require approval
  • The Change registration page is used to change bookings for events
  • The CRON page is used to plan automated EME tasks (like sending reminders, cancel unpaid registrations, 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.


Love this plugin

Been using it for years… highly customizable, tons of features that I don’t even use, but still gives me a great platform for events. Very robust event planning plugin and calendar.

Wow! What a great plugin.

Full points for Frankie and Events Made Easy.

This is an incredibly powerful plugin and it works right out of the box. You can –literally – install the plugin, put the “events” page into your menus, and start adding events. Everything just works from there. The plugin will generate event listings, event description pages, booking forms, confirmation email and everything else you need to manage your calendar of events. Of course, some things need configuration ( like a reply-to email address ) but all the web pages work from default settings.

Payments are made easy too. It has simple, single click integration with a wide variety of payment platforms.

Fully integrated with your WordPress membership database, so you don’t need to run a second system. Everything is in one place.

If you want like to play, you can configure the output of the default web pages. Settings for every aspect of those pages are in your control. You can set up defaults for everything (and there is a lot) and you can over-ride everything.

In addition there are templates, a bit like Smarty, which can be almost everywhere. Templates can include conditional logic with IF statements and LOOPS, which are based on values from the event data. How cool is that!

Shortcodes allow you to integrate your events into posts and pages. Your shortcodes can include search queries based on date, time and category and they can call templates. The logic is simple and flexible. The mix of search and templates ( and conditional logic in the template ) means that you can do a lot (!) with shortcodes. In fact, the “basic usage” page in the documentation ( did I mention that there is good documentation ) says “you need to use shortcodes on regular pages to get anything done from EME.” That’s so not true, but it is does give you total control.

Plus, there are hooks and filters, so you can knock yourself out.

Terrible experience

I do not recommend this plugin at all!

I didn’t easily understand how it’s organized and the support is quite unfriendly. I am uninstalling this and using another plugin.

No one forces anybody to create a plugin and provide support, so if it’s to be rude to users, might as well do something else.

high customisable and simple

I like this plugin – simple, clear and high customisable. i can do a lot of fancy automated things 🙂
not to mention is a great support and documentation!

Thank You!

Great plug-in

Great plug-in. Did a little research on which one was best for event management before trying this one and have been really pleased. Once set up my templates it is easy to create and manage new events.

Read all 84 reviews

Contributors & Developers

“Events Made Easy” is open source software. The following people have contributed to this plugin.


“Events Made Easy” has been translated into 4 locales. Thank you to the translators for their contributions.

Translate “Events Made Easy” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.


2.0.66 (2018/11/20)

  • eme_mybookings now also shows events sorted by start date and time
  • Allow multiple bcc addresses, separated by comma or semicolon
  • Required discount field is now handled correctly upon submit
  • If the discount field is filled out and the code is incorrect (ie. calculated discount=0), then the booking is not possible
  • Added payment description form filters eme_rsvp_paymentform_description_filter and eme_member_paymentform_description_filter
  • Fix the scroll-wheel zomming option for maps (the disable was not working)

2.0.65 (2018/11/12)

  • #_FIELDCOUNTER and #_FIELDGROUPINDEX now start counting from 1, easier on the eye for humans 🙂
  • Allow emoji codes in event notes
  • Span (added with 2 css classes) around day numbers in calendar, so you can easily target the day numbers too in the cal using css
  • Fix list of attendees
  • Fix get bookings by wordpress id (affects [eme_mybookings] and wordpress profile edit

2.0.64 (2018/11/09)

  • Fix searching for people in groups in the people admin overview area

2.0.63 (2018/11/04)

  • Small fix when including events/locations in the WP link search dropdown
  • Omit trashed persons in autocomplete fields
  • Add name/id to filter form and submit (and style to submit too), so it is easier to style using css
  • Cancel booking confirmation form (from created after clicking on the link generated by #_CANCEL_LINK) is ajaxified now

2.0.62 (2018/11/01)

  • Subscribe/unsubscribe forms are now ajaxified
  • Show that RSVP is pwd protected in events and registrations overview
  • Fix typo in sql for new scope ‘now–today’
  • Fix the cancel booking form
  • Make edit of password protected bookings work

2.0.61 (2018/10/30)

  • A discount field can now be required too, and as such can even serve as a kind of individual password
  • In the people admin screen, you can now also filter on memberships and membership status
  • Fix typo in RSVP database query

2.0.60 (2018/10/27)

  • Fix CSV export and booking list

2.0.59 (2018/10/26)

  • Add notion of Trash to reservations too (when cancel or annulation happens, the reservation is moved to trash so it can be restored when needed)
  • Deprecated eme_delete_booking_form_filter in favor of eme_cancel_booking_form_filter
  • Scroll down to booking message also in the case the payment form is shown
  • Mollie changes (API update and GET=>POST)
  • Return formatted string for #_TRANSFER_NBR_BE97
  • Added scopes today–future (showing events from today onwards, the original behavior for the scope ‘future’) and now–today (showing events from now till the end of the day)
    The old scope ‘future’ now takes the event time into account as well, as does the scope ‘past’
    The old behavior of ‘past’ (which showed events until yesterday), is now called ‘past–yesterday’
  • Fix for storing dynamic data with events (typo fix)

2.0.58 (2018/10/13)

  • Captcha fallback if no freetype support is compiled in your PHP GD library
  • Option to set the use of a captcha per event or membership
  • Captcha is now always case-insensitive, so the corresponding option for that is removed
  • Correctly replace #_ADDBOOKINGFORM_IF_USER_HAS_CAP{xx} and #_USER_HAS_CAP{xxx} if user is not logged in too (idem with the similar MEMBER_OF and IN_GROUP placeholders)
  • Fix the detection of required fields when using the form #REQ_FIELD{fieldname}
  • Make sure the image property for the person is saved upon add/edit of a person
  • If the total amount of seats=0 (unlimited), then obey the set max for number of seats to book
  • Make sure the datefield is empty and not the current date when it should be empty

2.0.57 (2018/10/04)

  • Fix for editing recurrent events on specific days (the check for end date is not needed in that case and was blocking the edit)
  • Fix for storing custom answers (they were stored, but deletedd immediately after)

2.0.56 (2018/10/02)

  • Small improvement for event and location featured image (a little bit of text was shown too much in the add/edit screens)
  • Small improvement in member start/end date calculations for new members when defined in the backend (made it more logical)
  • Fix new location being added through event add

2.0.55 (2018/10/02)

  • Add grace period for memberships, to allow people to remain member for a number of days after the end date has passed
  • Add “one extra free period” for memberships. This is mostly for the fixed period membership type, where people “jump” in the middle of a current membership period but still need to pay the full price. This option then allows them to receive 1 extra membership period for free. Example: someone becomes a member for 1 year (membership starts in Jan) in June, he would need to pay full price but only receives six months (till Dec). So either you calculate pro-rata the price for him (not possible automatically yet), or you give 1 year free (so it would end Dec + 1 year)
  • Added API function eme_get_booking_post_answers, this allows people to easily get the POST answers for a booking for e.g. own discounts
  • Fix showing draft events (when paging event listings or in the calendar)
  • Fix for updating old version of EME to latest (argument count was wrong for function eme_get_mailings in the upgrade procedure)

2.0.54 (2018/09/23)

  • The captcha will now return an error if the wordpress configured temp dir is not writable
  • The captcha was removed if correctly entered, but other form validations might fail later on, so we take care of that now and not invalidate the captcha until the whole validation is ok
  • Added event placeholders #_ADDBOOKINGFORM_IF_USER_HAS_CAP{xx} (shows the booking form if user has a certain WP capability) and #__USER_HAS_CAP{xxx} (usefull as conditional tag check)
  • Avoid double “Required field” messages
  • Fix a setting logic so you can still rsvp after the start of an event if configured so
  • When editing a recurrence with ‘Specific Days’, only 1 day was shown
  • Add a missing html div-tag to the eme calendar

2.0.53 (2018/09/15)

    Please update to this release if using the client clock functionality and EME version>2.0.48
    Info: the cookie is now stored using json_encode and not serialize, to avoid for Object Injection
    Reported by (Thank you guys!)

2.0.52 (2018/09/13)

  • Fix #_EDITEVENTLINK and #_EDITEVENTURL (had wrong nonce)
  • Fix a double escaping in the location marker balloon format (resulted in double links and maybe not all image showed in the balloon)
  • Fix showing the list of uploaded files in the edit-booking window

2.0.51 (2018/09/11)

  • Fix map balloon format
  • Remove a double function call

2.0.50 (2018/09/10)

  • Fix an uninitialized db connection for recurrent events

2.0.49 (2018/09/10)

  • No more sessions needed for captcha or client clock
  • More ajax actions the ‘wordpress way’
  • Less inline javascript, will allow better minification of EME javascript files
  • Discount of type code was not working since version 2.0.43, corrected
  • Reactivate #_DIRECTIONS until something better comes along
  • Small cosmetic fix for delete recurrences

2.0.48 (2018/09/03)

  • Show reason of failed mail in the mailing report
  • When mailing is finished with failed mails, let the mailing contact person know
  • Fix mail error message after rsvp
  • Fix massmail popup dialog

2.0.47 (2018/09/03)

  • Fix mail sending and error reporting in the admin backend

2.0.46 (2018/09/02)

  • Allow file upload fields.
    This causes all forms to require a reasonably new browser, but already tested on: IE11 (Edge should be ok too), Firefox and Chrome (also Android versions)
    The field upload can also be done for persons in the backend (if defined as a dynamic field)
  • #_FILES can be called for bookings and members, returning the files uploaded for that booking or member (all files uploaded!). However: a custom field that was
    marked as “Person field” (so asking for personal info) will not be returned when using #_FILES
  • #_PERSONAL_FILES can be called bookings and members, returning the files uploaded for the relevant person
  • Show smtp debugging only when sending a test email
  • Implement an optional limit on the datetime people can start using the rsvp form (“Allow RSVP from” setting per event, complementing the “Allow RSVP until” setting)
  • When editing a booking and the price of the event changed in the meantime, take the new price into account and show a warning
  • Activate ignore_filter in the calendar shortcode (option was documented but not activated)
  • Marker clustering is now possible again too (it was on google maps, now also on openstreetmap)
  • Bugfix for multiple maps on one page
  • Bugfix when moving a booking from one event to another (the data was lost)

2.0.45 (2018/08/25)

  • Simple bugfix release

2.0.44 (2018/08/25)

  • Moved from Google Maps to OpenStreetMap since the Google Maps service now requires a credit card etc …
    This helps me in deciding not to try and integrate Google products anymore (not even recaptcha)
    Because of this, the #_ADD_DIRECTIONS_FORM currently will not return a form anymore (might become a map later on)
  • Revamped some recurrence code
  • Bugfix: when looking at a single location in the frontent, a 404 was returned
  • Bugfix: default page template was not selected for new events

2.0.43 (2018/08/24)

  • Added booking placeholders #_DISCOUNTCODES_ENTERED and #_DISCOUNTCODES_VALID (or #_DISCOUNTCODES_USED) to show the discount codes someone entered and those that are valid (the used ones)
  • Allow a different wordpress page template to be used per event (like any other wordpress pages)
  • Fix so #_MAPS returns empty and not a warning if you don’t have Google Maps activated
  • Bugfix when reusing a mail (html code was not escaped correctly)

2.0.42 (2018/08/21)

  • Formfields of type ‘people’ are now stored per person, so you can ask for extra personal info during rsvp or membership signup
  • Autocomplete now also works for the membership form
  • Bugfix for massmail popup dialog (it popped up on the wrong condition)
  • Bugfix when trashing a person (memberships and groups were not removed)

2.0.41 (2018/08/19)

  • Added separate view for mail archive
  • Implemented people trash and restore, together with an option to simply remove personal data (like the wordpress request for removal does)
  • The unsubscribe form shortcode eme_unsubform now takes 1 argument: template_id. This template can use the following placeholders: #_EMAIL, #_MAILGROUPS, #_GDPR (or #_GDPR{xxx}), and #_SUBMIT (or #_SUBMIT{xx}). If you want your own form for unsbscribe, use this on a page and not #_UNSUB_URL

2.0.40 (2018/08/17)

  • Re-added the default setting for massmail for new persons
  • Option added to show a popup if a person selects ‘No’ for #_OPT_IN or #_OPT_OUT. This allows to ask the person if they are sure that they don’t want to receive mails
  • GDPR removal of a person keeps the person id, but removes all user info in it. This allows reservation counts for events to stay correct.
  • In the events overview you can now filter on start or end date, or both (in which case it is a range for events starting on or later than the first selected date and ending on or before the second selected date)
  • The subscribe form shortcode eme_subform now takes 1 argument: template_id. This template can use the following placeholders: #_EMAIL, #_MAILGROUPS, #_GDPR (or #_GDPR{xxx}), and #_SUBMIT (or #_SUBMIT{xx})

2.0.39 (2018/08/16)

  • Removed the default setting for massmail for new persons. This setting was not GDPR compliant. If you want to know if a person wants massmailing or not, use the #_OPT_IN or #_OPT_OUT placeholders in your form (and #_OPT_OUT is not GDPR compliant as well)
  • Added a popup if a person doesn’t want massmailing, to ask them to be sure
  • Bugfix for disabling the honeypot field
  • JS bugfix if gmap is not enabled or API key not defined

2.0.38 (2018/08/15)

  • Added the option to require a password for rsvp submit, together with a new rsvp form placeholder #_PASSWORD
  • Groups can now be designated for “mail only”, and then people can unsubscribe from those groups in the new subscribe/unsubscribe form
  • Added [eme_subform] and [eme_unsubform] shortcodes, so people can subscribe/unsubcribe to email groups
  • Added placeholders #_EVENTS_COUNT and #_EVENT_COUNTER for eme_events shortcode. This gets interpreted for the templates and results in the count of events shown in the list (#_EVENTS_COUNT) or the position of the event in the list (#_EVENT_COUNTER)
    These can then be used in conditional tags to create dynamic templates based on the position or the amount of events
  • Most booking placeholders concerning people no longer need “RESP” in them, meaning you can almost literally copy the rsvp form format to the mail format and the resulting mail should reflect the expected result
  • Added placeholder #_GDPR for forms, shows just a checkbox that needs to be ticked, otherwise the form will not submit. Extra explanation is yours to add of course.
    Also added #_GDPR{xxx} where xxx is an extra label text for the checkbox
  • All rsvp related placeholders for events now use the linked event for rsvp info (some were missing)
  • Since the google maps api key is now required, don’t show the map anymore if not so, but show a warning
  • Add a generic option to disable the hidden honeypot field
  • Attempt to disable caching for the captcha image by some caching plugins
  • Bugfix for attendance url

2.0.37 (2018/07/31)

  • Added option template_id_no_events to [eme_events]
  • New rsvp placeholder #_ATTENDANCE_URL, will allow you to create an url (and using any other wp plugin create a qr-code), to send to the booker. When entering, this is scanned and checked:
    • if it is paid for
    • if the number of times this link is used is not higher than the amount of seats
    • only valid 5 hours before the event starts and until the event is finished (these limits can be set per event)
  • Added conditional tags #_IS_ENDED_EVENT, #_IS_USER_IN_GROUP{xxx} and #_IS_USER_MEMBER_OF{xxx}
  • Allow RSVP from one event to be linked to the RSVP section of another event
  • Several email subject formats can now also be customized per event
  • Moved the setting concerning the “required field text” for form fields to the section “Other”, because it also applies to membership forms and not just rsvp forms
  • Fix when editing personal info for an existing booking, together with autocomplete fix
  • Bugfix: mail to all active members of specific memberships was not working

2.0.36 (2018/06/26)

  • When showing a calendar day with only 1 event: redirect to that event, solves title issues
  • remove an old code fragment that did php output buffering
  • Added action eme_approve_rsvp_action, executed immediately after booking approval. 1 parameter: $booking (contains all info of the booking in an array)
  • Send an approval mail if total price to pay is 0 (due to discount or so) and auto-approve is set
  • Added an option to add events and locations to the link search when creating links in the wordpress editor
  • Correctly show the payment form for memberships too

2.0.35 (2018/05/28)

  • Fix readonly formfields (disabled formfields are not passed via POST)

2.0.34 (2018/05/25)

  • Bugfix when storing person info after editing a booking in the backend

2.0.33 (2018/05/22)

  • EME is now compatible with the new gdpr functionality of wordpress, but not everybody is willing to update their WP version, so this version takes that into account

2.0.32 (2018/05/21)

  • Fix a bordercase with dynamic data where you use the same custom fields both in the main RSVP form and in the dynamic fields section
  • Documented the eme_people shortcode
  • Added options template_id_header and template_id_footer to the eme_people shortcode
  • Added #_GROUPS to attendee, booking and people placeholders, returning a csv list of the groups a person is in
  • Added #_GROUPS to dynamic data condition placeholders for events and memberships, returning a csv list of groups a user that is entering a form is currently in
  • Added eme_if condition ‘incsv’, so for ex. you can compare if a certain person is in a certain group and based on that show/hide stuff
  • Added extra dynamic data conditions (like ‘contains’, ‘notcontains’ and ‘incsv’)
  • Make EME compliant with the new wordpress gdpr functions

2.0.31 (2018/05/07)

  • Revert the global use of Nuberformatter, not every php installation has the intl extensions loaded (even though it is available in cpanel etc …)

2.0.30 (2018/05/04)

  • Don’t store the IP when creating a booking, this is unneeded info to keep and might be a problem for GDPR compliancy
  • Fix sending custom event mails to specific wordpress users/groups
  • Allow sending a preview mail for event mails
  • Add payment gateway and transaction ID info to booking/member payment info
  • Improve FirstData payments (other currencies except USD accepted now)
  • Add filter eme_add_currency_codes to be able to define the 4217 numeric code for own currencies (next to eme_add_currencies filter)
    Currently this code is only used for FirstData payments
  • NumberFormatter is now a requirement. This is not an issue for any php version >=5.6, which is required anyway.
  • Update DomPDF to 0.8.2

2.0.29 (2018/04/22)

  • Stay on edit page now also includes templates, formfields, people and groups
  • Fix for editing a booking with dynamic fields
  • Show dropdown field tag values too for a formfield of type ‘Person’
  • Fix dynamic pricing for custom fields again
  • Add EME version number to all javascript files, solves caching issues

2.0.28 (2018/04/16)

  • Use older array notation and take into account older mysql versions, both just needed for very old mysql/php installations
  • Correct the default behaviour for an empty location when creating/editing an event
  • Allow javascript to be used in the “booking recorded message”
  • Add an option to stay on the edit page after saving an event

2.0.27 (2018/04/09)

  • Add an option to exclude registered people from event mailings
  • Added creation_date and modif_date columns to virtual every eme table (and removed the unused *_gmt columns)
  • Review #_EVENTFIELD{xx}, #_LOCATIONFIELD{xx}, #_PERSONFIELD{xx}, #_BOOKINGFIELD{xx} and #_ATTENDFIELD{xx} with ‘xx’ being the name of a field for events, locations, persons, bookings or attendees. With the newly (or existing) columns for creation/modif you can use these placeholders for creation/modif timings
  • Allow all mails to be queued (new option in EME settings)

2.0.26 (2018/03/27)

  • Database table definition fixes for new installations
  • Fix for an option that was not saved
  • Show the format settings for rsvp payment success/failure (they were hidden in the options by old javascript)
  • Fix for the case where only 1 country is defined and #_COUNTRY is not used in the rsvp form (in which case #_STATE should return the states for that 1 country)

2.0.25 (2018/03/26)

  • Planned mailings now get their conditions reevaluated before the mailing starts (groups and such) so the result of the mailing will be as close to reality as possible on that moment
    This change is kindly sponsored by Alex Floris
  • Cancelled mailings had wrong statistics (reported 0 cancelled), this has been fixed
  • Added event placeholders #_STARTDATE{xx}, #_ENDDATE{xx}, #_EVENTCREATIONDATE{xx}, #_EVENTMODIFDATE{xx} with ‘xx’ being the date format of your liking (php date format compatible)
  • Added event placeholders #_DAYS_FROM_START and #_HOURS_FROM_START
  • Member extension javascript fix
  • Event location edit fix: the edit was not retained due to the location id of the current event having priority over the text entered
  • Discount code fixes when showing/editing dynamic prices in the admin backend
  • Deleting a person when deleting a member was not working as expected

2.0.24 (2018/03/16)

  • Undo clickable links, too much unwanted side-effects for now

2.0.23 (2018/03/15)

  • Added placeholders #_PAIDSPACES and #_PAIDSPACES{xx}
  • Allow to completely delete a person when deleting a member
  • Rename #_PAYED to #_PAID and #_IS_PAYED to #_IS_PAID
  • In case of multibooking the thank-you message was shown for each booking, has been corrected
  • Mentioned http/https/mailto addresses in events descriptions/notes/… are now clickable by default if you don’t create your own clickable link
  • Add an option to automatically add a person to a group when rsvp-ing or becoming a member
  • Discount fixes in case use per seat is set and max discount usage is 0
  • Discount edit was not saving the “use per seat” if it was unset after update

2.0.22 (2018/03/07)

  • Total seats for an event can be 0 now, to indicate no limit
  • Make discounts work again
  • Rename conditional tag #_IS_NOT_START_OR_END_DATE to #_IS_NOT_START_OR_END_DAY

2.0.21 (2018/03/01)

  • Bugfix: fix country/state required validation in the rsvp form
  • Bugfix: if mail queuing was not activated, custom mails for events were not possible
  • Fix num-3 validation

2.0.20 (2018/02/28)

  • Better country/states management
  • Set default country if only one country is defined
  • Don’t complain for sending an email if the receiver email is empty, just act as if it is ok
    This allows us to have persons in EME without email info now (it might seem archaic, but it happens …)
  • Bugfix: make state edit work again

2.0.19 (2018/02/24)

  • Use and enfore a list of states/countries for RSVP and people/members
  • Add marker_clustering option to eme_locations_map shortcode (allows to cluster a umber of markers together, values: true/false)
  • Autocomplete discount and discountgroup selection in the event RSVP setting screen
  • Allow people to be added to a static group from the people admin screen
  • Added a new template type “HTML output”, can be used in peple/members/rsvp admin screen. This allows you to create your own layout/lists
  • Allow to add a category to a list of selected events in the admin interface
  • Add option show_ongoing to shortcode eme_rss_link
  • Limit rsvp autocomplete to WP users if WP membership is required for the event
  • Global locations map now obeys the eme_filter shortcode too
  • Improvement: take into account deleted locations for event location updates
  • Removed a function that deleted old planned but unsent mailings after 7 days. This was ok in the past, but now interferes with planned mailings
  • Added option ignore_filter to shortcodes eme_events, eme_locations and eme_locations_map, so you can use several
    shortcodes on 1 page and only some are optionally influenced by the eme_filter
  • Bugfix: make notcategory work again in eme_calendar
  • Bugfix for taking into account WP membership and “register only once”

2.0.18 (2018/01/13)

  • Added the possibility to store the filter for people or member lists as a dynamic group, so you can send mail to that group
  • Make #_CAPTCHAHTML{…} obey newlines
  • More mailing options (archiving + better cleanup done)
  • Allow sending of mails to specific EME people and groups for event mails
  • More search-functionality in people/member admin screens
  • Show the applied discount i(group) names in the rsvp csv and printable report, and when editing a booking
  • Add rsvp placeholder #_APPLIEDDISCOUNTNAMES, returns a csv-list of applied discount names for a booking
  • Fix planning of generic mails again

2.0.17 (2018/01/08)

  • Allow planning of event mails too
  • Some more mailing stats
  • Extra RSVP setting per event to optionally require an unique person or email registration
  • Add option to check lastname/firstname without_accents when required (for unique registrations or the cancel form)
  • Allow an option to track discount usage per booked seat
  • Add the correct surrounding div to the payment form if shown standalone
  • Remove a wordpress db-debug statement
  • Better account for wordpress br-issues …

2.0.16 (2017/12/31)

  • GDPR improvements and corrections
  • Cron tip
    In crontab: */5 * * * * php -q /path/to/wordpress/wp-cron.php >/dev/null 2>&1
    And in wp-config.php: define(‘DISABLE_WP_CRON’, true);

2.0.15 (2017/12/30)

  • Use even less sessions (no sessions in admin backend needed at all for eme)
  • Track queued mails (count the times a mailing is read and when someone read the mail)
  • Allow include/exclude in #_EVENTCATEGORYDESCRIPTIONS too, and allow html in the cat description
  • Allow multiple category ids in the eme_add_multibooking_form shortcode
  • When deleting locations, you can now select to transfer associated events to another location
  • Bugfix for sending mails to “all” for events (and in cron)
  • Added filters eme_event_categories_sep_filter, eme_event_categorydescriptions_sep_filter, eme_linked_event_categories_sep_filter
    Also added options for these (in the ‘Other’ section), so the filters shouldn’t be needed
    These control the separator for #_EVENTCATEGORIES (default: “, “), #_EVENTCATEGORYDESCRIPTIONS (default: “, “) and #_LINKEDEVENTCATEGORIES (default: “, “)

2.0.14 (2017/12/20)

  • Remove an old polylang workaround
  • Make sure we don’t interfere with wordpress ajax when using sessions (although sessions are not recommended, so that will get replaced in the future)
  • Add action hook eme_insert_member_action, so you can add custom code after a member signed up. One param: $member (to get the answers of that member and more: see the doc on hooks and filters)
  • Cron tip
    In crontab: */5 * * * * php -q /path/to/wordpress/wp-cron.php >/dev/null 2>&1
    And in wp-config.php: define(‘DISABLE_WP_CRON’, true);

2.0.13 (2017/12/15)

  • Another discount fix (for dynamic price calc)
  • Added creation/modif datetime columns for events in the admin backend

2.0.12 (2017/12/13)

  • Fix discounts (discount usage was increased each time for dynamic price calculation and showing in paypal,… resulting in discounts not to apply when the max usage was set to 1)
  • Fix for adding a location

2.0.11 (2017/12/13)

  • Stripe and Braintree payment gateway corrections
  • Added payment gateway Paymill
  • Correct some CSS (not all relevant messages were being shown)
  • Correct dropdown_multi (typo fix)
  • Bookings with price 0 (after discount and such) are now marked paid and (if set) auto-approved
  • Fix paging header for events (paging and monthly/daily/weekly scope did not show the paging header anymore if a period had no events)
  • BEHAVIOUR change: from now on a custom page will always be shown after payment, so the option itself to decide wether or not to show it has been removed

2.0.10 (2017/12/06)

  • Allow more HTML5 formfield types
  • Handle some datetime exceptions more gracefully for membership status calculation
  • Fix so event authors can edit own events again
  • Fix for template parsing (added a possible newline too much at the end)
  • Make location autocomplete for events more predictable

2.0.9 (2017/12/02)

  • Show category slug (SEO permalink) and allow to change it
  • Make mailing reports useful again
  • Add bulk action to resend mail to pending members
  • Updating dynamic fields for members was not working
  • Remove the deprecated ‘fields’ option for the filterform shortcode, making it work more logically
  • Cron tip
    In crontab: */5 * * * * php -q /path/to/wordpress/wp-cron.php >/dev/null 2>&1
    And in wp-config.php: define(‘DISABLE_WP_CRON’, true);

2.0.8 (2017/11/24)

  • Add “Send email” mass action to rsvp-list
  • Fix for dynamic pricing field
  • Delete answers not linked to anything when updating members/people/rsvp
  • Fix for replacement of booking/attendee placeholders in the EME header/footer settings for bookings/attendees
  • Fix for mail to all people
  • Initial support for GDPR (General Data Protection Regulation, [eme_gdpr] shortcode)

2.0.7 (2017/11/17)

  • Adding/editing a membership was not saving its properties
  • The displayed start/end date for new members was not correct when signing them up in the backend interface

2.0.6 (2017/11/13)

  • Allow shortcodes in the rsvp and member forms (allows you to use conditional tags and e.g. only show certain fields in the admin section)
    For this #_IS_ADMIN and #_IS_LOGGED_IN now work in member forms
  • Better handling of answers (update when needed), to alleviate the pressure on the answers table
  • Integrate better with wordpress images, so:
    • for people, we can use #_IMAGETITLE, #_IMAGEDESCRIPTION, #_IMAGEALT, #_IMAGECAPTION (the 4 properties you can set for a wordpress image)
    • for events, we can use #_EVENTIMAGETITLE, #_EVENTIMAGEDESCRIPTION, #_EVENTIMAGEALT, #_EVENTIMAGECAPTION (the 4 properties you can set for a wordpress image)
    • for locations, we can use #_LOCATIONIMAGETITLE, #_LOCATIONIMAGEDESCRIPTION, #_LOCATIONIMAGEALT, #_LOCATIONIMAGECAPTION (the 4 properties you can set for a wordpress image)
  • Fix for inserting persons in the database (was causing a WP-prepare error)

2.0.5 (2017/11/12)

  • Show more error messages on screen to catch php issues for people …
  • Make global map work again
  • Simple search added in mailing reports
  • Person image column deleted and moved to properties, this allows more person properties in the future without needing to change the db
  • Added title/description to person image, together with the placeholders #_IMAGETITLE, #_IMAGEDESCRIPTION
  • Removing a person from the last group he was in was not working
  • Removed the option “Add payment id to return page info” (added by default now) and as a result simplified the code for custom return/error pages for bookings (works for multi-bookings too now)
  • Small interface fix for the membership and forever-period (to show an empty end-date and not the date of today)

2.0.4 (2017/11/10)

  • Add #_FIELDCOUNTER and #_FIELDGROUPINDEX for dynamic field formfields, so you can indicate the number used
  • Small bugfix to make “Show all bookings” link work as expected again
  • The mailing report showed all mails sent, not the one from the selected mailing
  • Allow individual mails from the report to be reused
  • Allow people to have a picture
  • Add shortcode [eme_people] with option group_id (to show a specific group) and template_id (for the formatting)
    All people placeholders can be used in the format
  • Added extra people placeholders #_IMAGE, #_IMAGEURL, #_IMAGETHUMB, #_IMAGETHUMBURL
    #_IMAGETHUMB{xx} and #_IMAGETHUMBURL{xx} (‘xx’ being a thumbnail format)

2.0.3 (2017/11/09)

  • Default ordering for people was not correct (should be lastname/firstname)
  • The filtering fields for the people search form is now limited to those of fields with purpose “people”
  • Corrected the startdate calculation for members
  • The mailings tab is now ajaxified, showing correct results all the time without needing to refresh the page
  • PDF output for people was no longer working due to typo

2.0.2 (2017/11/08)

  • Some mobile screen improvements in the admin
  • Bugfix for answers table (was not storing answers for fresh EME installations)

2.0.1 (2017/11/05)

  • Allow some basic membership placeholders to be used in the memberform: #_MEMBERSHIPNAME, #_MEMBERSHIPDESCRIPTION, #_MEMBERSHIPPRICE
  • New actions in people and members: send mail to selected rows
  • Mailing can now be reused too
  • Layout improvements for selecting people, groups and defining a mailing
  • Bugfix: on new installations the answers and queue tables were not created due to a typo

2.0.0 (2017/11/03)

Because of new membership functionality, this is a major update.
* INCOMPATIBILITY: Dynamic field conditions are now much more flexible, but not backwards compatible!
* “Add event” submenu is now part of “Events”
* Allow mails to be sent concerning multiple events
* Revamp the send-mails, holidays, categories, templates and formfields screens
* Form fields with multiple choice can now have different values in the backend as in the frontend
* Groups added, and the possibility to send mails to groups
* Mailings can now be planned, making EME into a very nice mailing system
* Custom fields are now possible for people (even with the possibility to conditionally show them for a specific group), and FIELDVALUE can be used in people placeholders now
* Add custom formfield type Date (JS) ==> to show a datefield via jquery
* Add custom formfield type Dropdown (Multi) ==> to show a dropdown multi-select field
* Membership functionality added
Member placeholders: see doc
Membership form placeholders: see doc
Membership form shortcode eme_add_member_form: see doc
* PDF can be generated for both members and bookings (based on a choosen template with new type ‘PDF’)
* API search function eme_wordpress_search_events can now take an argument “scope” (values=past/future/all, default=future)
* More visual feedback in the rsvp admin section when executing actions
* Added option to change the “bookings no longer allowed on this date” text
* Also check for free available seats when updating a booking in the backend
* Show dyndata in CSV export
* Allow “month=next_month” in the calendar shortcode
* Add new people placeholder #_MASSMAIL
* Updated Stripe API to 5.5.0
* Bugfix: when someone cancelled a booking from the frontend, no mail was sent to the contact person
* Bugfix: #_FIELD was not working anymore in the multibooking rsvp form
* Bugfix: template type ‘All’ was not working as expected
* Cron tip
In crontab: */5 * * * * php -q /path/to/wordpress/wp-cron.php >/dev/null 2>&1
And in wp-config.php: define(‘DISABLE_WP_CRON’, true);

Older changes can be found in changelog.txt