Messages System: How to add custom message shortcodes

The messages system provides multiple shortcodes used to output various data for each object available to it. However sometimes you may want some details which we do not have a shortcode for or maybe a specific shortcode’s default behaviour is not suitable for your event/registration and you need a custom shortcode with it’s own functionality.

Shortcodes for each data type are stored within their own individual class which we call a library, for example, the EE_Datetime_Shortcodes library stores all of the shortcodes related to EE_Datetimes within the system. When a shortcode is found within the content of the message being generated a ‘parser’ function is called to process that shortcode with whatever functionality is needed.

So in order to add a custom shortcode we first need to add said shortcode to the list of ‘valid’ shortcodes and then hook into the parser to add our own function for that shortcode.

Adding a valid custom shortcode

To add any shortcode to the system we first need to determine the type of shortcode it needs to be and then hook into the correct library to add the shortcode to.

If we continue using the EE_Datetime example, we’ll look into adding a shortcode that outputs the Datetime ID as its not currently available within the system and is one of the simplest libraries to start on. The method used to add a shortcode is the same for all of the different shortcode libraries although the way in which we parse the shortcode and pull the data needed may change depending on the shortcode type.

First we need to determine the shortcode type, to do that we need to know the object it relates to, we mentioned the Datetime ID above so this shortcode obviously relates to a Datetime and that helps us identify the library we add it to. For example, if we know the shortcode is for an EE_Datetime it is unlikely we add that to say an EE_Event_Shortcodes library as even though an EE_Event has a relationship to an EE_Datetime, an Event could have many datetimes so a shortcode such as [DATETIME_ID] would not know which of those datetimes related to the event it should use if it was an Event based shortcode. We would simple know we wanted ‘a’ datetime for the event passed to the parser, which is a little too vague for most use cases.

There are a couple of ways to determine the type of shortcode you need, in this case we already know that this shortcode is related to a Datetime so we can check the available shortcode libraries within core and see if any of those appear to be close to what we need. The core shortcode libraries are listed HERE and we can see there are 2 libraries that relate to datetimes in some way, EE_Datetime_List_Shortcodes.lib.php and EE_Datetime_Shortcodes.lib.php.

List shortcodes

The _List_ shortcodes are basically used to add a shortcode to pull in the ‘List’ sections of the templates (‘Datetime List’, ‘Ticket List’, ‘Event List’ etc), those sections loop over all of the objects related to that section, parsing the shortcodes for each individual object as it does. Say we have an Event with 4 Datetimes, the ‘Datetime List’ section loops over all 4 datetimes and parses whatever is in that section for each individual datetime. If we open up a message template this is a little easier to see:

Event Espresso -> Messages -> Default Message Templates -> Registration Approved -> Edit Registrant

Note the various ‘List’ sections shown there:

Message templates list sections

Whilst each of those sections relates to an object type (Datetime List relates to Datetimes) it is basically just a loop and shortcodes for that section relate to the loop itself rather than the object within that loop. This means the _List_ libraries are unlikely to be what we are looking for when adding a shortcode for a specific object.

Object shortcodes

With List shortcodes out of the equation, that leaves us with EE_Datetime_Shortcodes.lib.php and if we open that file the label and description fields (see an example) show us this is a library used to hold shortcodes specific to datetimes, meaning this is likely the library we need. Take note that EE_Datetime_Shortcodes extends EE_Shortcodes, as do all of the shortcode libraries, this means they are all children of EE_Shortcodes and this is important a little later on.

 

Identify shortcode type using the default shortcodes

Another option to find the library is to look in a message template that pulls details related to what we are looking for and search the Event Espresso code-base for that shortcode to find its library. For example we want a Datetime ID so if we find something that calls a field related to a datetime, say the ‘Datetime Start’ (which would be the [DATETIME_START] shortcode) it is likely going to be from the same library we need.

Inside the Registration Approved message template we opened earlier, we can look for similar shortcodes or a related section, we know from the above that the ‘Datetime List’ section is for looping over datetimes on an event so we can look to see what shortcodes are available in that section:

Searching for any of those shortcodes in our text editor with Event Espresso loaded shows the shortcode is in use in a few different files:

The first is within EE_Line_Item.class.php, which is a partial match and it is a function, not a shortcode, so that’s unrelated. The next 3 are shortcodes, but they are all within .template.php files so would point to locations that the shortcode is used (those are the template files used to create the message templates), again no use in this case, then finally we find the EE_Datetime_Shortcodes.lib.php location, that’s a shortcode library which would appear to be exactly what we need.

Adding a valid shortcode and ‘parser’

So now we know we want to add a shortcode to the EE_Datetime_Shortcodes library, our next step is to hook into that library and add it as a valid shortcode, EE provides filters to do exactly that. We mentioned earlier that the shortcode libraries are all children of EE_Shortcodes and the reason that is important is the EE_Shortcodes class provides the filter to add and parse your own shortcodes within the system:

The FHEE__EE_Shortcodes__shortcodes filter allows you to hook in an add custom shortcodes to the libraries.

Then FHEE__EE_Shortcodes__parser_after allows you to hook in and parse (process) the shortcode we added.

This will make more sense once we have an example to work through.

Add a valid shortcode

This is how we can add a shortcode to the EE_Datetime_Shortcodes library.

To break this down, we hook into FHEE__EE_Shortcodes__shortcodes with our own callback function called ee_register_new_custom_messages_shortcodes. The filter passes 2 variables to the function:

$shortcodes is an array of valid shortcodes for that shortcode library
$lib is the current shortcode library being processed.

As we want to add our shortcode to the EE_Datetime_Shortcodes library we check if $lib is an instance of that library on line 9, if it is we can add our shortcode(s) for that library to the $shortcodes array. This is an associative array with the key being the shortcode you want to add and the value being a description of the shortcode used in the help section.

We then return the $shortcodes array, which has our custom shortcode added to it for EE to use.

So at this point, we have added a new shortcode to the system and it will show as a shortcode wherever the EE_Datetime_Shortcode library is called in the templates. If you open up the Registration Approved message template again (refresh it if you already have it open) and look in the ‘Datetime List’ section, clicking the icon to the right lists all of the valid shortcodes for that section, the [DATETIME_ID] shortcode will now show there.

Add a ‘parser’ (the shortcode function)

Next we need to tell EE what to do when it finds our shortcode as right now although we have added a valid shortcode we don’t hook in the ‘parser’ to add our functionality for that shortcode, so it does nothing. To add our own parser we use the FHEE__EE_Shortcodes__parser_after filter:

Here we hook into FHEE__EE_Shortcodes__parser_after with our ee_register_new_custom_messages_shortcodes_parser function. This filter passes multiple variables so let’s break each of those down:

$parsed is the content to be returned through the parser, usually, you will return a value for your shortcode or you return $parsed back to EE for it to continue on if it isn’t your shortcode being filtered.
$shortcode is the current shortcode that is being parsed, you check if this matches the shortcode your parser is intended for and then return a value for that shortcode if it is.
$data is the current data you have available, this can be various different object types depending on the library being parsed and the message type used.
$extra_data is a collection of data the message system has, again this differs depending on the message type.
$lib is the current shortcode library we are parsing, this allows you to only check for related shortcodes within specific libraries.

The first step we take is to confirm we are parsing a library that we have added a custom shortcode to, in our case we check if $lib is an instance of EE_Datetime_Shortcodes as that is the library our shortcode was added to earlier. We then check if $data is an instance of an EE_Datetime, if its not we don’t have an object we can use to return the ID from (we can’t return the ID of a Datetime, if we don’t have a Datetime) so we skip our functionality and return $parsed.

Once we know we are in the correct library and have the correct data for our shortcode, we can check we are parsing the shortcode we added earlier and we do this by checking if $shortcode matches our custom shortcode.

If it does, then we know we are parsing our shortcode and that $data is am EE_Datetime, so we return $data->ID(); for our shortcode as that will be the Datetime ID.

Finally, if none of the above applies we return $parsed back to EE for it continue processing, we are not processing one of our shortcodes or we don’t have the required data so just return what we were given.

Conclusion

Congratulations, you’ve just added your own valid shortcode (and parser) to the EE messages system.

You now have a valid [DATETIME_ID] shortcode you can use in any location where the EE_Datetime_Shortcodes library is used, mainly the ‘Datetime List’ section. This is a simple example but you can add almost any shortcode type to the message system using this method, as long as you can find the shortcode library and find the data you need from what has been passed to the parse (which you can, in most cases).

Next steps

Above we have 2 functions that add a custom shortcode into the messages system and parse that shortcode, however, the Datetime library is always passed an EE_Datetime object so we always know what data we have, that isn’t the case for all parsers so what do we do if we don’t have the correct data type? Let’s break that down a little more with this example:

In this example we add multiple different shortcode types within a single function, again we check that we add the correct shortcode to the correct library:
Datetime related shortcodes to EE_Datetime_Shortcodes,
Event related shortcodes to EE_Event_Shortcodes,
Recipient/Attendee related shortcodes to EE_Recipient_Details_Shortcodes

We’ve seen most of this before, the above just combines adding multiple different shortcode types into a single function and then multiple parsers into a single callback function, it still checks for the correct library and correct shortcode for each case but for some message types, it jumps through some hoops to make sure we can pull the related object.

The EE_Datetime_Shortcode example we discussed above, is exactly the same and has the EE_Datetime passed to it.

For the EE_Event_Shortcodes section we check if $data is an instance of an EE_Event and if not start looking for an EE_Messages_Addressee object, checking if $data or $extra_data is that object type, pulling the registration object from it and then the event from the registration object. You can see how all of the data relates to each in this case and how if we have specific objects, we can pull the objects related to those objects for what we need.

The EE_Messages_Addressee class holds all of the data the message system has on the current recipient, in short the messages system pulls all of the data if can, adds it to the EE_Messages_Addressee object and then uses that throughout the messages system, if you have that object, you can usually pull any object you need (if it doesn’t have it already).

One option you have when working out how to pull the data you need, is to check the default shortcode library for the type you are using and see what that does to pull the data in, for example, within the EE_Recipient_Details_Shortcode library you can see we used the exact same method to pull the Attendee object our parse above, obviously the example isn’t within a class so references to $this have been removed but functionally it is the same.

Posted in | Comments Off on Messages System: How to add custom message shortcodes

2018 Changelog Archive

December 11, 2018

Event Espresso 4.9.75.p

Updates

  • Avoid conflict with Divi Front-end editor
  • Don’t use expectException, instead use setExceptionExpected shim (fixes unit tests)
  • Fix bug that erroneously required a password to view archived tickets in REST API

December 3, 2018

Event Espresso 4.9.74.p

Updates

  • Update the minimum WordPress version requirement in the readme.txt
  • Move PHP docs for $query_params on EEM_Base::get_all() to documentation
  • Attendee Block: Use default_avatar option instead of hardcoding in “Mystery Man”

November 23, 2018

Event Espresso 4.9.73.p

Updates

  • Add shim for get_user_locale()
  • Fix potential for PHP fatal in PHP7.2+ servers

November 21, 2018

Event Espresso 4.9.72.p

Updates

  • Fix incorrect dependency on wp-api-request in asset registration
  • Simplify REST API passing in arrays

November 20, 2018

Event Espresso 4.9.71.p

Fixes

  • Cast translated strings to strings before using as array keys
  • Fix non-working production build of javascript
  • Don’t show archive controls panel when editing pages
  • Fix bug with template pack switching
  • Fix datetime filter radio input values
  • Add fail safe for loading of the network core config

November 20, 2018

EE4 Attendee Mover 1.0.4.p
Fixes:

  • Fix legend item appearing on admin pages other than the registrations page

