=== Events Made Easy === Contributors: liedekef Donate link: https://www.e-dynamics.be/wordpress Tags: events, memberships, locations, booking, calendar, maps, paypal, rsvp Requires at least: 4.0 Requires PHP: 5.6 Tested up to: 5.0 Stable tag: 2.0.85 License: GPLv2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html Manage and display events, memberships, recurring events, locations and maps, widgets, RSVP, ICAL and RSS feeds, payment gateways support. SEO compatible. == Description == 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](https://www.e-dynamics.be/wordpress/) . == Installation == 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. = Usage = 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](#formatting-events) 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](https://www.e-dynamics.be/wordpress/). == Frequently Asked Questions == See the FAQ section at [the documentation site](https://www.e-dynamics.be/wordpress). == Changelog == = 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 ...) = 2.0.79 (2018/12/22) = * Major rework in searching+sorting custom fields in the admin interface: - you can (must) now define which custom fields are "searchable" in the admin interface for events/locations/members/people when defining the field - only those fields can be searched for - all custom field answers will always be shown from now on in the table for events/locations/members/people - new hint added: when searching for custom field values, you can optionally limit which custom fields you want to search in the "Custom fields to filter on" select-box shown. * Fix 2 undefined variables in eme_people.php = 2.0.78 (2018/12/21) = * Really fix the sql statement to find bookings by wp user (when [eme_mybookings future=0] is used) * Fix to find the eme person related to the current wp userid * Code cleanup = 2.0.77 (2018/12/20) = * Fix location map showing in backend when a new address is entered (wrong coordinates were used for the marker to show, so the map showed the wrong location, but was ok upon edit) * Fix a sql statement to find bookings by wp user * Fix the case where event_category_ids is NULL in the database for an event and you want to show events not in a certain category * Better messages to indicate what is missing in your rsvp form * Better rewrite rules to account for events/locations starting with a number = 2.0.76 (2018/12/18) = * Map now zooms to max level that shows all markers (and the zoom option is removed again from eme_location_map, also from the settings) * Small js fix for admin backend and location custom pin (it was not resized correctly there) * Add an option to use gesture handling for maps (if you choose to use map gestures, then on a desktop zooming must be done using ctrl+zoom, and on a mobile device the user needs to use two fingers to pan the map. This to prevent getting "trapped" in the map when a big map is shown). * Fix required custom fields in the rsvp form * Fix multiline customfields with empty first value = 2.0.75 (2018/12/15) = * Added an option to disable the letter icons on the global map and location list (letter_icons=0 option for shortcode eme_locations_map) * You can now set a custom map icon per location (size should be 32x32, bottom center will be pointing to the location on the map) * Added zoom option for eme_location_map shortcode = 2.0.74 (2018/12/12) = * Added zoom option for eme_locations_map shortcode * Added limit and random_order options to eme_locations shortcode * Show link to locations view in Locations admin screen * Renamed occurences of spaces to seats in text * Deprecated #_ATTENDSPACES in favor of #_ATTENDSEATS, also #_RESPSPACES => #_RESPSEATS, and #_SPACES=>#_SEATS * Added possibility to filter on template and field name in admin backend * Fix html title for locations * Fix an issue with widgets and header/footer missing = 2.0.72 (2018/12/10) = * More resilient json creation for the global map (needed if you do location imports) * Correct location field filtering for custom fields * Stricter checking for header and html title if the event/location exists * Fix #_FIELD, #_FIELDNAME and #_FIELDVALUE replacements (event took precendence over rsvp etc .., now the field type is checked) = 2.0.71 (2018/12/08) = * Bugfix for non-existing table = 2.0.70 (2018/12/08) = * Import improvements for events and locations, and added delimiter and enclosure as parameters during import for everything (events, locations, members, people, discounts) * Correct the event slug for recurrent events = 2.0.69 (2018/12/08) = * Validate country/state/email when adding person info, so possible autocompleted fields are better checked * Added custom field types for events and locations, so you can now add custom info per event/location (as for attributes, but with more freedom for types and such) * Added #_FIELD, #_FIELDNAME and #_FIELDVALUE for events and locations (to show the value for defined custom fields) * Added #_FIELD{xx} to the eme_filterform too, so you can add a custom field to the search parameters * Add filters eme_field_value_filter and eme_admin_field_value_filter. These take 3 arguments: the formfield, the form POST fieldname and the current value Using these filters (eme_admin_field_value_filter is applied only in the admin backend, eme_field_value_filter only in the frontend), you can change the value of certain form fields by looking up other info from other tables/posts and based on the formfield, the userid, ... * Make event and location imports work (csv only currently) * Membership payment logic is now unified (for pending,active,expired and grace status), so you no longer need to check the membership status in order to choose the correct action * Better slug for events and locations (permalinks now without the event or location id). The new slug for an event will be used after you edit the event. * Fix rights management for deleting your own event * Fix bcc addresses * Required fields can have a value of 0 for custom fields * Show correct state name if no country was selected too = 2.0.68 (2018/11/27) = * Small SQL query fix = 2.0.67 (2018/11/26) = * Fix Mollie payment images due to new api * Show correct Mollie payment status too * Show 'Mark paid and approve' button again on pending bookings overview * Auto-approve after payment now also works if you manually mark a booking as paid = 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 * Deprecated #_DELBOOKINGFORM in favor of #_CANCELBOOKINGFORM * 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) = * SECURITY RELEASE 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 See https://www.owasp.org/index.php/PHP_Object_Injection Reported by pluginvulnerabilities.com (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} * Added #_ADDBOOKINGFORM_IF_USER_IN_GROUP{xxx} and #_ADDBOOKINGFORM_IF_USER_IS_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