Plugin Directory

Events Made Easy

Manage and display events, recurring events, locations and maps, widgets, RSVP, ICAL and RSS feeds, payment gateways support. SEO compatible.

1.6.10 (2016/02/04)

  • Bugfix: events without location info were returning blank content when viewing the single event details

1.6.9 (2016/02/04)

  • Bugfix if you used the option to hide rsvp full events (the new sql statement from 1.6.7 was incomplete)

1.6.8 (2016/02/04)

  • Bugfix if you used the option show_recurrent_events_once in the eme_events shortcode (the new sql statement from 1.6.7 was incomplete)

1.6.7 (2016/02/03)

  • Performance improvement when showing the calender by reducing the number of sql statements made
  • Bugfix in the calendar: in some cases all events were selected in the database, resulting in memory problems if you had many events

1.6.6 (2016/01/31)

  • Feature: added braintree and stripe payment gateways
  • Feature: added filter eme_csv_column_filter, so you can change the csv columns to your liking (adding/removing columns ..) Has 3 arguments: csv line (an array with all columns), event (array with all event data), current line number

1.6.5 (2016/01/21)

  • Add the possibility to disable autocomplete for the registration form
  • Added event placeholder #_EXTERNALURL, to show the external url for the event if it has a value
  • Bugfix for locations, preventing a location-filtered calendar to work correctly

1.6.4 (2015/12/19)

  • Improvement: some more cleanup actions added
  • Bugfix: make sure the calendar title tags contain valid escaped chars

1.6.3 (2015/12/19)

  • Feature: added option holiday_id to [eme_calendar], so you can show holiday info in the calendar if wanted
  • Bugfix: captcha fix if code is wrong