November 20, 2018

EE4 Promotions 1.0.13.p
Fixes:

  • Update Promotions DMS table schemas to match formatting used in core
  • Update usage of deprecated filter FHEE__EE_Export__report_registrations__reg_csv_array
  • Send promotion name along with a “discount” label to gateways

November 20, 2018

EE4 Multi Event Registration 2.0.16.p
Fixes:

  • Fix JavaScript to allow compatibility with older versions of Internet Explorer

November 7, 2018

EE4 Multi Event Registration 2.0.15.p
Fixes:

  • Fix CSS margins for cart page
  • Add listener to allow exiting cart modal using the Escape key
  • Fix current ticket count that’s displayed at the top of the cart modal
  • Clear ticket selections from Ticket Selector after adding them to the cart

November 7, 2018

EE4 WP User Integration 2.0.16.p
Fixes:

  • Use PHP function `is_readable` instead of method from EE filesystem class
  • Fix status label colors on “My Events” shortcode output

November 6, 2018

Event Espresso 4.9.70.p

Enhancements

  • Populate States/Provinces for the “Your Organization” tab Country input
  • Add link to incomplete view in Transactions admin list table
  • Remove link to the “Failed Transactions” in Transactions admin list table
  • Filter Transaction list table query parameters and allow for dynamic views
  • Add detection for WP JSON API requests
  • Set light gray text to have WCAG level 2 recommended minimum contrast ratio
  • Remove unused JavaScript assets (and their registration)

Fixes

  • Fix session not saving after clearing notices
  • Restore the ability to change PDF paper size
  • Don’t add version string to asset source when hash name assets are used
  • Fix “Add venues to the Venue Manager” link
  • Fixed fatal error and currency override on Countries settings page
  • Increase default time on normalizing invalid dates
  • Introduce default date coercing

October 16, 2018

Event Espresso 4.9.69.p

Enhancements

  • Change Google map image shortcode to map link shortcode in default email templates
  • Change CSV reports so headers don’t include square brackets with field name
  • Improve venue metabox contents in event editor
  • Improve User Interface for country currency settings
  • Improve registration CSV reporting redirections
  • Add UTF-8 BOM to CSV files generated via batch system
  • Add offers.availability property to event structured data
  • Add Date and Time Filter Max Checked admin option and use to limit checked dates for Datetime Selector
  • Update DOMPDF library to version 0.8.2

Fixes

  • Fix a warning when generating a registration report with no registrations in it
  • Fix the tickets_on_sale() method so it checks all tickets
  • Fix memory timeout for sites with hundreds of tags
  • Fix session exception triggered by error notices
  • Fix warning during registration reports in PHP 7.2

September 25, 2018

Event Espresso 4.9.68.p

Enhancements & Updates

  • Add filter hooks to allow customizing the display of sub line items on the payment options step of Single Page Checkout
  • Improve REST Schema to include missing fields and call field calcualtor classes non-statically
  • Add a filter so the system status page’s content can be modified

Fixes

  • Remove note about filters from the Event Espresso > Template Settings page
  • Fix pue slug in the skeleton new payment method add-on
  • Fix error when editing active plugins with the built-in WordPress code editor
  • Fix Session Start Fatal Errors when known Custom Session Save Handler is in use
  • Fix Fatal Error by using loader instead of direct instantiation of REST controller
  • Fix URL validation
  • Add instanceof checks to avoid fatal errors on transactions page
  • Fix warning during admin registration
  • Fix and update REST API documentation examples
  • Avoid error in Authorize.net AIM gateway when some non-ASCII characters were used
  • Fix HTML encoded character in Alan Islands name being saved to the database
  • Fix the organization settings form so that the license key section is not displayed on subsites

August 21, 2018

Event Espresso 4.9.67.p

Enhancements, Fixes & Updates

  • Enqueue countdown.js only when needed
  • Allow for null gateway log objects when creating payment logs
  • Fix “You need to select a ticket quantity” error so it displays to logged-out users

August 15, 2018

Event Espresso 4.9.66.p

Enhancements & Updates

  • Add support for Indian Rupees currency (INR) to PayPal Espresso and Pro
  • Add BUTTONSOURCE on all PayPal Express API calls.
  • Add foreign keys to REST API responses
  • Add format:money to money field schemas in json-schema
  • Update js build process to use Babel 7
  • Tweak capability checks to allow read-only for registration form answers
  • Account for worse-case CSS word-break scenarios

Fixes

  • Fix a fatal error while using many page builder plugins resulting from template tags only being loaded on the front-end
  • Fix an error when migrating from EE3 from attendee email index being too big
  • Fix venue description on event page so line breaks are shown properly
  • Fix espresso_event_tickets_available() so it echoes out the tickets when default arguments are provided
  • Fix caching loader identifier
  • Fix Authorize.net AIM so payment currency is sent
  • Fix DuplicateCollectionIdentifierException errors when converting old PersistentAdminNotice Fixes
  • Fix error when trying to send messages in full maintenance mode
  • Fix a syntax issue inside EE_Config::register_ee_widget()
  • Namespace site-license-key in requests (to ee-site-license-key) to hopefully fix issue some users see with multiple pue license key requests happening
  • Fix translated event taxonomy slugs so they stay valid
  • Fixes very slow migration from EE3 when there are deleted events
  • Fix event slug sanitization for accents and unicode characters
  • Fix URL validation when URL was for a site denying access to our HTTP client
  • Fix the 1-click upgrade from Decaf so that a prompt to upgrade is displayed when a correct support key is entered
  • Fix a javascript error on admin pages showing both an EE error and persistent notice
  • Fix a bug which prevented sold out events from appearing in unauthenticated REST API results

EE4 Vanco Payment Gateway add-on 1.0.7.p

Enhancement

  • Use OpenSSL module functions in place of mcrypt as it has been deprecated in PHP 7.1+

August 6, 2018

EE4 Infusionsoft add-on 2.2.2.p

Enhancements

  • On free transactions send a payment to Infusionsoft so actions can be triggered. So send a zero dollar payment
  • Add privacy policy

July 31, 2018

EE4 Ticketing 1.0.8.p

Enhancement

  • Automatically fix malformed ticket URLs and improve error message

EE4 Events Calendar 3.2.13.p

Enhancement

  • Check we have an eeCAL object before attempting to use it in calendar scripts

July 17, 2018

Event Espresso 4.9.65.p

Enhancements

  • Add classname to the markup that wraps the Event phone
  • Add CSS to help improve the display of ticket selector on small screens
  • Add CSS bulletproofing to protect registration form from worse-case scenarios

Bug Fixes

  • Fix state and country question types shortcode output
  • Fix REST API documentation links and make REST API BETWEEN operator work as documented
  • Fix privacy erasure so contact phones are also erased
  • Fix fatal error thrown when using WP4.5
  • Fix issue with [ESPRESSO_EVENT_ATTENDEES] shortcode to allow displaying attendees when specifying an archived ticket
  • Fix log calls when using transactions object
  • Force cURL to use TLS1.2 when connecting to PayPal (PayPal Express)
  • Check get_user_locale() exists before attempting to use it (Compatibility fix for WP4.5)
  • Use correct method name for payment method activation
  • Remove phone number from the EE Contact when personal data erase request is fulfilled

July 11, 2018

Auth.net Accept Payment method 1.0.2.p

Enhancements

  • Use transaction object to create payment logs when the payment object is not available
  • Only send the Primary Registrant’s address details to Auth.net if the billing form is set to show in the payment method settings
  • Send the state as a 2 letter abbreviation if the country selected is United States (per Auth.net documentation)
  • Only allow alphanumeric charaters and spaces when sending values to the Auth.net API

June 26, 2018

Event Espresso 4.9.64.p

Enhancements

  • Add project changelog
  • Add hooks to venue address metabox
  • Add filters to EE_Radio_Button_Display_Strategy.strategy.php
  • Expose “routes” information on the eejs global and update packages

Bug Fixes

  • Fix section heading closing tag in content-espresso_events-header.php
  • Fix typo in PayPal Pro
  • Fix EE CPT objects not being added to WP_Post objects during Ajax Requests
  • Fix shortcode and template tag loading during AJAX requests

June 18, 2018

Event Espresso 4.9.63.p

Updates:

  • Filter the order_by array returned by _get_orderby_for_registrations_query()
  • Update Your Organization Settings Page to new form system and UXIP option fixes and improvements
  • Fix duplicate asset registration when do_action('admin_enqueue_scripts') is called multiple times on the same admin page
  • Change condition for offsite payment methods
  • Fix Level 2 maintenance mode causing fatal error from PrivacyPolicy.php
  • Facilitate having checkbox for consenting to site’s privacy policy for GDPR
  • Bug/registry check addons exist before using them
  • Fix Custom Post Type query filters being applied twice
  • Fix bug with lodash in vendor bundle trouncing the _ global used by underscore
  • Always use the ‘pretty’ value for the TXN paid column
  • Remove unimplemented methods from AssetManager(&interface)
  • add type specific getters and… hasers ??
  • Fix JavaScript error on WP > Plugins page: Jed localization error: Error: Domain event_espresso was not found
  • Switch webpack-assets-manifest plugin config to use the assets configuration vs merge
  • Fix Warning: call_user_func_array() expects parameter 1 to be a valid callback, class 'EventEspresso\core\services\request\middleware\RecommendedVersions' does not have a method 'minimum_wp_version_error'
  • Fix issue where assigning event category by slug, which also exists as regular post category, creates duplicates
  • Add option to deactivate payment method logging (helpful for GDPR compliance)
  • Update license validation config
  • Improve internal library export and webpack configuration
  • Add license checker to prevent conflicts with GPLv2 license
  • Update packages and do actual node & npm version check
  • Fix i18n api loading strings twice per handle
  • Fix issue with constants related to EE_Event_Category_Taxonomy

June 12, 2018

Infusionsoft 2.2.1
Bug fix and Enhancement:

  • Set higher limit (1000) for tags

June 11, 2018

Stripe 1.1.3
Bug fixes and Enhancements:

  • Disable the “debug mode” option when connected to Stripe
  • Fix incorrect price displayed in Stripe modal
  • Stripe Connect: Disregard settings even if disconnect malfunctions

May 17, 2018

Event Espresso 4.9.62.p

Bug fixes:

  • Fix Invalid field (count) passed to constructor of EE_Term_Taxonomy
  • Fix issue with constants related to EE_Event_Category_Taxonomy
  • Fix add-on Domain registration
  • Restore missing additional ticket information to the registration information step
  • Fix PHP Warning in EED_Events_Archive_Caff
  • Fix statement not echoing its value
  • Add ReservedInstanceInterface and tag classes that need to operate like a “singleton” then prevent Loader from creating more than one instance
  • Fix issue where canceling a registration in progress will subtract too many tickets from the reserved count
  • Fix phpunit test that fails from being one second off
  • Fix broken boolean indicator for whether the pricing metabox is being loaded for an event being created or not
  • Call perform_sold_out_status_check() from _release_registration_space
  • Convert Exception to EE_Error for sites messing with plugin_dir_url
  • Fix issue where add to calendar (iCAL) does not import into Google Calendar
  • Perform sold out status check on event after releasing registration space

Enhancements:

  • Anonymize registrant IP address for GDPR
  • Erase EE Registration data upon request for GDPR
  • Add EE’s user data to WordPress user data export for GDPR
  • Hook in EE Privacy Policy Content to WP for GDPR
  • Create Privacy Policy Content for GDPR
  • Add Asset Value Objects plus Collection and Manager classes and update Registry to utilize them
  • Add hookpoint for benchmarking
  • Allow disabling form inputs
  • Improve ticket selector’s table markup for better accessibility

