Releases: derhansen/sf_event_mgt
TYPO3 13.4 compatibility
This is the first version of the extension for TYPO3 13.4 LTS 🥳
It includes some nice new features and several breaking changes, of which some must be migrated manually. It is therefore highly recommended to read the following list of breaking changes.
Not all breaking changes will affect regular users of the extension. Therefore, breaking changes have been tagged as following:
- Breaking Changes tagged with 🔥 affect all users of the extension and it is recommended to read the migration options.
- Breaking Changes tagged with 🛠️ affect users, who extended the extension with custom code (e.g. used services or extended classes).
For most users, only the first 3 breaking changes may be important.
Breaking Changes (ordered by priority from high to low) 🔥
[!!!][TASK] Migrate plugins to content elements #1189 🔥
All existing plugins have been migrated to content elements.
Migration: The included update wizard must be executed in order to migrate the data of existing plugins and permissions. Additionally, if plugins have been restricted in backend layout or container columns with ext:content_defender, the configuration must be adapted manually.
[!!!][TASK] Migrate extbase HashService deprecation #1252 🔥
Due to the deprecation of the Extbase HashService, the new Core HashService must be used. This Service requires an additional secret, which results in the implementation being a breaking change.
Impact: All existing links sent in emails (e.g. confirmation, cancellation, payment) generated by previous versions of the extension have become invalid.
Migration: There is no migration.
[!!!][FEATURE] Extend price options functionality and save registration price #1185 🔥
The price options feature has been extended to be more flexible. Price options can now have a name and a description and the validity is not mandatory any more. Additionally, the event price and event price option (if defined in event) is now always saved to a registration record. The new PSR-14 event ModifyRegistrationPriceEvent
allows to modify the price saved to a registration.
Breaking functionality in this change is, that it is now required to select a price option in the registration process, if an event has price options defined. If an event has price options and no price option is submitted in the registration process, a validation error will be shown.
Migration: Users, who use price options previously or plan to use price options, make sure to adapt possible existing templates, so price options are selectable in the registration template. See the default templates of the extension for details.
[!!!][TASK] Improve default csv definition #1206 🔥
The default settings for the CSV export have been adapted to show possibilites for exporting sub-properties.
Migration: No migration required. Users, who rely on the previous CSV export default fields must adapt TypoScript settings and configure CSV export fields accordingly.
[!!!][TASK] Change default settings for CSV export #1201 🔥
The settings for the CSV export changed, so exported CSV files can be opened using Microsoft Excel on Windows systems without any modifications. This has been archieved by setting fieldDelimiter = ;
and prependBOM = 1
as default in the CSV export configuration.
Migration: No migration required. Users who rely on the previous CSV export format must adapt TypoScript settings and configure CSV format accordingly.
[!!!][TASK] Provide new PageViewHelper #1270 🔥
The previously used PageViewHelper can not be used anymore, because creation of frontend links through extbase UriBuilder
now requires a current contentObject, which is not available in backend context. The ViewHelper has therefore been refactored to use TYPO3 page routing.
Migration: Users who used the ViewHelper in email templates sent using the backend module of the extension must adapt email templates.
Before: <e:uri.page pageUid="22" additionalParams="{tx_sfeventmgt_pieventdetail:{event: registration.event, action: 'detail', controller: 'Event'}}" absolute="1"/>
After: <e:uri.page pageUid="22" additionalParams="{tx_sfeventmgt_pieventdetail:{event: registration.event.uid, action: 'detail', controller: 'Event'}}" />
[!!!][TASK] Remove ChangeCacheTimeout #1295 🔥
The event listener for the manual cache handling configuration has been removed. With the new version of the extension, no manual cache configuration is required any more. If you previously used e.g. config.cache.3 = tx_sfeventmgt_domain_model_event:2
, this can be removed from TypoScript.
Migration: None.
[!!!][TASK] Hand over extbase request to services #1268 🛠️
The extbase request is now required in several services. Therefore, the request has been added as argument to the following functions:
FluidRenderingService->renderTemplate()
-⚠️ previously calledFluidStandaloneService
- see #1269FluidRenderingService->parseStringFluid()
-⚠️ previously calledFluidStandaloneService
- see #1269ICalendarService->downloadiCalendarFile()
ICalendarService->getiCalendarContent()
NotificationService->sendCustomNotification()
NotificationService->sendUserMessage()
NotificationService->sendAdminMessage()
RegistrationService->moveUpWaitlistRegistrations()
AttachmentService->getICalAttachment()
Migration: Users who extended the extension and used affected services in their own extensions must ensure to pass the extbase request object to affected functions.
[!!!][TASK] Avoid $GLOBALS['TYPO3_REQUEST'] usage in EventAvailability #1261 🛠️
The signature of EventAvailability::check()
has changed. It is now required to pass the PSR-7 request object as 3rd argument to the function.
Migration: Users who extended the extension and use the function must ensure to pass the PSR-7 request object to the function.
[!!!][TASK] Move UserRegistrationController::checkRegistrationAccess() to service #1274 🛠️
The function UserRegistrationController::checkRegistrationAccess()
has been moved to RegistrationService
.
Migration: Users who extended the extension and use the function must now use $this->registrationService->checkRegistrationAccess()
and pass required arguments (PSR-7 request and registration object).
[!!!][TASK] Rename and refactor FluidStandaloneService #1269 🛠️
The FluidStandaloneService
has been renamed to FluidRenderingService
. Additionally, the method arguments of
getTemplateFolders()
has changed, so the arguments $extensionName
and $pluginName
have been removed.
Migration: Users who extended the extension and used FluidStandaloneService
must migrate custom code to use the FluidRenderingService
.
[!!!][FEATURE] Introduce EventEvaluationService #1238 🛠️
To reduce logic in EventController, several functions have been moved to the new service EventEvaluationService
. As a result or the refactoring, the call to PSR-14 event EventPidCheckFailedEvent
was moved to EventEvaluationService
. This results in a
breaking change, because the EventController
is now not available via the PSR-14 event any more.
Migration: Users who use the getEventController()
function of the EventPidCheckFailedEvent
must omit calling the function, since it is not available any more.
[!!!][TASK] Remove module.tx_sfeventmgt.settings.notification constants #1283 🛠️
The constants in module.tx_sfeventmgt.settings.notification
were never used within the extensin and are therefore removed. If you however used the constants, usage must be adapted.
Migration: Use plugin.tx_sfeventmgt.settings.notification
settings instead
New features 🎉
[FEATURE] Add optional support for FluidEmail in EmailService #1221
It is not optional possible to use FluidEmail for all notifications sent by the extension. If active, email content is rendered using the internal FluidRenderingService
and then send using the TYPO3 system email layout.
[FEATURE] Use CacheDataCollector to calculate page cache lifetime #1272
When one or multiple events are shown in the list, detail or calendar view, the cache lifetime of the page is now calculated by considering the event startdate, a possible registration startdate and a possible registration endline. Additionally, for TYPO3 system fields "Start" and "Stop" are condidered.
The new page cache lifetime calculation will ensure, that possible registration links will be hidden or shown depending on the event state. As an example, the registration link will automatically be hidden, when the event either starts or the registration deadline is reached, because the page cache liftetime is calculated considering those date fields.
[FEATURE] Provide PSR-7 request object in PSR-14 events where possible #1245
The PSR-7 request object is now available in nearly all PSR-14 events of the extension.
[FEATURE] Add site set for extension #1260
The extension now contains a site set which can be used in site set configuration. Email addresses can be definied using the site setting editor.
New feature and bugfix
[FEATURE] Added PSR-14 event to modify result of RegistrationValidator #1208
[BUGFIX] Fix wrong condition in administration fluid template
[TASK] Ensure saveRegistration action can only be called via POST #1262
[TASK] Fix controller unit test for saveRegistrationAction
[TASK] Migrate "inputLink" FlexForm field to TCA type=link
[DOCS] Add note about "additionalVerificationStep" template requirement #1265
Bugfix release
Tripple opt-in/out, event preview and optional registration until end date
[FEATURE] Add optional verification step for confirm and cancel registration #1237
This feature allows to optionally add an additional verification step, when a user confirms or cancels a registration. When enabled, confirmation- or cancellation-links will lead to a page, where the user has to manually confirm the confirmation- or cancellation.
This feature is useful, when Email Security Gateways or Antivirus/Anti-Malware Software scan registration emails and follow confirmation- or cancellation-links, leading to unwanted confirmation or cancellation of an event registration.
[FEATURE] Allow preview of event records #988
[FEATURE] Optionally allow registration until event end date #1235
[TASK] Provide 5th argument for BackendUtility::wrapClickMenuOnIcon #1232
[TASK] Remove outdated langDisable in FlexForm #1230
[TASK] Do not send emails with empty subject #1234
[TASK] Avoid usage of deprecated internal_type in FlexForm #1236
[TASK] Avoid usage of deprecated array keys in FlexForm #1236
[TASK] Use mailpit instead of mailhog in acceptance tests #1241
[DOCS] Add how to deactivate email notifications to the FAQs #1239 - thanks @h-e-l-l-o-w-o-r-l-d
Optional registration until end date
Bugfix release
Bugfix release
Maintenance release
[FEATURE] Add body + subject to ModifyUserMessageSenderEvent - thanks @georgringer
[FEATURE] Added waitlist notification filter to backend module #1204
[BUGFIX] Allow backend module in all workspaces #1213
[TASK] Fix grammer issue #1211 - thanks @georgringer
[TASK] Provide additional variables in saveRegistrationResultAction
#1210
[TASK] Exclude events without enddate from GDPR cleanup task #1215
[DOCS] Document e:uri.page ViewHelper #1212
[DOCS] Added name to identical confval anchors
[DOCS] Fixed Type
confval
Maintenance release
[FEATURE] Add body + subject to ModifyUserMessageSenderEvent - thanks @georgringer
[FEATURE] Added waitlist notification filter to backend module #1204
[BUGFIX] Fix wrong check for waitlist moval #1198 - thanks @georgringer
[TASK] Provide additional variables in `saveRegistrationResultAction #1210
[TASK] Exclude events without enddate from GDPR cleanup task #1215
Bugfix and maintenance release
[FEATURE] Add content element wizard menu item #1199
[BUGFIX] Fix wrong check for waitlist moval #1198 - thanks @georgringer
[TASK] Add .gitattributes #1195
[DOCS] Switch Documentation Rendering to PHP - thanks @linawolf
[DOCS] Fixed wrong example TypoScript for attachments #1200
[DOCS] Add time_restriction to available display mode options #1184