1.6.2 (2015/12/11)

  • Feature: added option id to [eme_mybookings], so you can now show only the bookings for the logged in user if you use this in the single event format as: [eme_mybookings id=#_EVENTID]
  • Feature: added #_CANCEL_OWN_LINK (as #_CANCEL_OWN_URL but clickable)
  • Bugfix: if the start and end date are equal and the end time is not set, set it to 23:59:59 and not 00:00:00

1.6.1 (2015/12/07)

  • Bugfix: make captcha work again

1.6.0 (2015/12/06)

  • Feature: you can add holidays to a recurrent list of events, in which case that day will be skipped (no event) when creating/editing the recurrence A list of holidays consists of 1 or more rows of the format YYYY-MM-DD
  • Feature: added option weekdays to the calendar shortcode, so you can select which days of the week you want to show (0-6 as values)
  • Feature: added #_CANCEL_OWN_URL rsvp shortcode, can be used in event lists so you can allow logged in people to just cancel their own booking with a single click, or the event owner/author Difference with #_CANCEL_URL is that #_CANCEL_URL gives the url no matter what (easier for mails, not wp-members and such)
  • Feature: added shortcode [eme_attendees_report_link], generating a csv for the attendees/events (events as rows, dates as columns, attendees as cell entries) Options: - event_template_id (if not given, format is "#_EVENTNAME #_STARTTIME") - attend_template_id (if not given, format is "#_ATTENDFIRSTNAME #_ATTENDLASTNAME") - scope (the scope of events to return, if not given, scope=this_month) - category and notcategory (empty if not given, see the [eme_events] shortcode) - title (title of the link, if not given: "Attendees CSV")
  • Feature: autocomplete is now possible in the frontend rsvp form if you have the correct rights, together with #_CANCEL_OWN_URL this means bookings can totally be managed in the frontend if wanted
  • Improvement: 'Bookings for' was not translated in the printable view
  • Improvement: added partial Hungarian translation, thanks to Márton Jakobey
  • Improvement: for attendance types, if the min. number of seats to book is 1 (so attendance is required), then the yes/no field is now hidden (not for multibookings yet)
  • Improvement: some layout improvements when creating events (concerning the date/time and recurrent info)
  • Bugfix: firstname was not detected as an 'ok' field if it was required and WP membership was required too. Since the value is then readonly, we can ignore the required check then anyway ...
  • Bugfix: for multiprice events, the multibooking form was not rendered because the count of required fields in the formats was wrong

1.5.53 (2015/11/17)

  • Feature: added filters eme_cal_full_yearmonth and eme_cal_small_yearmonth, so you can change the header shown in the full/small calendar Has 3 arguments: current string, selected month, selected year
  • Work around a bug in wordpress date_i18n that doesn't translate everything correctly ...

1.5.52 (2015/11/16)

  • Improvement: added cancel form placeholder #_CANCELCOMMENT and corresponding rsvp placeholder #_RESPCANCELCOMMENT This allows you to show a comment form field when canceling, and to mail that comment to booker and/or contact person
  • Improvement: don't show the payment form if the total price to pay is 0
  • Improvement: show a spinner when switching months in the calendar
  • Improvement: added email filters eme_rsvp_email_text_xxx_filter and eme_rsvp_email_html_xxx_filter with "xxx" being one of: confirmed_body,updated_body,pending_body,denied_body,cancelled_body confirmed_subject,updated_subject,pending_subject,denied_subject,cancelled_subject contact_body,contact_cancelled_body,contact_pending_body contact_subject,contact_cancelled_subject,contact_pending_subject
  • Improvement: renamed eme lang files to events-made-easy, also changed the gettext calls accordingly this will allow to have wordpress language packs in the future
  • Improvement: German language updates, thanks to Joerg Knoerchen
  • Bugfix: when updating a recurrence, the days were set wrong in the edit screen
  • Bugfix: comparing min/max allowed seats was not working in a multiseat setup
  • Bugfix: allow for min=1,max=1 seats for a multiprice event to force exactly 1 seat to be taken in total

1.5.51 (2015/10/13)

  • Bugfix: make sure you can still add categories, templates, formfields

1.5.50 (2015/10/12)

  • Feature: you can now deactive the mail sending for approved and/or pending bookings
  • Feature: add cleanup action for old unpayed bookings
  • Feature: added 3 specific calendar conditional tags: #_IS_STARTDATE, #_IS_ENDDATE, #_IS_NOT_START_OR_END_DATE and a filter eme_cal_format_prefilter
  • Bugfix: if long_events=1 in the eme_calendar shortcode, and the end time was lower than the start time, the last day wasn't shown as eventfull
  • Bugfix: multi-fields in the filterform weren't working
  • Bugfix: excluding multiple categories in the widgets was not working as expected
  • Security fix: fix possible XSS attack vector in the admin pages for templates, categories, formfields and cleanup (thanks to David Sopas)

1.5.49 (2015/09/28)

  • Bugfix: when approving a booking and at the same time setting the payed status, the mail sent out was using the old payed status so #_PAID was wrong
  • Bugfix: fix undefined variable in eme_rsvp.php

1.5.48 (2015/09/26)

  • Feature: you can now move a booking to another event (when updating the booking)
  • Bugfix: when editing a recurrence, the end-days per individual event were set at the end date of the recurrence instead of the correct event end date

1.5.47 (2015/09/23)

  • Feature: added event placeholder #_SINGLE_EVENTPAGE_EVENTID, returns the event id of the single event page currently shown
  • Improvement: add a class to the rsvp form submit button
  • Bugfix: when editing a location, don't translate fields that are multi-language compatible (otherwise you lose the other languages)
  • Bugfix: make sure the calendar monthname is localised again

1.5.46 (2015/09/18)

  • Feature: you can now also set the cancelled and denied mail format per event
  • Bugfix: remove leading 0 for minutes was not working ok
  • Bugfix: event end time was not correct when editing an event with local timeformat in AM/PM notation

1.5.45 (2015/09/10)

  • Bugfix: the payment form was not shown after registration for #_ADDBOOKINGFORM_IF_NOT_REGISTERED
  • Bugfix: entering/updating events showed an error in some cases as the timezone was passed along as an argument

1.5.44 (2015/09/09)

  • Bugfix: the countdown and HOURS/DAYS_TILL_START/END were reversed (negative values shown)

1.5.43 (2015/09/09)

  • Improvement: German language updates, thanks to Joerg Knoerchen
  • Bugfix: take into account wordpress weirdness when setting UTC-like timezones in the preferences ...
  • Bugfix: forgot to initialize colreorder for the datatables, works again now

1.5.42 (2015/09/08)

  • Feature: added placeholders #_EVENT_EXTERNAL_REF and #_LOCATION_EXTERNAL_REF, returning the external reference for an event or location (typically the facebook id)
  • Feature: you can now also select a template in the event list widget
  • Feature: added attendee placeholder #_ATTENDSPACES{xx} to return the number of seats reserved for a specific price for a multi-price event
  • Improvement: use wordpress is_email function to check for valid email addresses
  • Improvement: small visual improvement when showing the username in the registration overview
  • Improvement: also show the CSV export link if there are just pending seats (not approved)
  • Bugfix/improvement: don't set the timezone globally anymore, use class ExpressDate (should help with some time conflicts in other plugins)
  • Bugfix: when updating a registration, the old info was still being shown in the mail sent
  • Bugfix: when showing a calendar day, not always the single event was shown if only 1 event was on that day
  • Bugfix: when showing the booking form, no check was made whether or not enough seats were available in the case of multiprice with a defined multi-minimum too
  • Bugfix: make sure all #_*SPACES placeholders return a number for multi-price values (wasn't the case if the value should be 0)
  • Bugfix: replace possible multibooking placeholders in the payment return page too

1.5.41 (2015/7/27)

  • Feature: added placeholder #_EVENTCATEGORIES_CSS, returning a space-separated list of categories. Also, excluding categories is possible, like in #_EVENTCATEGORIES Also added #_LOCATIONCATEGORIES_CSS
  • Feature: added rsvp placeholders #_RESPNICKNAME, #_RESPNICKNAME and attendee placeholders #_ATTENDNICKNAME and #_ATTENDDISPNAME (displays the nickname or displayname for a booker or attendee if the user is a wordpress user)
  • Feature: add extra header/footer format settings when showing the list of events for a specific category
  • Feature: allow attributes to be text areas now, so you can do more with them
  • Feature: add the option to ignore paypal tax setting in your profile
  • Change: mails with no subject or body will not be sent
  • Bugfix: for some reason, in the older plugin code I added the logic that the excerpt was never to be shown on single event pages. This has been corrected now.
  • Bugfix: add db column 'lang' for the peoples table if missing
  • Bugfix: the booker firstname/lastname was not correctly replaced in the cancel form for WP users

1.5.40 (2015/05/31)

  • Bugfix: when deleting a booking, the extra field answers were deleted before the mail was sent, resulting in some placeholders not being replaced in that mail
  • Bugfix: fix untranslated and unescaped category names when creating/editing events
  • Bugfix: fix edit and update bookings (missing argument for a function)

1.5.39 (2015/05/21)

  • Bugfix: small fix for undefined variable

1.5.38 (2015/05/21)

  • Bugfix: multibooking fix for mails
  • Bugfix: allow firstname to be required too

1.5.37 (2015/05/08)

  • Bugfix: cancel url was not correctly shown (and was also not working for bookings with no price)
  • CSS Bugfix for chrome (the fix got added in 1.3.4 and removed later on): datatable CSS fix so the footer doesn't overlap with the table in some browsers
  • Improvement: German language updates, thanks to Joerg Knoerchen

1.5.36 (2015/05/01)

  • Feature: added Worldpay payment gateway
  • Feature: added event placeholders #_AUTHORNAME, #_AUTHOREMAIL and #_AUTHORPHONE
  • Feature: added description for categories, together with placeholders #_EVENTCATEGORYDESCRIPTIONS and #_LOCATIONCATEGORYDESCRIPTIONS
  • Feature: added option "approval_status" to shortcode eme_mybookings. Values: 0=all, 1=approved, 2=pending. Default: 0
  • Feature: added function eme_get_person_by_post(), so people can call this to check if somebody is registered without needing to now the internals: $booker = eme_get_person_by_post(); if (!empty($booker)) { $already_registered=1; }
  • Feature: now everybody can cancel a booking (even non-wp users) via a special link. Cancel urls in mails and user profile use these links now. The old booking cancel form will be deprecated in the future, as using this link/form is more secure and easier to maintain For this #_CANCEL_LINK and #_CANCEL_URL have been adapted already. And a new placeholder #_CANCEL_CODE has been added that returns the cancel code to be used in the new cancel booking form (to be implemented)
  • Feature: added option ignore_url to shortcode eme_event: in a number of cases (like when using this shortcode in the calendar format for an event entry), the url would case the page to be redirected. Using this, you can ignore that url.
  • Bugfix: when canceling a booking via the cancel url, the mail being sent contained the free spaces info from before the cancel, it was sent too early in the process
  • Bugfix: event placeholders were not being replaced in booking mails (they were replaced in attendee mails)
  • Bugfix: make sure you can require the first name to be completed if wanted
  • Bugfix: a redundant check was made for firstname in multibooking events, so people filling in their last name still received an error that the last name was not filled out
  • Bugfix: some category link fixes


  • Bugfix: RSVP placeholders in multibooking mails were not being correctly replaced


  • Bugfix: make #_FIELDVALUE actually work ..
  • Bugfix: show the user display name as lastname if the lastname is empty for a user in forms


  • Bugfix: in a borderline case new reservations were not possible


  • Bugfix: make sure the booking recorded message shows, no matter what
  • Workaround: take into account that wordpress sets NULL for empty strings in the database (which it shouldn't)


  • Bugfix: don't make firstname required for the cancel form too


  • Bugfix: don't make firstname required when submitting, to preserver backward compatibility


  • Feature: allow 2Checkout sandbox/test/live modes
  • Feature: added Sage Pay payment gateway
  • Feature: attempt to make the map sizes responsive: width and height can be "%" too, for responsiveness: width should be 100%
  • Feature: added conditional booking placeholder #_IS_MULTIBOOKING again, only returns 1 when actually doing a multi-booking, not when updating/deleting a booking
  • Feature: extra info can be requested for a person: #_LASTNAME (= #_NAME), #_FIRSTNAME, #_ADDRESS1, #_ADDRESS2, #_CITY, #_STATE, #_ZIP, #_COUNTRY also the corresponding booking placeholders are there: #_RESPLASTNAME (= #_RESPNAME), #_RESPFIRSTNAME, ...
  • Feature: added placeholders #_EVENTCSVBOOKINGSLINK and #_EVENTCSVBOOKINGSURL
  • Feature: added conditional event placeholders #_IS_AUTHOR, #_IS_CONTACTPERSON and #_IS_AUTHOR_OR_CONTACTPERSON
  • Feature: allow csv/print/column reorder and column hiding in people, pending bookings, reservations
  • Security improvement: the form message could be altered upon booking, so one could be tricked in executing wrongful html code so a check has been added to make sure that the form message is generated by the system, not a malicious person
  • Bugfix: make the location map show again when editing locations
  • Improvement: German language updates, thanks to Joerg Knoerchen
  • Improvement: autocomplete person info (based on name) when adding new registrations in the backend


  • Bugfix: make 2checkout work again
  • Bugfix: fix event scopes today--this_week and today--this_week_plus_one


  • Bugfix: make #_EDITLOCATIONLINK and #_EDITLOCATIONURL actually work ...


  • Feature: added location placeholders #_EDITLOCATIONLINK and #_EDITLOCATIONURL
  • Feature: added generic "eme html header" and "eme html footer" settings, so you can add javascript in there if wanted without needing to change your theme
  • Bugfix: the 'no events message' was not always being shown
  • Bugfix: fix the double headers-options in EME settings (tab 'Other')
  • Bugfix: datapicker was not being added in the front end (for the monthly filter)
  • Bugfix: load google js via https when needed
  • Improvement: the smtp port setting should not be shown if smtp is not used for sending mails


  • Feature: added the possibility to add a Bcc address to all outgoing mails
  • Bugfix: Mollie form was not being displayed


  • Feature: implement a second extra charge option for payment providers (so you can use a percentage and a fixed amount together)
  • Feature: add Mollie payment gateway
  • Feature: add event placeholder #_MYLOCATIONATT{xx} (see doc)
  • Feature: per payment gateway, you can now customize the button label and the text above/below the button. You can use #_EXTRACHARGE and #_CURRENCY as placeholders, multilanguage ready too. Also, the button can be an image if wanted.
  • Improvement: prevent double click on form submit
  • Improvement: German language updates, thanks to Joerg Knoerchen
  • Bugfix: the setting "Default location list format footer" was overwriting the format header, not footer
  • Bugfix: small template fix when listing the bookings per person
  • Bugfix: eme_mybookings was only replacing 'event' level placeholders once for all bookings
  • Removed old Google Checkout


  • Bugfix: make client clock checking work again for the calendar
  • Improvement: optimize the inclusion of javascript files the way wordpress likes it most


  • Bugfix: another function rename that came back to haunt me is fixed


  • Bugfix: make #_BOOKINGS work again (typo fix)


  • Feature: added shortcode eme_mybookings with as optional arguments a template_id for header, content and footer, and an option to show future or all bookings [eme_mybookings template_id=3 template_id_header=7 template_id_footer=9 future=0] [eme_mybookings template_id=3 future=1] Will show all bookings for the logged in user, based on the layout given by the templates or by the generic booking list format Also added booking placeholders #_CANCEL_LINK and #_CANCEL_URL, so you can create a link to cancel 1 specific booking too (for future events only) Also: the list of future bookings made is now in the user's profile, with an cancel link
  • Feature: you can now also change the text above/below the payment buttons for a multi-booking form
  • Feature: added filters eme_eval_booking_form_post_filter and eme_eval_multibooking_form_post_filter, which happen just after the POST of the booking form (1 arg: $event for eme_eval_booking_form_post_filter, or $events of eme_eval_multibooking_form_post_filter; containing the event(s) details that are being booked for). The filter eme_eval_booking_form_post_filter differs from eme_eval_booking_form_filter in this sense that this filter happens immediately after the POST, while eme_eval_booking_form_filter happens after the booker has been created already (which is a bit stupid).
  • Feature: added option no_events_message to the shortcode eme_events, so you can adjust the text when there're no events per shortcode usage if wanted
  • Feature: the CSV separator can now be changed in the 'Other' section of the EME settings
  • Bugfix: sometimes when multiple maps were shown (and dependant on the OS used), even multiple calls to microtime() return the same value so as a result some javascript variables had the same name and thus the maps might show the same address This is now fixed by adding a rand() call to the variable names
  • Bugfix: required formfields that were defined as dropdown were not allowed to post "0" as a return value for required fields
  • Bugfix: fix some firstdata issues, thanks to ecoyork
  • Bugfix: when creating recurrent events, the last day was not taken into account
  • Bugfix: show correct number of days in months in the calendar
  • Change: renamed function eme_event_category_url to eme_category_url
  • Change: removed #_IS_MULTIBOOKING placeholder, was not working correctly
  • Improvement: when using custom fields in a form, FIELD{03} and FIELD{3} (thus leading zero's) are now supported. This was already working ok for storing the values, but not for checking the required field values
  • Improvement: when clicking on a calendar day in the small calendar and there's only one event where the external url is set, we now redirect to that url
  • Improvement: #_PHONE and #_COMMENT can now also be used in header/footer parts in a multibooking form
  • Improvement: German language updates, thanks to Joerg Knoerchen
  • Improvement: Dutch language updates, thanks to Herman Boswijk


  • Feature: rsvp end date/time restriction can now be negative, so you can say "Allow RSVP until -2 days -1 hours before the event starts, indicating the rsvp can go on for 2 days and 1 hour AFTER the event has started. The rsvp end can never go beyond the event end date itself of course.
  • Feature: new scope for events: 'ongoing': only shows ongoing events, for this we try to use the date and time, but it might be incorrect since there's no user timezone info
  • Feature: basic support for qtranslate-X (not fully functional yet, awaiting reply from the qtranslate-x authors)
  • Feature: added placeholders #_APPROVEDSPACES and #_APPROVEDSPACES{xx} (see the doc)
  • Feature: added option eme_register_empty_seats to the shortcode eme_add_multibooking_form: by default it is 0, but if you want to register 0-seats too, set this to 1
  • Feature: an event can now also be designated to take attendances only for bookings, a corresponding conditional tag #_IS_ATTENDANCE has been created as well so you can change messages shown or emails sent
  • Bugfix: the required fields were not being checked in the backend, so browsers not supporting the html5-required tag could input empty custom field info
  • Bugfix: take booking price=0 into account for events that still have a payment gateway configured
  • Bugfix: make simple event paging work again
  • Improvement: German language updates, thanks to Joerg Knoerchen


  • Feature: added action eme_delete_recurrence_action
  • Feature: allow custom fields also in the header/footer for multi-booking format templates, but use with care: will only work correctly for 'identical' events (events with the same custom fields)
  • Feature: support polylang, but only if the setting 'The language is set from content' is choosen
  • Feature: added filter eme_events_format_prefilter, a initial filter for the events format, in case people want to change anything before the placeholders get replaced. Has 2 arguments: $format and $event
  • Feature: added placeholder #_LOCALE, returning the currently chosen locale. Can be used in multilanguage setups, so you can change content of anything inside an event, location or form based on the locale active at that time (if no language tags are provided by the language plugin you're using)
  • Improvement: support custom translations files in wp-content/languages/ (WP_LANG_DIR setting), so changed translation files are not overwritten when updating EME
  • Bugfix: #_RSVPEND was incorrect
  • Bugfix: if the period was "daily" in the list widget and 2 events were on the same day but a different month, the new month info wasn't shown, making it look as the second event happened in the same month as the first
  • Bugfix: translation url fixes
  • Bugfix: recurrence defined as "start day" was not working ok
  • Code change: small code change to make multi-bookings more wordpress 404-proof


  • Bugfix: #_RSVPEND was incorrect


  • Improvement: each category now also has a SEO slug (albeit not editable yet)
  • Incompatibility: the function eme_event_category_url now takes the whole category array as argument (as for events and locations)
  • Incompatibility: the function eme_get_event_categories now returns an assoc array of categories, the old behaviour is renamed to a new function eme_get_event_category_names
  • Bugfix: make sure the booking cancel form work again


  • Improvement: allow username/email to be changed when doing a new registration via the backend and WP membership is required for an event
  • Bugfix: the new filters eme_rsvp_email_body_text_filter and eme_rsvp_email_body_html_filter were not taken into account (missing underscore)
  • Bugfix: the end date/time placeholder #@[a-z] were being replaced correctly, but the '@' remained too


  • Bugfix: make sure initial date for new events and recurrences is the current date, not 1970 ...


  • Bugfix: for events with no defined contact person, I tried to get the admin email but used a multisite function for it (which doesn't seem to be defined if you don't activate multisite)
  • Bugfix: fix sending of mail for normal registrations (typo fixes)


  • Bugfix: use php 5.3 notation for arrays, not everybody uses php 5.4 ...


  • Bugfix: not all mails were being sent out correctly


  • Feature: support qtranslate plus, next to qtranslate and mqtranslate
  • Feature: added new filters eme_rsvp_email_body_text_filter and eme_rsvp_email_body_html_filter to be able to change the mail body just before it is sent
  • Incompatibility: removed the per-user date format settings, was getting too confusing for coding up different formats for backend and frontend date formatting, while the generic WP settings should be used anyway
  • Incompatibility: renamed eme_email_filter to eme_email_obfuscate_filter
  • Improvement: try to use admin info when no other contact info is present for an event (can happen after using the frontent submit form)
  • Bugfix: better use of function strtotime to take Daylight Saving Time into account (not all days have 24 hours)
  • Bugfix: there's a bug for the cancel-mails and placeholders due to the fact that I first delete the booking before sending the mail (otherwise the number of free seats in the mail can be wrong), but because of that the placeholders can't be replaced anymore since the booking no longer exists. This has been fixed by getting the booking info before doing anything and handing that info to the function that does the mail sending (and not letting that function get the booking info anymore, since it might already been deleted)


  • Bugfix: the unique nbr for bookings only got generated when online payment was being selected too, now it gets generated if the total booking price >0


  • Feature: added 2 new scopes: relative-Xd--YYYY-MM-DD (end YYYY-MM-DD, start X days before that) and YYYY-MM-DD--relative+Xd (start YYYY-MM-DD, end X days past that)
  • Feature: added monthly range select in filter form: use #_FILTER_MONTHRANGE in the filter format and fields=monthrange in the eme_filterform shortcode
  • Feature: the shortcode eme_add_multibooking_form now also supports category_id as a parameter, to select all events for a single category
  • Doc: documented the template_id option for the shortcode eme_filterform, as the template is preferred before the fields option
  • Bugfix: first day of week in the datepicker is a integer, not a string. Putting a string created mangled day headers in the datepicker.


  • Feature: first day of week is now also respected in the datepicker


  • Feature: added 2 new filters to influence CSV output: eme_csv_header_filter and eme_csv_footer_filter Both take 1 parameter ($event) and should return an array (representing columns in the csv output in the header or footer) Can be used to add extra info at the top or bottom of the CSV output
  • Feature: new event placeholder #_RECURRENCE_NBR, returns the sequence number of an event in a recurrence series (first event is 1, second is 2, etc ...) Also added conditional tags #_IS_FIRST_RECURRENCE and #_IS_LAST_RECURRENCE
  • Feature: the RSVP cut-off date/time can now also be done based on the end-date of the event, not just the start-date
  • Feature: add a generic option to disable server-side required field checks when submitting a RSVP form
  • Improvement: renamed #_RECURRENCEDESC to #_RECURRENCE_DESC for conformity (the old one is still possible)
  • Bugfix: the unique number for payments should be calculated based on the payment ID, not the booking ID anymore.
  • Bugfix: small html correction in EME admin interface, tab Payments
  • Bugfix: fix some 'notcategory' behaviour for the eme_events shortcode
  • Bugfix: the optional choosen template got lost when switching months in the full calendar
  • Bugfix: the mail for cancellation was sent before the cancellation was done, resulting in wrong number of spaces free/reserved in the cancellation mail
  • Bugfix: better 24h-timeformat notation detection
  • Bugfix: better value escaping with ESC when using conditional tags
  • Bugfix: use correct headers when sending html-mail via wp_mail function


  • Bugfix: featured image for locations wasn't working anymore
  • Bugfix: show the map when editing an existing event with a known location
  • Bugfix: fix a JS error when looking at the list of events


  • Bugfix: account for the fact that a WP setting might be never changed, and thus just be empty in case of booleans


  • Feature: new hook eme_ipn_action (1 parameter: $booking), executed after successfull IPN Hint: get the event from the booking id by using this: $event = eme_get_event_by_booking_id($booking['booking_id']);
  • Feature: added placeholders #_PENDINGSPACES and #_PENDINGSPACES{xx} (see the doc)
  • Improvement: added conditional shortcodes eme_if7 till eme_if15 (some people really want these ...)
  • Bugfix: #_PAYMENT_URL was no longer replaced correctly
  • Bugfix: First Data payment button was not being generated correctly


  • Bugfix: multiple categories in widgets still contained an error, tested ok now


  • Bugfix: multiple categories in widgets wasn't working
  • Bugfix: removing a location wasn't working


  • Incompatible change: due to some changes in the code, 2 CSS id's changed too: no longer using a container id but using a real css class name: #eme_global_map img becomes .eme_global_map #eme_locations_list becomes .eme_locations_list
  • Feature: added template functionality to the calendar as well (new option template_id to the shortcode eme_calendar, for templating entries in the full calendar)
  • Feature: support tls when sending mail via smtp by prepending 'tls://' to the hostname (typically for port 587)
  • Feature: new placeholders #_HOURS_TILL_START and #_HOURS_TILL_END
  • Feature: new shortcode eme_add_multibooking_form that lets you use either a comma-seperated list of event id’s or a recurrence id for which you want to do multiple bookings in one go. It also has a template id for the header, entry and footer of the form list. More info in the doc.
  • Feature: new rsvp placeholder #_MULTIBOOKING_DETAILS_TEMPLATE{xx} (with xx a template id): parses the template for each booking in a multibooking scenario, all regular booking and event placeholders can be used in the template
  • Feature: new rsvp placeholder #_MULTIBOOKING_TOTALPRICE (the total price of all bookings in a multibooking scenario)
  • Feature: new rsvp placeholder #_MULTIBOOKING_SEATS (the total seats of all bookings in a multibooking scenario)
  • Feature: new rsvp placeholder #_IS_MULTIBOOKING (conditional tag you can use in rsvp mails)
  • Feature: new event placeholder #_EVENTATT, taking 2 arguments: eventid and attribute key. This allows to get the non-default value for an attribute from another event. E.g, for eventid 3 and attribute "my_att": #_EVENTATT{3}{my_att}
  • Feature: added the possibility to define an extra charge when paying via a payment provider. Also added an extra rsvp placeholder so you can show the extra cost being added per payment provider: #_CHARGE{google}, #_CHARGE{fdgg}, #_CHARGE{2co}, #_CHARGE{paypal}, #_CHARGE{webmoney}
  • Feature: now more than one global map can be shown on the same page
  • Feature: added event placeholders #_STARTDATE, #_STARTTIME, #_ENDDATE and #_ENDTIME, resulting in a easy way to get the start/end date and time for the event in the current WP settings format, without needed to use the other possible date/time placeholders
  • Feature: 2 new event scopes: ++YYYY-MM-DD (all events starting later than YYYY-MM-DD) and --YYYY-MM-DD (all events ending before YYYY-MM-DD)
  • Feature: mail subjects for the contact person can now also be changed in the settings
  • Feature: you can now select multiple categories in the widget. Multiple selected categories will be OR'd together (see the events placeholder)
  • Feature: added new filter eme_event_preupdate_filter, taking place just before the event is updated in the DB (the update companion of eme_event_preinsert_filter)
  • Feature: added a global option to ignore pending users when using the #_ATTENDEES or #_BOOKINGS placeholders.
  • Feature: you can now also send mails about a new event to all WP users, or to all WP users that did not yet register
  • Improvement: better image selection code for the featured image (since WP doesn't play nice with the 'insert from url', I needed to remove this)
  • Improvement: show the compact bookings table only when not editing a recurrence
  • Bugfix: eme_locations shortcode wasn't showing anything for option eventful=1
  • Bugfix: First Data setting was not being saved when selecting it as payment method for an event
  • Bugfix: added FDGG lib (First Data lib, was missing)
  • Bugfix: take into account lonely CR's when creating the javascript balloon text
  • Bugfix: when updating an event, the end time was not allowed to be equal to the start time
  • Bugfix: corrected contact_person as option for eme_rss_link (and documented it)
  • Bugfix: the shortcode eme_location used the wrong default format (should be the one specified in the settings called "Default single location page format")


  • Feature: added an option to hide past events (on a day-basis, not hour) in the calendar
  • Feature: added an option to hide events (from lists and calendar) which RSVP registration period has already ended
  • Feature: added #_FIELDVALUE{xx} to get the formfield value (can be used in the registration form, in #_BOOKINGS and RSVP mails)
  • Bugfix: using custom fields and/or html when re-sending mails didn't work as expected
  • Improvement: Italian language updates, thanks to Gianluca Granero
  • Improvement: Ukranian language updates, thanks to Michael Yunat (michael.yunat@gmail.com, see also http://www.iphostmonitor.com )
  • Improvement: updated Italian translation, tx to Antonio Venneri


  • Feature: added placeholders #_EVENTPRINTBOOKINGSLINK and #_EVENTPRINTBOOKINGSURL, showing either a link or just the URL to the printable bookings list, if you have the correct permissions
  • Improvement: if people enter field tags for multi-value custom fields, check that the number of tags is the same as the number of values
  • Bugfix: empty custom field tags were not correctly handled
  • Bugfix: make sure the day-hover title in the calendar no longer contains html
  • Bugfix: 24H format placeholders shouldn't return seconds, was never the case but got added in 1.3.0
  • Bugfix: for the detection of required fields for the RSVP form, I didn't take into account the fact that you can now use templates for the form so the required field detection failed


  • Feature: added placeholders #_12HSTARTTIME_NOLEADINGZERO and #_12HENDTIME_NOLEADINGZERO
  • Feature: added filter eme_eval_booking_filter, doing evaluations before the person is entered in the db. One parameter: $event. And $_POST can be used too of course.
  • Feature: added #_BOOKINGPRICEPERSEAT and #_BOOKINGPRICEPERSEAT{xx} rsvp placeholders, to return the end-price per booked seat (either normally or for multiprice for the indicated price category). The filter eme_insert_rsvp_action is taken into account, so the end-price includes anything you do with it (including discounts)
  • Feature: subjects of mails being send to bookers is now also customizable and multi-lang ready
  • Feature: you can now delete "unused" people (people without bookings, can happen if you delete old events)
  • Feature: you can now select a template for mail message and body when sending after-mails, and for many format settings when creating/editing an event
  • Feature: added an option to no longer show the RSVP form after a successful booking
  • Improvement: a little more polite bad-boy message
  • Improvement: renamed an eme option, no big deal
  • Improvement: all RSVP prices are now showing as floating point, with 2 digits behind the "."
  • Bugfix: removing a person and his booking info left orphaned answers, cleaning those now
  • Bugfix: when using the #_PAYMENT_URL in an email, all works ok but a php warning was shown (third variable for a function not initialized). Fixed
  • Bugfix: when deleting 1 template, all were deleted.


  • Bugfix: the filter eme_eval_booking_form_filter was called too early, causing the second argument to be empty
  • Bugfix: the captcha isn't taken into account when adding a booking via admin backend, but it prevented adding a booking then


  • Bugfix: some undef values fixed
  • Bugfix: make the default use the new notation too for captchas (for new installations)
  • Bugfix: the frontend submission plugin has been updated to account for new jquery timeentry plugin too


  • Bugfix: fixed a bug with a undefined var, preventing activation of the plugin for new installations
  • Bugfix: for plugin deletion, the tables were not deleted for multisite blogs


  • Feature: more consistent notation for placeholders, see http://www.e-dynamics.be/wordpress/?p=51559
  • Feature: people page can now do merging of bookings, show all bookings per person and allows person editing
  • Feature: RSS feed now shows html (no maps or forms), as does all other parts of wordpress do
  • Feature: use language selected at booking time for sending mail concerning the booking or the attendee
  • Feature: the cancel registration form can now also be formatted (also per event if wanted)
  • Feature: locations can now also be duplicated
  • Feature: added field tags to form fields, these are shown to the booker and are (m)qtranslate-compatible
  • Bugfix: don't show the captcha when showing the booking form in the admin backend, it was ignored but still it's best not to confuse people
  • Bugfix: if the current day had an event, the calendar didn't show the eventfull class
  • Bugfix: don't match "[...]" for location placeholders, solved more generically by the new placeholders notation feature.
  • Bugfix: show weekday initials only again for small calendar format
  • Bugfix: the wordpress nonce was being outputted too much times. Although the fields are hidden, it's not good to do so.
  • Bugfix: when inserting or updating a booking, the action hook was executed before the answers for extra fields were stored in the db
  • Improvement: the events database now gets updated upon first site visit (admin or not), so no more deactivate/reactivate action needed
  • Improvement: when the events page setting changes, the SEO rules are flushed, so no more deactivate/reactivate action needed
  • Improvement: code dedup for locations page
  • Improvement: show a warning if a custom field requires a value but it was left empty


  • Feature: when doing the "quick" deny for registrations while editing an event, no mails were being sent. There's now a general option in the Mail section that allows you to change that.
  • Bugfix: added a CSS to the datatables when showing events, so the footer div following it is moved when the table grows or shrinks
  • Bugfix: adding shortcodes to event details resulted in bad headers when using the setting "extra html headers" with placeholders like #_EXCERPT, and also gave problems for conditional tags


  • Feature: you can now send html-mails for RSVP messages if wanted
  • Bugfix: make the booking removal work again when in the event edit-window
  • Bugfix: make start of month correct again in new calendar code


  • Bugfix: remove some abiguous placeholder matching and correct the newly introduced image dimensions


  • Improvement: add width and height to thumb images, just in case the resized versions don't exist
  • Bugfix: make #_LOCATIONNAME work again
  • Bugfix: calendar days with a single digit didn't show the events
  • Bugfix: the booking recorded format may contain html, but was being sanitized


  • Feature: add/edit booking is now all possible from the backend, and when editing all custom fields show as well
  • Feature: added template functionality to the filter form as well (new option template_id to the shortcode eme_filterform)
  • Feature: added option 'show_recurrent_events_once' to the shortcode eme_events to show recurrent events only once. Remember that people will only see a normal event unless you add recurrent info to it using the placeholder #_RECURRENCEDESC
  • Feature: added placeholder #_EVENTCATEGORYIDS, returning the different category id's for an event. Not really usefull, unless you use the shortcode [eme_events category=#_EVENTCATEGORYIDS] inside a single event format, resulting in a list of events in the same categories as the one being viewed.
  • Feature: use jquery datatables in the backend for event and bookings, makes it easier to search, sort, ...
  • Improvement: doing a javascript post after a booking add/delete to prevent double actions when refreshing the page, also avoids using global variables
  • Improvement: German language updates, thanks to Wolfgang Löster
  • Improvement: extra antispam measurements
  • Behaviour change: make it possible for start and end date+time to be exactly the same
  • Bugfix: cleanup function shouldn't change recurrences with specific days, since those "end date" is 0
  • Major code rewrite in progress


  • Feature: added the possibility to define a return page for payment succes or failure, with event and/or booking placeholders
  • Feature: added placeholder #_RSVPEND that will show the date+time end of the registration period
  • Feature: added conditional placeholder #_IS_RSVP_ENDED, returns 1 if the registration period has passed
  • Feature: retain all filled in values if RSVP form validation proved wrong
  • Improvement: show an admin warning if the special events page is not ok
  • Improvement: German and Italian language updates, thanks to Stephan Oberarzbacher
  • Bugfix: make location attributes actually work
  • Bugfix: also deal with RESPNAME, RESPEMAIL, ... in the registration form format
  • Bugfix: the payment page was not shown for the placeholder #_ADDBOOKINGFORM_IF_NOT_REGISTERED after booking was done
  • Bugfix: fix double inclusion of eme_settings.php in uninstall.php, so uninstall works now


  • Feature: added new filter eme_categories_filter, executed when searching for the categories (e.g. when creating an event). With this, you can e.g. limit the categories shown when creating an event or location or ... . Has one parameter: array of categories.
  • Bugfix: make rsvp form work again (copy/paste error fix)


  • Bugfix: let shortcodes in booking and attendees lists be replaced at the end, so conditionals can be used there as well.


  • Feature: added width/height as optional parameters to shortcode eme_location_map
  • Feature: added radiobox, 'radiobox vertical', 'checkbox' and 'checkbox vertical' as new formfield types
  • Feature: added attributes for locations as well, and all templates are also searched for attribute definitions
  • Feature: event notes can now contain all event placeholders as well, when activating the new option called 'Enable placeholders in event notes'. This changes old behavior, so by default it is disabled
  • Improvement: make IS_REGISTERED work for all logged in users, not just when requiring WP membership for rsvp
  • Bugfix: fix layout for location list (the default format setting was being ignored)
  • Bugfix: some template header/footer fixes for attendee and booking lists
  • Bugfix: make [eme_location] work again


  • Feature: the payment form showing the buttons can now be customized in the EME settings, Payment section. The same placeholders as for bookings can be used. You can format the section above and below the payment buttons and everything is surrounded by CSS tags as well.
  • Feature: max and min amount of seats to book for one booking can now also be used for multiprice events (multi-compatible)
  • Feature: added option template_id to shortcode eme_single_event
  • Feature: added shortcode eme_location, with location id as argument, and optional a template_id for content: [eme_location id=1 template_id=3]
  • Feature: added shortcodes eme_bookings and eme_attendees, with event id as argument, and optional a template_id for header, content and footer [eme_attendees id=1 template_id=3 template_id_header=7 template_id_footer=9]
  • Feature: added placeholder #_IS_MULTIDAY. Returns 1 if the event start date is different from the end date, 0 otherwise.
  • Feature: added placeholder #_BOOKINGID for rsvp mails and booking info, in case you want to share the booking id
  • Feature: added new filter eme_add_currencies, so you can add extra currencies to the list. Be aware that not all payment portals support all currencies. Example: to add Ghanaian Cedi (GHS) to the list of currencies, add the following to your theme's functions.php:

    function my_eme_add_currencies($currencies){ $currencies['GHS'] = 'Ghanaian Cedi'; return $currencies; } add_filter('eme_add_currencies','my_eme_add_currencies');

  • Improvement: unified shortcode names:

    events_calendar ==> eme_calendar events_list ==> eme_events display_single_event ==> eme_event events_page ==> eme_events_page events_rss_link ==> eme_rss_link events_ical_link ==> eme_ical_link events_countdown ==> eme_countdown events_filterform ==> eme_filterform events_if ==> eme_if events_if2 ==> eme_if2 events_if3 ==> eme_if3 events_if4 ==> eme_if4 events_if5 ==> eme_if5 events_if6 ==> eme_if6 locations_map ==> eme_locations_map display_single_location ==> eme_location_map events_locations ==> eme_locations events_add_booking_form ==> eme_add_booking_form events_delete_booking_form ==> eme_delete_booking_form

    The old names are still valid, but will disappear from the doc

  • Bugfix: make sure that relative protocol urls (no http: or https:) are used for google api's in the admin backend

  • Bugfix: in the event edit window, the ajax method for removing rsvp's wasn't working anymore
  • Bugfix: some plugins add the lang info to the home_url, remove it so we don't get into trouble or add it twice
  • Bugfix: booking placeholders are also possible for the 'booking ok' message
  • Bugfix: only show location info in the ical feed if there's actually a location
  • Bugfix: ical fix for multiday allday events (they ended a day too soon)
  • Bugfix: use str_replace for replacing placeholders, to avoid issues with replacement strings containing $13 (preg_replace interprets those as backreferences)
  • Bugfix: the booking price is now shown correctly as floating point, not just integer
  • Bugfix: correct the placeholder replacement sequence for attendees and bookings
  • Bugfix: #ESC_NOTES was not working


  • Bugfix: prevent double header/footer appearance in event lists


  • Bugfix: prevent double header/footer appearance in event lists


  • Fixed a small bug I introduced in 1.2.1 + better detection for sending mail for auto-approval


  • Feature: added conditional tags #_IS_MULTISEAT and #_IS_ALLDAY
  • Feature: add template_id_header and template_id_footer for events_list and events_locations shortcodes, so you can also use templates for the headers and footers
  • Improvement: make #_IS_REGISTERED also work even when the option "Require WP membership for registration" is not checked, of course you still need to be logged in as a WP user for it to work.
  • Bugfix: the template format field was too small in the database, limiting the number of characters
  • Bugfix: booking list should show a single number for booked seats for multiseat events when asked for
  • Bugfix: send approval mail also for auto-approve events upon payment
  • Bugfix: events_locations shortcode no longer listed all locations (typo in 1.2.0 caused this)


  • Feature: multi-seat events are now possible: the same as multiprice events, but now you can limit the number of seats per price category if wanted
  • Feature: format templates can now be created and used in the events_list and events_locations shortcodes as follows: [events_list template_id=3] This renders the use of the 'format' parameter obsolete and is more powerfull as it allows conditional tags inside the format template.
  • Feature: recurrence is now also possible on specific days, not just a pattern
  • Feature: maptype for google maps can be defined in the settings for global and individual maps (Roadmap, Satellite, Hybrid or Terrain)
  • Feature: added event placeholders #_TOTALSEATSxx, #_AVAILABLESEATSxx and #_BOOKEDSEATSxx to show seat info per seat category
  • Improvement: remove some unneeded caching in the EME admin section.
  • Improvement: Dutch language update, thanks to Guido
  • Improvement: show which required fields are missing when filling out a rsvp form
  • Bugfix: better all-day indication in ical
  • Bugfix: make #_TOTALPRICE and #_TOTALPRICExx also work for "Booking mails" reminders
  • Bugfix: jump to RSVP confirmation message upon successfull registration
  • Bugfix: better matching rules for #_CATEGORIES with include/exclude categories
  • Bugfix: all day event fix


  • Improvement: #_MAP and #_DIRECTIONS for an event are only replaced/shown if the event is linked to a location
  • Bugfix: forgot to escape the forward slash, so some placeholders might have resulted in errors


  • Bugfix: better regex replacement for replacing placeholders


  • Feature: added 'First Data Global Gateway Connect 2.0' payment gateway implementation
  • Feature: new option: consider pending registrations as available seats for new bookings (meaning: ignore pending registrations for new rsvp's)
  • Feature: implemented feature request "Automatic Approval after Payment is received", optional per event
  • Feature: all day events can now be indicated as such
  • Feature: placeholder #_TOTALPRICEx added for mail formats (with x being a number: gives the total price to pay per price for multiprice events: the amount of spaces booked times the specific price of the multiprice event)
  • Feature: added a facebook import function when creating a new event. Thanks to Tom Chubb and Jashwant Singh Chaudhary.
  • Feature: some themes result in weird behaviour because they use the_content filters, resulting in loops or unwanted content replacement. Added a setting against possible loop protection.
  • Feature: RSS pubdate can now also be the event start time
  • Feature: separate format for ICAL entries
  • Feature: zoom factor can be changed for the global or individual maps
  • Feature: added new filter eme_event_preinsert_filter, taking place just before the event is inserted in the DB
  • Feature: added 2 placeholder options to #_CATEGORIES and #_LINKEDCATEGORIES to include/exclude categories. To be used like this: #_CATEGORIES[1,3][] ==> this will get all categories for the event, but only show cat 1 or 3 #_CATEGORIES[][1,3] ==> this will get all categories for the event, but not show cat 1 or 3
  • Feature: added option to define image size for placeholders #_EVENTIMAGETHUMB and #_EVENTIMAGETHUMBURL, to be used as: #_EVENTIMAGETHUMB[MyCustomSize] or #_EVENTIMAGETHUMBURL[MyCustomSize], where "MyCustomSize" is a custom size either known to wordpress or defined in your functions.php via the function add_image_size()
  • Feature: the events_if shortcode now also supports "le" (lower than or equal to) and "ge" (greater than or equal to) comparisons
  • Feature: new filter eme_eval_booking_form_filter, so you can create your own eval rules for a booking
  • Feature: make #_SPACESxx also work in RSVP info, next to #_RESPSPACES
  • Feature: new hook eme_update_rsvp_action, executed when updating booking info
  • Bugfix: correct escaping of characters for ical format
  • Bugfix: better regex replacement for replacing placeholders
  • Bugfix: make sure URL's created by placeholders aren't touched by wordpress anymore
  • Bugfix: when specifying a location by latitude and longitude, town and address are not needed
  • Bugfix: fix a JS error on some admin pages
  • Bugfix: the multiprice array was not correctly initialized, causing troubles if you used #_SEATSx form fields that were out of order
  • Improvement: shortcodes [add_booking_form] and [delete_booking_form] now properly return the generated html instead of echoing it, and also return empty if rsvp not active
  • Improvement: events_list header/footer can now also contain shortcodes, usefull for conditional tags. Idem for locations.
  • Improvement: json is limited in size we only return what's needed in the javascript
  • Improvement: booking date/time info is now visible in the backend registration pages
  • Improvement: add image thumb url to the ical feed if present
  • Improvement: the day difference function now returns a negative value as well, the countdown and DAYS_TILL* placeholders can take advantage of this
  • Improvement: use the WP time setting for new/edit events as well when trying to detect 12 or 24 hour notation
  • Code improvement: added event_properties to stop needing to change the event database table all the time. Ideal for new event properties.


  • Feature: added #_HTML5_PHONE and #_HTML5_EMAIL to indicate you want the html5 input type field for phone and/or email So you can use e.g. #_HTML5_PHONE or #REQ_HTML5_PHONE and the result will be: the html5 tel-type field for phone, and required if #REQ used. Other html5 input types will be added.
  • Feature: events_if4, events_if5 and events_if6 added
  • Feature: support wp_mail as a method of sending mail, allowing other plugins to work on the mail as well via the existing wp_mail hooks and filters
  • Feature: added placeholder #_LINKEDCATEGORIES: creates a link per category for the corresponding event, linking to a list of future events for that category
  • Feature: new option 'title' for the shortcode events_rss_link, so the title can be given a specific name
  • Feature: you can now exclude categories in the widget list and calendar as well, and in the regular shortcode events_calendar also with the new option 'notcategory'
  • Feature: events_ical_link shortcode now also supports the options scope (default: future), author, contact_person and notcategory
  • Feature: added placeholder #_EVENTIMAGETHUMB, to show a thumbnail of a featured image, so you can e.g. show a thumbnail of a featured image instead of the whole image. The size can be choosen in the EME se

Requires: 4.0 or higher
Compatible up to: 4.4.2
Last Updated: 1 week ago
Active Installs: 10,000+


4.5 out of 5 stars


35 of 37 support threads in the last two months have been marked resolved.

Got something to say? Need help?


Not enough data

0 people say it works.
0 people say it's broken.

100,3,3 67,3,2
100,3,3 75,4,3
50,2,1 80,5,4 100,1,1 100,1,1 100,1,1
100,1,1 100,2,2 100,1,1 100,1,1 100,1,1 0,1,0 100,1,1 100,1,1 100,1,1 100,1,1 100,2,2 100,1,1
33,3,1 100,2,2 100,1,1 100,2,2 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 0,1,0 100,2,2 100,3,3 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,2,2
0,1,0 100,1,1
100,1,1 67,3,2 100,1,1 100,1,1
100,1,1 100,1,1 50,2,1 0,1,0 50,2,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,2,2 100,1,1
100,1,1 100,1,1 100,1,1