Updates to the build system:

  • Remove translation configuration related to eejs-core script
  • Update to Webpack 4 and npm audit fixes
  • Update npm requirement to 6+
  • Fix error in console with exit-modal regarding jed initialization
  • Add phpcs linting to our build process/automated tests
  • Fix phpcs violations with specific rule exclusions on linting rules
  • Implement wp.i18n for localization of JavaScript
  • Change eejs.data api to use wp_add_inline_script instead of wp_localize_script
  • Implement jest JavaScript testing framework
  • Implement WordPress code style standards for JavaScript (via es-lint)

April 12, 2018

Event Espresso 4.9.61.p

Bug fixes and Updates:

  • Implement .eslint configuration and adopt WordPress JavaScript standards for code style
  • Avoid fatal errors when sites use relative URLs
  • Upgrade moment.js
  • Decode site name before passing over to gateway description

April 9, 2018

Event Espresso 4.9.60.p

Remove unneeded source map files

April 9, 2018

Event Espresso 4.9.59.p

Bug fixes:

  • Fix property name generation in EE_Encryption_Test
  • Allow Reg. Approved registrations to pay after event has sold out
  • Fix fatal error: Uncaught Error: Call to a member function lifespan() on null
  • Add backwards compatibility for the Attendee Mover add-on
  • Fix ticket reserved count not resetting if txn isn’t created but ticket quantities selected and reserved
  • Fix overselling issue if Multi Event Registration add-on is activated and multiple registration sessions overlap at a given moment
  • Fix Parse error: syntax error, unexpected 'const' (T_CONST)
  • Add workaround/handling for PHP DateTime bug
  • Fix failing test in Registrations_Admin_Page_Test::test_get_registrations
  • Remove cc email address field from batch template
  • Remove the automatic creation of folders in uploads/espresso on activation
  • Fix ModelDataTranslatorTest::testPrepareConditionsQueryParamsForModels__gmtDatetimes phpunit test
  • Search for usage of deprecated jQuery bind and unbind methods and replace with on or off
  • Correctly dequeue instead of deregistering style in Registrations_Admin_Page
  • Add error proofing to EE_Messages_incoming_data‘s _assemble_data method
  • Fix ee_edit_payments and ee_delete_payments capabilities
  • Fix issue where the from address shows HTML entity if company name includes an apostrophe in Settings → General → Site Title
  • Fix issue where Stripe sends incorrect amounts
  • Fix form submission error messages
  • Fix issue(s) with incorrect tax amount displayed after using Attendee Mover on registration
  • Fix PayPal Express when using http_build_query() and & is used as the default separator on some servers
  • Make Question Group div ID’s unique within the reg form when multiple attendee forms are displayed
  • Fix grammar errors in session timeout errors
  • Fix undefined index notices from Upcoming Events widget when using the Customizer
  • Make admin Add new registration screen responsive/usable for small screens

Enhancements:

  • Upcoming Events Widget – add sort and show only expired options
  • Add additional actions to transaction details page and make it extensible
  • Upgrade jQuery validate
  • Improve form maliability
  • Upgrade qtip2 JS
  • Upgrade jQuery countdown JS
  • Verify PayPal API Credentials (PayPal Express)
  • Ignore form submission normalization strategy
  • Modify get_DateTime_object so that it returns a clone of the DateTime object
  • Add filters to messages system for aiding with jit manipulation of message sending and template field setting
  • Tweak behaviour for max value of screen options in EE Admin List Table
  • Add EventEspresso\core\domain\Domain as a dependency on EventEspresso\core\services\assets\Registry\
  • Ensure RequestStackBuilder still allows Legacy Middleware classes to operate
  • Add LIMIT clause to query in EEM_Line_Item::get_total_line_items_for_carts()
  • Modify EE_Encryption and its encrypt() and decrypt() methods to accept an encryption key and cipher method
  • Add option to use hidden reCAPTCHA to protect ticket selector form
  • Add a user ID to Event Espresso notices when saving to the database
  • Allow addon Database Migration scripts to utilize namespaced addon class
  • Create and share EventEspresso\core\domain\Domain during bootstrap process
  • Add RequestTypeContext and RequestTypeContextChecker classes
  • Add Bot Detection Middleware
  • Convert EE_Detect_File_Editor_Request over to new middleware
  • Update Plugin Update Engine and UXIP to better track EE4 features
  • Add survey to uninstall trigger
  • Improve cache busting of assets
  • Update required PHP version to 5.4

March 27, 2018

EE4 iDeal Mollie Payment Gateway 1.1.5.p
Bug fixes:

  • Fix Mollie using POST rather than GET to direct the user to their payment page

Enhancements:

  • Update Mollie payment method to use new _get_gateway_formatter() methods
  • Add locale setting so admins can choose which locale is used by the Mollie checkout page
  • Add additional log calls to the Mollie payment method

March 21, 2018

EE4 WP User Integration 2.0.15.p
Bug fixes:

  • Fix non-static method EED_WP_Users_SPCO::_can_attach_user_to_attendee() being called statically
  • Fix missing brackets in maybe_restrict_ticket_option_by_cap method
  • Fix duplicate Event Ticket WP User Capabilities not copying to ‘new’ event
  • Fix ajax login method not removing the spinning icon on successful login
  • Fix [ESPRESSO_MY_EVENTS template=simple_list_table] loading the wrong template when using pagination

Enhancements:

  • Wait List: Auto pre-fill wait list name and email fields if logged in
  • Extract ticket cap check logic from EED_WP_Users_Ticket_Selector and move into new public method
  • Update `[ESPRESSO_MY_EVENTS]` shortcode to use the new shortcode system in EE core
  • Add color for Waitlist items to the legend for the ESPRESSO_MY_EVENTS
  • Add hover text to action icons on My Events page
  • Hook into Wait List logic to monitor and adjust for processes that require login or other user specific controls

March 5, 2018

Event Espresso 4.9.58.p

Bug fixes:

  • Fix icon for column header having no representation in the screen option column toggle labels
  • Fix Icons/labels missing from events overview
  • Fix column methods in Event List Table echoing instead of returning values
  • Fix ModelDataTranslator::prepareFieldValueFromJson for date strings that are RFC3339 format with timezone information included
  • Fix issue where incoming data for the gateways data handler does not have an EE_Transaction object as the value for the first array index
  • Remove the “Event Location” heading from the events venue template
  • Remove the Cancel Registration link
  • Fix issue where [COMPANY] message shortcode outputs html entity if General Settings > Company Name field includes an apostrophe
  • EE_Register_Addon::deregister should catch new exception thrown
  • Fix EEH_Venue_View::get_venue not returning a venue that is not related to the global event post if it already has a venue

Enhancements:

  • Add count of registrations for related contact to each row in the Contact List Table
  • Add admin notice regarding raising minimum required PHP version to 5.4
  • Truncate display of multiple datetimes on Registrations admin list table
  • Add filter for swapping out EE_CPT_Editors with something else

February 7, 2018

Event Espresso 4.9.57.p

Bug fixes:

  • Fix Fatal error after activation: Uncaught exception ‘DomainException’
  • Fix calculation for layout var for countdown timeout format
  • Remove EE cookie check
  • Remove space in new line item indexes

Enhancements:

  • Add helper methods to EE_Event class for adding and removing question groups
  • Improvements to model system to support extra calculated selects on model queries
  • Add action hooks for after payment methods are deactivated
  • Add new template tag: espresso_next_upcoming_datetime()

January 29, 2018

Event Espresso 4.9.56.p

Bug fixes:

  • Fix issue where Argument number 1 is not an array in EE_Error.core.php on line 783
  • Add filters to query arg arrays for checkout URL related methods in EE_Registration
  • Fix new datetime end date pre-populating with the year 4036
  • Remove un-needed icon from check-in list view legend
  • Don’t call get_class on null in EE_Config::_reset_espresso_addon_config
  • Fix invoice payment method activation notification
  • Ignore ‘Maximum Allowed Response Size’ value for Date picker or similar questions

Enhancements:

  • Add indexes for esp_line_item table
  • Add filter for removing notice about Datetimes in admin
  • Remove actions link from transactions page
  • Add new actions to EED_Ticket_Sales_Monitor::release_tickets_for_expired_carts
  • Add filters for more flexible screen options

January 16, 2018

Event Espresso 4.9.55.p

Bug fixes:

  • Fix undeclared datetime and ticket start and dates for generated objects in unit tests so that timestamps don’t equal NOW
  • Fix generated ticket objects for unit tests having start and end dates set to NOW
  • Fix blank screen when deleting a check-in record
  • Remove stray PHP tag from end of payment_settings.template.php file

Enhancements:

  • Add ContextInterface and use instead of hard coding reference to Context classes
  • Wrap valid form data array returned from FormHandler::process() in a filter

January 9, 2018

Event Espresso 4.9.54.p

Bug fixes:

  • Fix issue where sold out events with an expired ticket option do not get switched to sold_out post status
  • Fix fatal error during multisite assessment because persistent notice being added
  • Fix CopyRegistrationService::copyPaymentDetails() not copying payment details correctly
  • Fix issue where Static properties in Abstract DomainBase class are overwritten each time add-on Domain class initializes
  • Fix issue where HTML entities are decoded when displaying and editing messages
  • Fix all form input security issues
  • Refactor submit inputs so they always show the default value set on them (the original value), not the current value (which may change if user input populates the form using EE_Form_Section_Proper::receive_form_submission())
  • Fix conflict with WordPress 4.9 built in plugin code editor
  • Fix missing success notices on Message List Table actions
  • Fix conditional in EE_Messages_Validator::validate()
  • Delay instantiating EE_Payment_Method_Manager when EE_Register_Payment_Method::deregister is called
  • Add missing root path for the generated Check In Log url
  • Fix fatal error in DbSafeDateTime
  • Stop logging to espresso_error_log.txt

Enhancements:

  • Add logic to core to disable specific add-ons before they can even register
  • Add URL Value Object
  • Only save session data if a valid cart exists
  • Add a concrete class extending PHP’s FilterIterator Abstract for filtering Event Espresso’s CollectionInterface collections
  • Change the default button for PayPal Express
  • Update best practices documentation
  • Create new CapabilitiesActionRestrictionInterface for EE_Base_Classes
  • Fix acceptance tests and improve framework
  • Implement Adapter for Datetime Helpers for PHP 5.6+ and PHP < 5.6

Posted in | Comments Off on 2018 Changelog Archive

PayPal Express Checkout Smart Payment Buttons Payment Gateway

The PayPal Express Checkout Smart Payment Buttons Payment Gateway will allow your attendees to pay for their event registrations using credit cards, debit cards, PayPal funds, Venmo, and more.

View quick links for this payment gateway –> 


Need to Buy a Support License for the PayPal Express Checkout Smart Payment Buttons Payment Gateway for Event Espresso 4?
Accept event payments with the PayPal Smart Payment Buttons payment gateway for Event Espresso

Installation

This payment gateway is a plugin for WordPress and can be installed through your WP dashboard (WP-admin).

Download the latest version of the PayPal Express Checkout Smart Payment Buttons payment gateway for Event Espresso 4 from your Event Espresso account page.

Then login to your WordPress dashboard (WP-admin) and go to Plugins. Next, click on Add New –> Upload and browse to the plugin on your computer. Then select the zip file and begin the upload process. Wait for the plugin to upload and then click on Activate.

Locate your Credentials for PayPal Express Checkout Smart Payment Buttons Payment Gateway

This extension uses the REST API from PayPal which can be found on developer.paypal.com.

Here are the steps to find your credentials for accepting payments:

1) Go to developer.paypal.com

2) Click on the button to Login into Dashboard and sign in using your PayPal.com account credentials

3) You’ll then see the My Apps & Credentials dashboard

4) Click on Live under My Apps & Credentials

5) Look for REST API Apps. Then click on the button to create a new app.

6) Type a name for the App (e.g., Event Espresso) and click the button to create the
app

7) You’ll now see your Live API credentials. Click the Show link under Secret.

8) Your Live API credentials will now be visible.

9) You are now ready to copy and paste the Client ID and the Secret into the payment methods page for PayPal Express Checkout Smart Payment Buttons within Event Espresso.

10) Open a new browser tab and log into your WordPress website.

11) From your WP dashboard, look at the Admin menus on the left of your screen and hover over Payment Methods under Event Espresso and then click on it. Then on the next screen, click on PayPal Express Checkout with Smart Buttons. Now click the button to activate it.

12) Copy your Client ID from your other browser tab with the PayPal screen and then paste it in in the field. Then do the same for the Secret by copying it and then pasting it in. Then save changes.

You’ll then be ready to accept payments on your site through PayPal Express Checkout Smart Payment Buttons.

Setup and Configuration

Will PayPal Express Checkout Smart Payment Buttons be the only payment method enabled or the only one you offer? Click here to learn how to make it selected by default during the registration checkout.

An account with PayPal is needed to accept payments through the PayPal Express Checkout Smart Payment Buttons payment gateway.

A dedicated SSL certificate is recommended to secure your WordPress website.

Login to your WP-admin (WP Dashboard) and go to Event Espresso –> General Settings –> Payment Methods. Once on the Payment Methods screen, click on PayPal Express Checkout Smart Payment Buttons and click on the button to activate the payment method.


Below are the available fields and explanations for each field.

Name – This is the name of the payment method.
Description – This description is shown during registration checkout.
Admin-Only Name – This is a name of the payment method that will only be shown in the WP Dashboard (WP-admin).
Admin-Only Description – This description is used only in the WP Dashboard (WP-admin).
Debug Mode On? – Enables debugging for this payment method. It should be off (set to no) on a live/production site.
Open by Default? – This sets this payment method to be pre-selected on the registration checkout page.

You can offer multiple payment options to your attendees. However, if you have a single payment gateway enabled, then set it to Open by Default for a faster checkout experience for your attendees.

PayPal REST API App Client ID – This credential is needed to process payments and can be found in your developer.paypal.com account.
PayPal REST API App Secret – This credential is needed to process payments and can be found in your developer.paypal.com account.
Button shape – Choose the shape of the payment buttons.
Button size – Choose the size. Venmo requires the full-width option.
Usable From? – Select where this payment method should be available for use. This payment method cannot process payments through the WP-admin (WP Dashboard).
Order – The value (number) can be used to sort or arrange this payment option. A lower value means that it should appear first during registration checkout.
Update Settings – Click this button after making any changes to your payment method.
Deactivate Payment Method – Click this button to deactivate this payment method.

Usage

The PayPal Express Checkout Smart Payment Buttons payment gateway will let you accept payments through credit cards, debit cards, PayPal funds, Venmo, and PayPal Credit. These payment options are dynamically shown based on a buyer’s location, so they have flexibility in paying for their event registrations.

This is an onsite payment gateway through a modal window which means that attendees/registrants will remain on your website to complete their payment instead of being taken to a page on PayPal.com and then returned to your website.

Troubleshooting

I configured PayPal Express Checkout Smart Payment Buttons and payments are not being processed
Double-check your credentials to make sure that you are using the live credentials which are for production mode. Also, make sure that there is no extra spacing before or after the credentials in the payment methods page of Event Espresso.

How can I set up a recurring payment or subscription through PayPal Express Checkout Smart Payment Buttons?
Recurring or subscription payments are not currently supported in the PayPal Express Checkout Smart Payment Buttons Payment payment gateway.

When will Venmo appear?
Venmo will appear on mobile devices when an attendee has the Venmo mobile app installed and when merchant payments are enabled in the app. An attendee can enable merchant payments through the Venmo app –> Settings –> Connect Browsers and then connect the browser.

When I refund a payment, does it also refund through PayPal.com?
Refunds in Event Espresso 4 are currently a two-step process.
1) Apply the refund through the transactional details screen of Event Espresso in your WP-admin (WP dashboard).
2) Then login to your PayPal merchant account and process the refund.

Is an SSL certificate needed for PayPal Express Checkout Smart Payment Buttons?
A dedicated SSL certificate is recommended if you are accepting payments on your website.

Do I need to be PCI compliant?
Compliance with the Payment Card Industry Data Security Standards (PCI DSS) is required if you are processing, storing, or transmitting credit card data. Event Espresso recommends using a dedicated SSL certificate on your website.

View more information on PCI compliance from PayPal.


Need to Buy a Support License for the PayPal Express Checkout Smart Payment Buttons Payment Gateway for Event Espresso 4?
Accept event payments with the PayPal Smart Payment Buttons payment gateway for Event Espresso

Posted in | Comments Off on PayPal Express Checkout Smart Payment Buttons Payment Gateway

Authorize.net Accept Payment Gateway

The Authorize.net Accept payment gateway will allow your attendees and registrants to pay for their event registrations with a credit card or debit card. eChecks are also supported.

View quick links for this payment gateway –>


Need to Buy a Support License for the Authorize.net Accept Payment Gateway for Event Espresso 4?
Accept events payments with the Authorize.Net Accept payment gateway for Event Espresso

Installation

This payment gateway is a plugin for WordPress and can be installed through your WP dashboard (WP-admin).

Download the latest version of the Authorize.net Accept payment gateway for Event Espresso 4 from your Event Espresso account.

Then login to your WordPress dashboard (WP-admin) and go to Plugins. Next, click on Add New –> Upload and browse to the plugin on your computer. Then select the zip file and begin the upload process. Wait for the plugin to upload and then click on Activate.

Locate your Credentials for Authorize.net Accept

Your credentials for Authorize.net Accept can be found in your Authorize.net merchant account. It uses your API login and Transaction key. Here are the steps to find your credentials for Authorize.net Accept.

You can then add your API login and Transaction key through your WordPress dashboard (WP-admin) –> Event Espresso –> Payment Methods –> Authorize.net Accept. Be sure to save changes.

Afterward, enable the Transaction reporting option through your Authorize.net account.

Want to test Authorize.net Accept before accepting payments in live / production mode?

You can enable debug mode through your WordPress dashboard (WP-admin) –> Event Espresso –> Payment Methods –> Authorize.net Accept. Be sure to save changes.

After testing, you can turn debug mode off and save changes. This will allow you to accept live payments.

Will Authorize.net Accept be the only payment method enabled or the only one you offer? Click here to learn how to make it selected by default during the registration checkout.

Setup and Configuration

A Authorize.net account is needed to accept payments via Authorize.net Accept. Need an account? Sign-up for a Authorize.net merchant account to get started.

A dedicated SSL certificate is required to accept payments through Authorize.net Accept.

Login to your WP-admin (WP Dashboard) and go to Event Espresso –> General Settings –> Payment Methods. Once on the Payment Methods screen, click on Authorize.net Accept and click on the button to activate the payment method.

Below are the available fields and explanations for each field.

Name – This is the name of the payment method.
Description – This description is shown during registration checkout.
Admin-Only Name – This is a name of the payment method that will only be shown in the WP Dashboard (WP-admin).
Admin-Only Description – This description is used only in the WP Dashboard (WP-admin).
Debug Mode On? – Enables debugging for this payment method. It should be off (set to no) on a live/production site.
Open by Default? – This sets this payment method to be pre-selected on the registration checkout page.

You can offer multiple payment options to your attendees. However, if you have a single payment gateway enabled, then set it to Open by Default for a faster checkout experience for your attendees.

Authorize.net API login ID – A credential for accepting payments.
Authorize.net Transaction key – A credential for accepting payments.
Billing address – Enable to collect a registrant’s billing address.
Shipping address – Enable to collect a registrant’s shipping address.
Button URL – This is the URL to the image that will be used during the payment process of registration checkout.
Alternative Button URL: https://ee-screenshots.s3.amazonaws.com/2015/07/pay-by-credit-card.png
Pay by bank card
Usable From? – Select where this payment method should be available for use. This payment method cannot process payments through the WP-admin (WP Dashboard).
PMD Order – The value (number) can be used to sort or arrange this payment option. A lower value means that it should appear first during registration checkout.
Update Settings – Click this button after making any changes to your payment method.
Deactivate Payment Method – Click this button to deactivate this payment method.

Usage

The Authorize.net Accept payment gateway will let you accept payments via major credit or debit cards. eChecks are also supported if you have the eCheck service enabled on your Authorize.net merchant account.

This integration uses the Hosted option with Authorize.net through an iframe. This means that a guest will remain on your website while they are paying and their payment details will be transferred to Authorize.net securely through an iframe form.

An account with Authorize.net is needed to accept payments via Authorize.net Accept and an SSL certificate is required.

Troubleshooting

I configured Authorize.net Accept and payments are not being processed. Can you help?
Double-check your credentials to make sure that you are using the API Login ID and Transaction key. Also, make sure that there is no extra spacing before or after the credentials in the payment methods page of Event Espresso.

When I go to pay with Authorize.net Accept, I see this error message “The payment processor Authorize.net appears to not be responding. Their server may be having issues, or {My Site’s Name} may have content being served over HTTP and your browser is preventing the page from loading completely. Please contact the site owner and try again using a different browser.”. What can I do to get rid of it?

First, make sure your entire site is served over https, not http.

If that doesn’t help, try this. The Authorize.net Accept gateway uses an invisible iframe that points to {yoursite}/wp-content/plugins/eea-authnet-accept/iframe-communicator.php. If you’re receiving that error, it’s probably because that page cannot be opened in an iframe using your browser.

You should first check you have no security plugins preventing pages from your site from being put in an iframe (ie, try disabling other plugins to see if that resolves the issue). Next, you may need to talk with your host to ask them to allow the iframe communicator page ({yoursite}/wp-content/plugins/eea-authnet-accept/iframe-communicator.php) to be placed in an iframe. This may involve changing the HTTP headers X-Frame-Options and Content-Security-Policy.

I see a message in the payment details about the payment being success but not being verified. How do I resolve this?
You can correct this issue by enabling the Transaction Reporting API through your Authorize.net account.

How can I set up a recurring payment or subscription through Authorize.net Accept?
Recurring or subscription payments are not currently supported in the Authorize.net Accept payment gateway.

When I refund a payment, does it also refund through Authorize.net Accept?
Refunds in Event Espresso 4 are currently a two-step process.
1) Apply the refund through the transactional details screen of Event Espresso in your WP-admin (WP dashboard).
2) Then login to your Authorize.net account and process the refund.

Is an SSL certificate needed for Authorize.net Accept?
A dedicated SSL certificate is required to use the Authorize.net Accept payment gateway.

Do I need to be PCI compliant?
Compliance with the Payment Card Industry Data Security Standards (PCI DSS) is required if you are processing, storing, or transmitting credit card data. Event Espresso helps by using Authorize.net Accept’s iframe option for payment processing.

View more information on PCI compliance from Authorize.net.

Customizations

Our support team cannot write custom coding for you. Below are some examples on customizing this payment gateway.
  • This payment method includes an option to collect an attendee’s billing address and shipping address during registration checkout. It is available in the settings page for Authorize.net Accept on your WordPress website.



Need to Buy a Support License for the Authorize.net Accept Payment Gateway for Event Espresso 4?
Accept events payments with the Authorize.Net Accept payment gateway for Event Espresso

Posted in | Comments Off on Authorize.net Accept Payment Gateway

Accept donations alongside event registrations with Event Espresso

Donations can help your organization reach its fundraising goals by allowing contributions from guest’s that are attending as well as guests that cannot make it to an event.

For example, let’s say that you are hosting a dinner to benefit your favorite local charity. The cost of the dinner is $50 per guest, and you have spots for up to 45 guests. By introducing some fixed-price donation options, you can further raise funds so you’ll have these pricing options.

– Registration for dinner: $50 (required)
– Donation for $50
– Donation for $100
– Donation for $250

With the options above, a guest that is attending can donate in addition to choosing the required registration option.

Variable donation options are not yet supported, and you can create fixed-price options. Vote for this feature here.

There are two ways to handle donations in Event Espresso.

1) The donations can be created as extra pricing options through the event editor and be connected to their own date time, so they don’t affect the limit of the dinner

2) You can create a separate event that handles registrations for donations only. Then you can include a link to the donation-only event in the original event’s description. You can even create a custom registration approved email that asks for donations after a guest has registered.

Posted in | Comments Off on Accept donations alongside event registrations with Event Espresso

How to get professional conference badges with QR codes

You can design custom name badges for your upcoming event and get them shipped or print them yourself. This guide shows how to get attendee data from Event Espresso and import that data into an online badge creation tool available from conferencebadge.com. These badges can even include QR-codified data so you can scan the badges with Event Espresso-compatible mobile apps to check-in people at the event’s entrance!

Get the attendee data from Event Espresso

    1. Go to Event Espresso > Events and click the link to view the registrations for the event
    2. Click the CSV Report button and download the generated report to your computer
    3. Open the CSV report in a spreadsheet application
    4. Delete the columns that contain data that will not be displayed on the name badges

  1. Export the spreadsheet to an Excel file

Import the attendee data and design your badge

    1. Go to conferencebadge.com and open an account (or log in)
    2. Click + New Event from Excel and upload your spreadsheet file
    3. Match your spreadsheet columns with your attendee info

    1. Choose a product, badge size, and theme
    2. Use the badge builder to add your logo, static text, and attendee data
    3. If you’re planning on using the ticketing apps you can QR Codify the Unique Registration code field

  1. Preview and Checkout
Need more ideas and tips for designing your event’s name badges? Check out this name badge design guide.

Posted in | Comments Off on How to get professional conference badges with QR codes

2017 Changelog Archive

November 29, 2017

Event Espresso 4.9.53.p

Bug fixes:

  • Fix undefined variable in EED_Core_Rest_Api::maybe_notify_of_basic_auth_removal()
  • Fix Catchable fatal error:
    Argument 2 passed to EED_Messages::payment() must be an instance of EE_Payment, null given in EED_Messages.module.php on line 458
  • Fix broken EE_Post_Content_Field and EE_Simple_HTML_Field sanitization
  • Add core filter for Event Customization app to hook into

November 28, 2017

iPay88 Payment Method 1.0.2.p

Enhancements:

  • Add support for Indonesia
  • Filter order description method

November 21, 2017

Event Espresso 4.9.52.p

Bug fixes:

  • Fix change timezone from UTC persistent notice
  • Fix Datetime offset tool redirect on sites with subdomains
  • Fix question editor not saving changes
  • Improve modal centering for small screens

November 16, 2017

Event Espresso 4.9.51.p

Bug fixes:

  • Ensure nag notice message is set when redisplaying existing notice
  • Don’t show the payment method was automatically deactivated messaging to subscribers
  • Fix possible runaway ee_transient_schedule and ee_ssn_* and ee_shc_* transients
  • Make question type categories more accessible
  • Fix argument 1 passed to EEH_Line_Item::delete_all_child_items() must be an instance of EE_Line_Item, null given

Update

  • Improve EE_Registrations_incoming_data so that convert_data_for_persistent_storage receives (and validates) IDs instead of objects

November 8, 2017

Event Espresso 4.9.50.p

Bug fixes:

  • Fix issue where some expired session transients are not deleted
  • Fix unclosed anchor tag in event editor for duplicator button link
  • Fix Fatal Error:
    Call to a member function execute() on boolean in EED_Messages.module.php
  • PayPal Express: Pass Line Item details in DoExpressCheckoutPayment API call
  • Improve session expiry error messages
  • Add extra check for compatibility before migrating tables to utf8mb4
  • Add warning before resetting DB tables from EE Maintenance page

Enhancements:

  • Update messaging shown in registration checkout if an event is full and a guest is trying to pay
  • Change use of esc_sql() in
    EEH_Event_Query::posts_where_sql_for_event_category_slug()
    to use $wpdb-prepare() instead
  • Improve Datetime Offset tool
  • When clicking valid shortcode, add it to the related field (newsletter composing)
  • Update UXIP link to use HTTPS

October 19, 2017

QuickBooks payment method 1.0.2.p
Updates:

  • Add trailing slash on root URL used with redirect_uri

October 18, 2017

Event Espresso 4.9.49.p

Updates:

  • Add [RECIPIENT_EDIT_REGISTRATION_LINK] shortcode to available newsletter template shortcodes
  • Fix auto-demotion of registrations to Wait List

October 13, 2017

Event Espresso 4.9.48.p

Bug fixes:

  • Remove spaces between HTML tags when creating PDFs through DOMPDF
  • Fix REST API unit test failures and endpoint query filtering due to changes in WordPress 4.9
  • Check for mb_strcut before attempting to use it
  • Error proof method in EE_Capabilities where the assumption is made that a site has any of the default roles
  • Fix messages system bulk option ‘Generate and send’ not sending messages
  • Revisit – Improve display of sub line items on Payment Options step
  • Fix duplicate cache keys being generated in
    PostRelatedCacheManager::clearPostRelatedCacheOnUpdate()

Enhancements:

  • Add a shortcode for the TXN ID returned from the gateway to the payment received messages

October 11, 2017

Event Espresso 4.9.47.p

Bug fixes:

  • Fix opening and closing div mismatch on SPCO return to Payment options page
  • Restore setting transactions to Abandoned transaction status
  • Fix form help text container appearing in form markup despite there being no help text
  • Don’t load trashed registrations when processing messages
  • Fix forms system output before multiple choice checkbox html
  • Fix issue where abandoned registrations keep reserved tickets
  • Fix bug with the default generation of EE_Message_Addressee objects for address context within EE_message_type
  • Fix issue where email field is blank after saving invalid email address in the admin
  • Fix issue where ticket/datetime cloner copies over the ticket’s/datetime’s reserved count
  • Fix issue where bullhorn action does not track batch messages
  • Fix permanent delete events action
  • Fix usage of deprecated WP_User::_init_caps in tests (and code)
  • Fix single context message generation for messages
  • Fix failing test case in EE_Registration_Processor_Test
  • Fix generating preview for registration type messages creating entries in the message activity list table
  • Fix transaction event revenue report sub-query
  • Convert all uses of do_action() to do_action_ref_array() where arrays of objects are passed as the first parameter
  • Include proper default where conditions for transaction query
  • Fix failing unit test due to Daylight Savings Time
  • Use prefixed clearfix html class for the [ESPRESSO_EVENTS] shortcode’s pagination element
  • PayPal Express order description: Use mb_strcut() instead of substr()
  • Fix HTML entities shown in CSV column headers
  • Move BN field in PayPal Express to the DoExpressCheckout parameter
  • Fix issue with filtered CSV reports where some registrations are replaced with another registration from the same transaction
  • Fix support link in plugin description

Enhancements:

  • Configure PSR-4 Autoloader before bootstrapping Event Espresso
  • Add ability to make admin notices dismissible
  • Add new updateStatusBasedOnTotalPaid() method and call when copying registrations
  • Create new Context DTO class as a standardized way of passing along contextual knowledge when performing an action
  • Add ContextChecker Class
  • Tweak EE_Attendee::full_name() to only add space between first and last names if both exist
  • Add filter for where conditions on query for question groups for the question group meta boxes in the event editor
  • Add filter on default value for EE_Base_Class::get_extra_meta so that plugins can override what the default is for a meta key
  • Improve after_registration method on EE_Register_Addons so that it is delayed a bit from being called until after client code has a chance to deregister an add-on
  • Display form-wide errors

Updates to core to add support for waitlist add-on:

  • Add getter for $iframe property to DisplayTicketSelector
  • Fix error on finalizing registration when the visit should automatically demote all pending registrations in a group to the waitlist from pending payment
  • Fix form generation when multiple FormHandlers are on the same page
  • Improve Checkout response for Wait List registrants

Merged pull requests from Github:

September 11, 2017

Event Espresso 4.9.46.p

Bug fixes:

  • Use Event Espresso version when registering admin stylesheets
  • Fix incorrect count returned by EE_Event::spaces_remaining() when there are two tickets attached to one datetime that has a registration limit
  • Display all ticket selector content when retrieved via AJAX requests
  • Fix issue where icon for check-in status not displaying correctly for toggled check-ins
  • Fix HTML/CSS class change on registration form questions
  • Fix Fatal error that occurs when deactivating Payment Method addons
  • Fix issue where simple ticket selector ignores minimum ticket capability
  • Add LoaderFactory
  • Fix Fatal error: Function name must be a string (when server has PHP 5.3)
  • Fix Reset Capabilities tool so it re-adds ee_payment_method_{pm_name} capabilities
  • Add Cache control parameter to LoaderDecoratorInterface
  • Fix issue where JSON linked data schema formatting overrides date and time formats used elsewhere
  • Don’t unset non-object values when resetting EE_Registry
  • Fix Front end Maintenance Mode so site admins can access events on the front end
  • Fix Bulk actions: ‘Set Registrations to Not Approved’ action
  • Fix [ESPRESSO_EVENT_ATTENDEES] shortcode
  • Don’t set MIME version in email headers
  • Fix EE add-on menu depending on capabilities for display not displaying after initial activation of add-on adding those capabilities
  • Fix missing bulk actions on Filtered by Event check-in list table view
  • Don’t grant meta capabilities (e.g. ee_edit_event) to a role
  • Fix exception thrown when using the contacts ‘Move to trash’ bulk action
  • Fix <code> tags displayed in messages settings
  • Fix issue where some shortcode assets are not loaded on private pages/posts
  • Only set the timezone on the model from the model object during
    EEM_Base::instantiate_from_array_or_object for EEM_Event
  • Fix EE_Line_Item::recalculate_total_including_taxes() for cloned line items generated by
    EE_Line_Item_Filter_Processor::clone_and_reset_line_item_tree()
  • EE4 REST API: Avoid notice thrown when using [ESPRESSO_EVENT_ATTENDEES] in an events description
  • Fix Integration Test expectations in phpunit test cases for REST endpoints

Enhancements:

  • Allow authenticated users to insert data using the REST API
  • Optimize/speed up creation of EE4 model objects
  • Add a [VENUE_META] shortcode to the message templates
  • Move checkin status constants to EE_Checkin class
  • Extract all WP_Admin_Bar related logic from EE_System into new application and domain services
  • Inject the new Loader class (and other dependencies) into EE_System and use for loading classes
  • Instantiate ShortcodesManager using LoaderFactory::getShared()
  • Add ModelFieldFactory class
  • Refactor EE_Request_Handler::is_set() and get() to drill down and find request parameters nested deeper than the top level of the request parameter array
  • Add user interface toggle for turning on or off messages contexts
  • Add new messages shortcode for generating the url to the venue details page
  • Display friendly error message when there is no active payment method in
    EE_SPCO_Reg_Step_Payment_Options::_get_selected_method_of_payment
  • Add filter hook to question groups query in
    EE_SPCO_Reg_Step_Attendee_Information::_registrations_reg_form
  • Add filter hook to query getting questions for a question group found in
    EE_SPCO_Reg_Step_Attendee_Information::_question_group_reg_form
  • Add cc: field to email message templates
  • Add helper method to EEH_URL for removing specified query parameters from the
    current_url result
  • Modify EE_Register_Shortcode to handle registering shortcodes in the newer shortcode system
  • Add more information to the single check in record view
  • Add notice warning about upcoming changes impacting those using a UTC offset for datetimes
  • Add link to front end reg_url_link from the transactions admin list page
  • Automatically delete any related esp_extra_meta records when an EE_Entity is permanently deleted
  • Simplify EEM_Base::delete_permanently to actually know which model objects are getting deleted
  • Add “step” attribute to EE_Number_Input_Display_Strategy and do validation of incoming values
  • Convert EEM_Change_Log::Log_Type field to a Text Field so there is more flexibility for the types that can be used

September 6, 2017

Payment Methods Pro 1.0.1.p
Enhancments:

  • Change hook used to check if MER is activated and de-activate
  • Don’t use currency payment method model

August 24, 2017

Espresso Grid View 1.2.4.p
Enhancements:

  • Allow viewing event info on mobile devices
  • Allow add-on to load different custom templates

August 22, 2017

Espresso Calendar 3.2.11.p
Enhancements:

  • Filter the registration button html to allow for custom register now buttons
  • Allow multiple categories at the same time with a single ESPRESSO_CALENDAR shortcode
  • Allow the use of parent categories within the calendar

August 3, 2017

Event Espresso Ticket Scanning add-on 1.0.11.p

Bugfixes:

  • Fix incorrect capability check used for Barcode Scanner functionality
  • Include private events in scanner ui event drop down

July 26, 2017

Event Espresso 4.9.45.p

Bug fixes:

  • Don’t return early from save() for unchanged objects with non-int IDs, and fix creation of Status objects in unit tests
  • Remove unused bulk actions dropdown menu from default message templates admin page
  • Fix issue where duplicating an event does not copy over Featured image, page template selection, custom message templates
  • Fix phpunit tests running on phpunit 6.1+ for PHP7 and PHP7.1 in
    EE_Register_Capabilities_Test
  • Use constant for DOMPDF_DEFAULT_PAPER_SIZE instead of hardcoded value
  • Fix issue where select Ajax Mode REST Input doesn’t actually accept normal query params
  • Fix WP_Query args stripped out of EventListQuery

Enhancements:

  • Improve to EE_Base_Class::save()’s use of $_has_changes property
  • Improve Custom_Messages_Template_List_Table by extending
    Messages_Template_List_Table

July 19, 2017

EE4 Promotions 1.0.11.p

  • Don’t run additional logic in main addon class used for addon registration
  • Add [PROMOTIONS_USED] shortcode to transaction based message shortcodes
  • Filter the event names within the ‘Promotion applies to…’ metabox
  • Update the [ESPRESSO_PROMOTIONS] shortcode description text

July 17, 2017

Event Espresso 4.9.44.p

Bug fixes:

  • Fix issue where event duplicator duplicates an event’s datetime ticket reserved count
  • Fix issue where Country Settings page is giving no feedback when changing the settings
  • Fix issue where localized data objects are output twice
  • Fix Uncaught ReferenceError: ee_dismiss is not defined JavaScript error when dismissing an EE admin notification
  • Allow archived tickets (that have no registrations) to be deleted
  • Fix PHP notices that occur when saving settings on Event Espresso > Events > Templates
  • Fix dependencies for PostRelatedCacheManager
  • Fix usage of venue-related strings when calling
    EE_Config::register_route()
  • Fix undeclared variable in
    EE_Message_Resource_Manager::ensure_messengers_are_active()
  • Fix issue where the CSV file gets removed from the server before Chrome can download the file
  • Fix issue where clicking the “Move to Trash” link on an auto draft event/venue does not remove the post

Enhancements:

  • Create interfaces for “tagging” classes as singletons with a reset() method, and for classes that do not store blog or request specific state
  • Rename ConstantsAbstract to DomainBase and add Domain class to core
  • Create LoaderFactory
  • Add new actions and filter hooks
  • Refactor some methods that calculate tickets sold and/or remaining
  • Refactor the dropdown filter that displays registration statuses on the Registrations Admin list table
  • Update Dependency Map
  • Add filter on Extend_Registration_Form_Admin::_email_validation_settings_form for section proper subsections so the output can be modified
  • Add new action in duplicate event logic to hook in when other related items are being duplicated
  • Add timestamp display to registration checkins list table
  • Add clarification to the Reset/Delete Data page to inform that Event Category Terms will not be deleted

June 28, 2017

Event Espresso 4.9.43.p

Bug fixes:

  • Enqueue espresso_default.css when EE upcoming events widget is displayed
  • Avoid: openssl_cipher_iv_length() [function.openssl-cipher-iv-length]: Unknown cipher algorithm warnings
  • Avoid conflicts with plugins that optimize script loading
  • Load deprecated EE_Event_List_Query class for backwards compatibility
  • Fix issue where displayed Subtotal of ticket price gets rounded to the nearest dollar in the admin
  • Make sure EventEspresso\core\services\assets\Registry is loaded as cached so it gets set on the AssetsRegistry property in EE_Registry
  • Improve default experience for Decaf messages where date time name and description shortcodes are used
  • Fix Multi-status summary message type so it sends messages only if there are multiple registration statuses
  • Fix “Move to Trash” link within any EE CPT editor (event, venue, person, attendee/contact)
  • Make admin registration list more responsive for small screens
  • Don’t cache ticket selector and attendee shortcodes
  • fix TableManager::dropTables() where multiple EE models use the same EE table

Enhancements:

  • Improve display of sub line items on Payment Options step
  • Add filter for AdminOptionsSettings generated form sections
  • Add filter hook to allow changing the registrations search query
  • Add a Select Timezone in the Timezone admin alert

June 15, 2017

Braintree 1.0.6
Bug fixes and Enhancements:

  • Don’t run additional logic in main addon class used for addon registration
  • Update Braintree SDK and add additional filter hooks
  • Remove the accepted message

June 14, 2017

Event Espresso 4.9.42.p

Bug fixes and Enhancements:

  • Fix issue where returning from an off-site gateway results in a blank screen on servers that don’t have output_buffering set to On
  • Fix undefined index/invalid argument warning from Messages class when messages are set to send on same request
  • Allow custom message templates to be used if all events in the cart are set to use the same custom message template

June 11, 2017

Event Espresso 4.9.41.p

Bug fixes:

  • Fix missing space between attributes and missing attribute closing bracket in event editor inputs
  • Fix broken pagination in ESPRESSO_EVENTS shortcode output

Updates:

  • Remove link to sign up for Mijireh account
  • Deprecate EEM_Currency_Payment_Method and EE_Currency_Payment_Method, and no longer insert rows into esp_currency_payment_method when activating new payment methods or during the 4.6 migration.

June 8, 2017

Event Espresso 4.9.40.p

Bug fixes:

  • Paypal Express – treat SuccessWithWarning as success, so duplicate requests are treated as success
  • Fix Notice: Trying to get property of non-object in
    core/helpers/EEH_Event_View.helper.php on line 59
  • Fix timeout on Maintenance page system info
  • Fix issues with EE_Config
  • Add fix for themes that don’t call get_header()
  • Don’t cache Ticket Selector shortcode’s output
  • Fix PHP Fatal error: Uncaught Error: Class EE_Event_List_Query not found

Updates:

  • Update credits tab
  • Initial file cleanup for event editor classes
  • Simplify enqueueing of assets in EE_System and other core classes

May 30, 2017

Event Espresso 4.9.39.p

Bug fixes:

  • Fix issue where success notices are not showing for triggering resend of messages
  • Remove usage of mcrypt as it has been deprecated in PHP7.1
  • Bump the_content filter priorities back up to what they were originally
  • Fix open and closing div tag mismatch in the Ticket Selector that occurs with Expired tickets
  • Get current form step and make sure it is displayable before attempting to display progress steps
  • If event has default reg status of Not Approved, then don’t display info on it, unless there are registrations for it that are returning to pay
  • Add is_object() check in LooseCollection::add() method
  • Add new state form: Use EE_Div_Per_Section_Layout() instead of EE_No_Layout() so that validation errors appear in the correct location
  • Fix Batch message button’s selected registration count
  • Fix issue where Registration Multi-status Summary messages do not get triggered
  • Fix backticks found in links for Custom Message Templates
  • Fix resetting of EE_Error notices in Extend_General_Settings_Admin_Page
  • Fix the messages [QUESTION] shortcode value returned now being wrapped in <p> tags
  • Add check for iconv() before converting characters in Authnet AIM fields
  • When no response is received from AIM, give a more helpful message
  • Fix array to string conversion EE_Text_Normalization.strategy.php on line 38 when manually applying a payment/refund
  • Fix the invoice payment method default ‘Confirmation Text’ string
  • Set PayPal Pro’s order description field’s limit to 127 characters

Enhancements:

  • Don’t instantiate models just to map meta caps
  • Add Benchmark class for testing loading and execution times
  • Don’t use post shortcodes array for tracking but instead load resources dynamically
  • Allow Closures for dependency loaders and allow aliases for specific classes
  • Add Command Factory
  • Add ability to execute Commands from within CommandHandlers
  • Add new shortcode [GOOGLE_MAPS_URL] that will return the url to the Google map
  • Add show_title parameter for the [ESPRESSO_EVENTS] shortcode
  • Registrations CSV – Force phone number to display as text within Excel
  • EE4 data deletion: Add clarification to explain what it does with add-ons

May 2, 2017

Event Espresso 4.9.38.p

Bug fixes:

  • Fix conditional to avoid Cannot use object of type WP_Error as array
  • Restore SPCO form validation message box
  • Change database field limits to allow more decimal places for line item and transaction totals
  • In EE_Transaction primary_registration method get all primary registrations and look for one that isn’t canceled, or just return first item found
  • Fix behaviour of add-on message types so that active state is preserved across deactivations/de-registration and reactivation/registration of the add-on
  • Add tooltip to Rsrvd field
  • Fix PHP notice for EE4 Decaf Plugin Update Engine
  • Add check for slug field for Plugin Update Engine client
  • Fix broken inputs in mobile Datetime and Ticket editor
  • REST API: Filter out shortcodes within the Event Description field
  • Make sure EEH_Activation::delete_all_espresso_tables_and_data only lists tables once in the assembled drop tables expression
  • Fix addon activation in EE_Register_Addon not properly setting the activation indicator option

Enhancements:

  • Create Integer Input class and corresponding number display strategy
  • Create Loading System with controllable built-in caching
  • Implement new constants abstract that can be utilized by core and add-ons for their own Constants file
  • Add option to set a default value for the Maximum number of tickets allowed per order for this event field
  • Add improvements to Plugin Update Engine client to make it more resilient
  • Update various content on Event Espresso admin pages
  • Use the_content filter on EE_Post_Content_Field get_pretty method
  • REST API: Change the no-SSL message

May 1, 2017

Stripe 1.0.15
Bug fixes and Enhancements:

  • Don’t run additional logic in main addon class used for addon registration
  • Add filter hooks
  • Remove the accepted message
  • Fix issue where payment amount is not displayed
  • Add filter for the $stripe_data array used when making a Stripe charge
  • Add data-locale parameter so Stripe will use the customer’s language
  • Change order of credential fields

Infusionsoft 2.1.5
Bug fixes and Enhancements:

  • Don’t run additional logic in main addon class used for addon registration
  • Handle exceptions which might be thrown when syncing
  • Fix failing unit tests

Ticketing 1.0.5
Bug fixes and Enhancements:

  • Don’t run additional logic in main addon class used for addon registration
  • Fix issue where the ticket notice is not generated when the send on same request option is enabled for the messages system and only the primary registrant context is enabled
  • Change default Ticket Notice templates to use [TXN_TICKETS_APPROVED_URL] short code
  • Add error proofing for `EE_Ticketing::_get_ticket_url()`
  • Use home url instead of site url for ticket link urls

April 12, 2017

Event Espresso 4.9.37.p

Bug fixes:

  • Fix hook names where different action hooks have the same names
  • Use EE plugin version instead of WP version for script version number added to the asset’s URL as a query string for cache busting purposes
  • Fix multiple payments methods shown when Payment Methods Pro is de-activated
  • Fix EE4 REST API not reporting check-in status when tickets are trashed
  • Fix issue where un-required and un-selected State registration form fields throw validation error
  • Fix failing unit test for EE_Form_Section_Proper_Test::test_submitted_values
  • Fix undefined variable: current_db_state in migration_options_from_ee4.template.php on line 32

Enhancements:

  • Add new method to EEM_Event for getting active and upcoming events
  • Add new filter hooks in the Help > Shortcodes tab content

April 3, 2017

Event Espresso 4.9.36.p

Bug fixes:

  • Revert: Configure PSR-4 Autoloader before bootstrapping EE

March 30, 2017

Event Espresso 4.9.35.p

Bug fixes:

  • Fix blank State field when returning to edit information on attendee information step
  • Fix issue where payments cannot be deleted when they are attached to registrations
  • Fix ticket selector when Maximum number of tickets allowed per order equals 1 and WP User integration restricts tickets
  • Fix issue where ticket reservations aren’t cleared when the Multi Event Registration cart is abandoned
  • Fix conditional that breaks message queueing in PHP5.6+
  • Fix “Text Domain” in plugin header
  • Fix issue where [PAYMENT_GATEWAY] shortcode always returns “Invoice”
  • Add better REST API check-in endpoint responses
  • Check if the URL includes a scheme, if not append ‘http://’ to Venue Editor’s Event URL field

Enhancements:

  • Configure PSR-4 Autoloader before bootstrapping EE
  • Add new hooks to Single Page CheckOut for use in Wait List add-on
  • Add FormHtmlParser class for parsing a form section’s rendered HTML

March 16, 2017

Event Espresso 4.9.34.p

Bug fixes:

  • Fix issue where canceling a PayPal Express payment from a revisit leads to a blank registration screen
  • Fix ticket selector output when ticket selector row content is filtered
  • Fix front end date picker input not loading CSS (Github pull request)
  • Don’t send emojis in Authorize.net AIM requests

Enhancement:

  • Add REST API site_info to provide basic auth data required by mobile apps

March 10, 2017

Event Espresso 4.9.33.p

Bug fix:

  • Fix Reg_code not getting set

March 9, 2017

Event Espresso 4.9.32.p

Bug fixes:

  • Fix answer cache id when processing attendee info during spco return visit
  • Add button to Maintenance > Reset page: Reset Ticket and Datetime Reserved Counts
  • Reinstate AHEE__EE_Cron_Tasks__finalize_abandoned_transactions__abandoned_transaction action hook
  • Switch registration status to “Cancelled” when registration is moved to Trash bin
  • Restore the change in ticket selector table so that if no free tickets require selection, no selector is displayed
  • In REST API schema response, ensure immutable properties (fields) on a model are correctly represented by the readonly flag.
  • Remove warnings about Basic Auth’s removal
  • Make bundled basic auth not interfere with oAuth server
  • Fix HTML IDs in Payment method settings admin pages so JavaScript validation works with Payment Methods Pro add-on
  • Mijireh payment method: When checking whether a transaction is paid via Mijireh, check all its pending Mijireh payments, not just the most recent one
  • Add error proofing to EEH_Schema.helper.php

New features and Enhancements:

  • Embed Upcoming Event List for displaying and event list on other websites
  • Set txn property on EE_Messages_Registrations_incoming_data if all the registrations that are sent in are for the same transaction
  • Build in support for conditional type shortcodes in the Messages Shortcode parser
  • Add action for before an addon is de-registered using EE_Register_Addon and after an addon has been de-registered using EE_Register_Addon
  • eejs-api: Make sure the library authorizes with cookie if available
  • Separate “fetch” behaviour for the vue model mixin from the “add” behaviour (among other important changes)
  • Make sure in the schema that the value for default follows the same pattern as what is used for the field value
  • Allow passing basic auth authentication data in querystring
  • Add another action hook when forms are constructed
  • Add a button on the system information page to download an html file of system information

February 20, 2017

Event Espresso 4.9.31.p

Bug fixes:

  • Don’t set radio button value to checked when ticket selector has more than one ticket option
  • Fix issue where a valid ticket selection throws “A valid ticket could not be retrieved for the event.” error
  • Delay call to EventEspresso\core\services\assets\Registry::wp_localize_scripts until latest possible moment to allow for late data registration
  • Add improvements to the registration list table and checkin list table’s sorting and link titles, new filter hook
  • Fix issue where migrations and batch jobs sometimes do not report errors
  • Allow changing the Phone Number system question’s question type to “US Phone”
  • Remove warnings when checking for database indexes on non-existent tables
  • Fix issue where the extra slash in batch CSV reporting assets caused JavaScript to not load on some servers
  • Fix the_latest_event_date() helper method

Enhancements

  • Merge pull request 178 – new spans with CSS classes added to datetime markup
  • Merge pull request 206 – new action hook
  • Include defaults for model fields with json-schema
  • Use a constant for max number of characters that can be indexed in utf8mb4
  • Fix action in wrong location within locate_template()
  • Add filter to allow changing the data used to generate ICS files

New Feature:

  • Allow managing older message activity data

February 16, 2017

Espresso Calendar 3.2.8.p

Bugfixes:

  • Add sanitization for shortcode attributes
  • Show featured image thumbnails even on the smallest screens
  • Use version_compare for Database Migration Scripts version comparisons in Calendar

Enhancements:

  • Add support for embeddable Calendar in an iframe
  • Add filter hook to allow filtering the display of the event’s start/end time in the calendar
  • Add ID anchor to the Category legend, Venue Select, and Category select that appear above the calendar
  • Add filter hooks around the events permalink output

February 6, 2017

Event Espresso 4.9.30.p
Bug fixes:

  • Add sanitization for shortcode attributes that don’t get sanitized/whitelisted in EEH_Event_Query
  • Fix short code month parameter for the [ESPRESSO_EVENTS] short code
  • PHP 7 compatibility: Change the usage of clone so its used properly
  • PHP 7 compatibility: Make sure declaring magic method as a static method
  • Fix issue with template pack api
  • Fix forms system to allow a default null value for dropdown question fields
  • Allow Upcoming Events Widget to also show “Sold Out” upcoming events
  • Add a cron task to delete gateway logs older than a week
  • Fix issue where All Registrations Report times out with many, many, many registrations
  • Ensure all db indexes smaller than 191 characters
  • Fix issue where payment methods that do not support the current currency are available within Single Page CheckOut
  • Remove the “Braintree free 50k” plug from the about page (promotion has ended)

January 31, 2017

Event Espresso 4.9.29.p
Bug fixes:

  • Fix issue where shortcode for the Registration Cancelled page could not be configured properly
  • Fix issue where “please select a datetime” text is being displayed
  • Fix end of month bug in Event list table month filter selector
  • Add backwards compatibility for older versions of WordPress to avoid Fatal error: Call to undefined function EventEspresso\core\services\assets\rest_url()

January 27, 2017

Event Espresso 4.9.28.p
Bug fixes:

  • Fix blank ticket selector on backend admin new registration page

January 26, 2017

Event Espresso 4.9.27.p
Bug fixes:

  • Fix CSS for registration form labels for small screens
  • PHP7.1 – Fix ‘Warning: Illegal string offset ‘xxx’ in /event-espresso-core-reg/core/admin/EE_Admin_List_Table.core.php on line 565
  • filter parent dropdown on quick-edit for critical pages
  • Filter Customizer Static Front Page Dropdowns for critical pages
  • Make sure JSON-LD is valid JSON
  • Prevent Fatal error: Uncaught TypeError: Argument 1 passed to EEH_Schema::add_json_linked_data_for_event() must be an instance of EE_Event, string given

Enhancements

  • Modify EEH\_Activation::create_cron_tasks so it can allow setting the initial time for the first scheduled event to run
  • Add support for embeddable Calendar in an iframe
  • new template for ticket price details
  • hook into new action with new callback method and load new template
  • Extract iframe logic from Ticket Selector module and refactor as separate abstracted class so that it can be reused
  • Add robots meta tag to registration checkout, transactions, and thank you pages
  • Implement a filter for test sends to allow extra logic over the setting of messenger test field settings
  • Add front end user-interface for selecting a datetime before selecting tickets
  • Add method to EEM_Base for getting qualified column names for ALL fields on a table
  • send shipping data to PayPal Pro. Use registration info for this if possible, otherwise fallback to using billing info

January 17, 2017

Event Espresso 4.9.26.p
Bug fixes:

  • Don’t deactivate incompatible addons
  • Fix registration type messages not being sent when paying with PayPal Express on a SPCO re-visit
  • Always show each ticket type’s Quantity and Price info on reg checkout
  • Fix Fatal error: Call to a member function name() on boolean in core/db_classes/EE_Ticket.class.php on line 1090
  • Fix broken payment step on SPCO when using Braintree PM

New Features:

  • Add Schema.org JSON-LD for events
  • REST API – return a $schema property on options requests
  • Add filter hook to PayPal Express gateway to allow sending additional data to PayPal

January 12, 2017

MailChimp 2.3.4

  • Pass $registration and $EVT_ID to ‘FHEE__EE_MCI_Controller__mci_submit_to_mailchimp__subscribe_args’ filter

January 11, 2017

Braintree Payment Method add-on 1.0.5

Bug fixes:

January 10, 2017

Braintree Payment Method add-on 1.0.4

Bug fixes:

  • Update Braintree JS to use proper booleans
  • Remove default button parameter that is set to null

January 5, 2017

Event Espresso 4.9.25.p
Bug fixes and Enhancement:

  • Update EE_Datetime spaces_remaining to include reserved tickets too
  • Add checks for object instance before accessing methods
  • Add filter to allow target blank for Alternative Registration links

January 3, 2017

Event Espresso 4.9.24.p
Bug fixes:

  • Fix issue when jQuery validation disabled or WP_User active, SPCO form submission is failing
  • Fix the primary registrant info overwriting additional registrants if the last name question is not included within the personal info question group
  • Change State Dropdown select to use hide() && show() and the disable property for controlling valid options
  • Fix inconsistent capability restrictions on various registration admin page list table views
  • Add new EEM_Message status to represent when the messages system passes off a message to be processed by a messenger
  • Only delete failed transactions after a week if they have no payments
  • Add shims for get_preview_post_link() and is_post_type_viewable()
  • Plugin Update Engine: Don’t listen on POST requests for sitelicensekey saves when DOING_WP_CRON
  • Remove html tags from translation strings
  • Make PayPal Express order item names and descriptions filterable and consistent with other gateways
  • REST API: Filter/remove the self_wp_post link for events and venues when the WP REST API v2 plugin is active
  • Reword “Table existed when it shouldn’t exist” warnings
  • Fix ‘category’ typo within migration messages

Enhancements

  • Remove additional Attendee divs from display when no information is asked for additional attendees
  • Introduce new EventEspresso\core\services\assets\Registry class for loading scripts and queueing up data
  • Add button to the registrations list table to download the results of the current registration list table query into a CSV file
  • Add filter to model enum fields allowed_enum_values

You can review older changelogs from the changelog archives

Posted in | Comments Off on 2017 Changelog Archive

Wait List Manager Add-on

The Wait List Manager add-on allows you to automate the process of capturing wait list signups when your events sell out.

View quick links for this add-on –>

If the wait list is activated on an event, and the event sells out, a button will automatically display on the event details page that encourages attendees to join a wait list. If an attendee joins the wait list and someone cancels, the wait list attendee can be auto-promoted to the next available spot.


Need to Buy a Support License for the Wait List Add-on?
https://eventespresso.com/product/eea-wait-lists/

Wait List Installation

This add-on requires Event Espresso 4.9.49 or newer. It cannot be used with old versions of Event Espresso 4.

This add-on is a plugin for WordPress and can be installed through your WP dashboard (WP-admin).

Download the latest version of the Wait List add-on from your Event Espresso account.

Then login to your WordPress dashboard (WP-admin) and go to Plugins. Next, click on Add New –> Upload and browse to the plugin on your computer. Then select the zip file and begin the upload process. Wait for the plugin to upload and then click on Activate.

Setup and Configuration

Login to your WP dashboard and go to Event Espresso –> Events –> Choose an event.

You’ll now be viewing the overview screen for the selected event. Scroll about half way down the page, until you see the Event Wait List settings.

Event Wait List Settings

Usage

Once you’ve added a wait list to an event by adjusting the value of the “Wait List Spaces” setting and the event sells out, the ticket selector is replaced and a button will be displayed on the event details page. The “Sign Up For The Wait List” button allows potential attendees to sign-up to be on the wait list if spaces open up. Spaces can open up if someone cancels or is removed from the event list.

Wait List Front-end

This image shows a sold out event with the option to sign up for the wait list:

Sold Out Event w/ Wait List Sign Up

Wait List Sign Up Form

When a registrant uses the button to sign up for the wait list, then a popover is displayed to capture the attendee information:

Once all wait list spots are taken, the “Join The Wait List” button goes away:

Sold Out Event w/o Wait List Sign Up

Manually Processing Standby Registrations

Once registrants are added to the wait list, you can easily follow-up with them or promote their registration to approved, pending payment, and more, if any spaces open up for the event.

To manually promote registrants, head on over to the Registration List table filtered for the wait list:

Wait List Registration Overview

Here you can get an overview of wait list registrations, promote registrations, view registrant information, and resend notifications.

To promote someone on the wait list to an open spot, simply click on the persons name or select the box and use the bulk actions to change the status. For this example, I will click into a single wait list registration to view the details:

Wait List Registration Manual Promote

From there you can change the registration status and send related messages. If you are running a paid event, you can use the “Pending Payment” option to make sure the attendees pay before taking a spot in the registration list. However, if you’ve promoted multiple attendees to “Pending Payment” and only have a limited number of spaces, then the first attendees to pay will receive their spot on the “Approved” registration list.

Warning!

Reducing available spaces after promoting registrants should be avoided at all costs.

Auto-promotion Settings

The Wait List Manager auto-promotion setting helps you by making sure wait list registrations are automatically promoted whenever a space opens up in the event.

If you use the bulk cancel action to cancel registrations you’ll need to refresh the event editor page for the sold out event to trigger the auto-promotion of wait list registrations.

You can also leave some spaces on manual control if desired.

Wait List Manager Auto-promotion Settings

Wait List Messages

The Wait List Manager creates three additional messages that send when your customers sign-up for a wait list. To edit and manage the Wait List messages, login to your WP dashboard and go to Event Espresso –> Messages –> Default Message Templates.

Once on the Default Message Templates dashboard, you may need to navigate to the second page of messages. Once you are on the second page of the messages overview, you should see the newly added Wait List Messages:

Wait List Messages Overview

Wait List Messages Overview

From there you can edit the content of each message to meet your needs.

Troubleshooting

The plugin will not activate. Can you help?
Are you running a current version of Event Espresso 4? This add-on needs at least version 4.9.49.p to activate.

Where is the menu screen for this add-on?
This plugin does not create any new menus in the WordPress admin screen. It uses the messages setting screen along with the event editor for Event Espresso.

Customizations

Our support team cannot write custom coding for you. Below are some examples on customizing this add-on.

How to change text strings from the Wait List add-on

Below is some example code that shows how to change the wording of some of the text strings from the Wait List add-on:

You can add the above to a functions plugin or into your WordPress child theme’s functions.php file.

How to add a phone number field to the wait list form

Example code that shows how to add the phone number field to the Wait List form:
https://github.com/eventespresso/ee-code-snippet-library/blob/master/addons/eea-wait-lists/tw_ee_add_registrant_phone_to_waitlist_form.php

You can add the above to a functions plugin or into your WordPress child theme’s functions.php file.

Need to Buy a Support License for the Wait List Add-on?
https://eventespresso.com/product/eea-wait-lists/

Posted in | Comments Off on Wait List Manager Add-on

How to set up a class that meets weekly

This is an example of a recurring event (class) that can be set up manually using the Event Espresso 4 multiple datetimes system to have the class repeat weekly. This can be a helpful workaround instead of using a recurring events system to programmatically schedule recurring events in the future.

When you set up an event in Event Espresso you can create multiple datetimes (multiple occurrences of an event), which works well for classes that meet weekly or bi-weekly. The event is the main class, the datetimes are the dates of the class.

To create multiple datetimes for an event with multiple dates:

  1. You go to add a new a event or edit an existing event
  2. Scroll to the Event Tickets & Datetimes box
  3. Input the first day and time the class meets. You can optionally give this datetime a name,
    such as “Week 1”
  4. Click the Add Datetime button
  5. Input the second date’s day and time, then click on Create Datetime
  6. Repeat as necessary

Important Notes:

  1. Setting limits for datetimes is optional if you set a Ticket Quantity and there’s only one ticket option. If there are multiple ticket options and there’s a class size limit, then it’s best to set a limit for the datetimes
  2. If you also sell “one-time” registrations for a single class, these can be set up as individual tickets that grant access to a single datetime. You click on the advanced options (gear icon ) to connect a specific ticket to a specific datetime.
  3. You an also mix and match different tickets with access to different datetimes to create custom experiences and access to different combinations of events.

Posted in | Comments Off on How to set up a class that meets weekly

Chase Paymentech Orbital Gateway

Receive online payments with credit and debit cards from your attendees through Chase Paymentech Orbital.

View quick links for this payment gateway –> 


Need to Buy a Support License for the Chase Paymentech Orbital Payment Gateway for Event Espresso 4?
Accept event payments with the Chase Paymentech Orbital payment gateway for Event Espresso

Installation

This payment gateway is a plugin for WordPress and can be installed through your WP dashboard (WP-admin).

Download the current version of the Chase Paymentech Orbital payment gateway for Event Espresso 4 from your Event Espresso account.

Then login to your WordPress dashboard (WP-admin) and go to Plugins. Next, click on Add New –> Upload and browse to the plugin on your computer. Then select the zip file and begin the upload process. Wait for the plugin to upload and then click on Activate.

Certification

To be certified to use this plugin and to receive production API credentials from Chase, you must complete the certification document Chase provides and submit it to Chase for review.

Locate your Credentials for Chase Paymentech Orbital

Your credentials for Chase Paymentech Orbital will be provided to you by an account manager at Chase. You’ll let them know you’re using the Orbital gateway (not Authorize.net).

Chase Paymentech Orbital uses a Merchant ID, Username, Password, Terminal ID, and BIN for payment processing.

Will Chase Paymentech Orbital be the only payment method enabled or the only one you offer? Click here to learn how to make it selected by default during the registration checkout.

Setup and Configuration

An account with Chase Paymentech is needed to accept payments via Chase Paymentech.

A dedicated SSL certificate is recommended to make registration checkout and other areas of your website more secure.

Login to your WP-admin (WP Dashboard) and go to Event Espresso –> General Settings –> Payment Methods. Once on the Payment Methods screen, click on Chase Paymentech and click on the button to activate the payment method.

Below are the available fields and explanations for each field.

Name – This is the name of the payment method.
Description – This description is shown during registration checkout.
Admin-Only Name – This is a name of the payment method that will only be shown in the WP Dashboard (WP-admin).
Admin-Only Description – This description is used only in the WP Dashboard (WP-admin).
Debug Mode On? – Enables debugging for this payment method. It should be off (set to no) on a live/production site.
Open by Default? – This sets this payment method to be pre-selected on the registration checkout page.

You can offer multiple payment options to your attendees. However, if you have a single payment gateway enabled, then set it to Open by Default for a faster checkout experience for your attendees.

Merchant ID – This credential is needed to process payments and is provided to you when your merchant account is set up.
Username – This credential is needed to process payments and is provided to you when your merchant account is set up.
Password – This credential is needed to process payments and is provided to you when your merchant account is set up.
Terminal ID – This credential is needed to process payments and is provided to you when your merchant account is set up.
BIN – This credential is needed to process payments and is provided to you when your merchant account is set up.

Order – The value (number) can be used to sort or arrange this payment option. A lower value means that it should appear first during registration checkout.
Button URL – This is the URL to the image that will be used during the payment process of registration checkout.
Alternative Button URL: https://ee-screenshots.s3.amazonaws.com/2015/07/pay-by-credit-card.png
Pay by bank card
Usable From? – Select where this payment method should be available for use. This payment method cannot process payments through the WP-admin (WP Dashboard).
Update Settings – Click this button after making any changes to your payment method.
Deactivate Payment Method – Click this button to deactivate this payment method.

Usage

The Chase Paymentech Orbital payment gateway will let you accept payments through major credit or debit cards.

The XML API from Chase Paymentech Orbital is used which means that your registrants/attendees will pay for their registrations on your website.

An account with Chase Paymentech is needed to accept payments via Chase Paymentech.

Troubleshooting

I configured Chase Paymentech Orbital and payments are not being processed. Can you help?
Double-check that you are using your API credentials for production (live) mode. Also, ensure that there is no extra spacing before or after the credentials in the payment methods screen of Event Espresso 4.

How can I set up a recurring payment or subscription through Chase Paymentech Orbital?
Recurring or subscription payments are not currently supported in the Chase Paymentech Orbital payment gateway.

When I refund a payment, does it also refund through Chase Paymentech Orbital?
Refunds in Event Espresso 4 are currently a two-step process.
1) Apply the refund through the transactional details screen of Event Espresso in your WP-admin (WP dashboard).
2) Then login to your Chase Paymentech merchant account and process the refund.

Is an SSL certificate needed for Chase Paymentech Orbital?
A dedicated SSL certificate is recommended if you are accepting payments on your website.

Do I need to be PCI compliant?
Compliance with the Payment Card Industry Data Security Standards (PCI DSS) is required if you are processing, storing, or transmitting credit card data. Event Espresso recommends using a dedicated SSL certificate on your website.

View more information on PCI compliance from Chase Paymentech Orbital.

Customizations

Our support team cannot write custom coding for you. Below are some examples on customizing this payment gateway.
  • None at this time — check back soon!


Need to Buy a Support License for the Chase Paymentech Orbital Payment Gateway for Event Espresso 4?
Accept event payments with the Chase Paymentech Orbital payment gateway for Event Espresso

Posted in | Comments Off on Chase Paymentech Orbital Gateway

Event Espresso