Tip
Use the table of contents in the left panel to navigate.
Changelog
1.5.0
- [FEATURE] On-demand notifications:
NotificationandDispatcher Interface:: route () routesreturn a new() Lex\that can be notified without any model or database record. See On-Demand Notifications.Notifications\ Anonymous Notifiable - [FEATURE]
Notifiable::resolves the route of a notifiable for any channel by convention (route Notification For (string $channel, Notification $notification) route). The email channel now uses it, so it works for both models and anonymous notifiables.Notification For<Channel> () - [FEATURE] Unit and functional test suites for TYPO3 13.4 and 14 (SQLite by default, DDEV supported). See Running the Tests.
- [BREAKING] A channel is skipped for a notifiable whose route for that
channel is empty: the sender calls
routebefore each delivery. Notifiables must implementNotification For ($channel, $notification) routefor every custom channel they can be notified through.Notification For<Channel> () routenow returnsNotification For ('database') true(instead ofnull) so the database channel is never skipped. See Routing. - [BREAKING] Channels without a
getmethod are now keyed by their short class name (e.g.Name () Slack) instead of their fully-qualified class name. Update the keys returned byChannel viaaccordingly.() - [CHANGE] The route method name is now built from the channel key in
UpperCamelCase, with
-,_and spaces as separators:my-maps tochannel route.Notification For My Channel () - [BREAKING]
Notificationnow declaresDispatcher Interface channel,() routeand() routes. Custom implementations of the interface must add these methods.() - [CHANGE]
Has:Route Notification For Mail getandFirst Name () getare now optional; onlyLast Name () getis required.Email () routeaccepts an optionalNotification For Mail () Notificationargument. - [FIX]
Hasno longer fails with a fatal error when the class definesRoute Notification For Mail getbut notLast Name () get.First Name ()
1.3.0
- [FEATURE] Custom channels implementing
Channelcan now be registered via a Symfony DI tag (Interface notifications.).channel - [FEATURE] Optional
getmethod on channel classes. When present, its return value is used as the channel key inName (): string via. When absent, the fully-qualified class name is used as the key.() - [FEATURE]
Notificationnow collects channels throughManager #and stores live service instances — channels benefit from full DI, including scoped services.[Autowire Iterator ('notifications. channel')] - [BREAKING]
Notificationnow resolves from the injected service map instead of callingManager:: channel () General. Custom channels previously registered only as public services must add theUtility:: make Instance () notifications.tag (or implementchannel Channelso theInterface _instanceofrule picks them up automatically). - [CHANGE] Added TYPO3 14 compatibility (
^13.).4 | | ^14 - [CHANGE]
Abstractconverted to constructor injection. Removed deprecated setter-injection methods (Module Controller inject,Module Template Factory inject,Page Renderer inject,Icon Factory inject).Backend Uri Builder - [FIX]
?array $channels = nullparameter type corrected acrossNotification,Dispatcher Interface Notification,Manager Notification, and theSender Notifiabletrait. - [FIX] TCA: removed deprecated
interfacekey (dropped in TYPO3 13),cruser_ctrl field (removed in TYPO3 13), andid eval => 'trim'/eval => 'int'validators (removed in TYPO3 13). - [FIX]
notifiable_TCA field changed fromid type=inputtotype=number. - [FIX] SQL schema: removed
intdisplay width, added missing(11) linkcolumn intx_.lexnotifications_ domain_ model_ message
1.1.0 — 2024-01-01
- [FEATURE] Added Symfony Messenger queue integration via
Shouldmarker interface.Queue - [FEATURE] Added
Notificationconstants following RFC 5424 (Info, Notice, Warning, Error, Critical, Alert, Emergency).Level - [FEATURE] Added
resendaction to the backend module. - [FEATURE] Pagination in the backend message list (50 items per page).
- [FEATURE] Added level filter to the backend message list.
- [FEATURE] French (
fr) localization for all language files. - [FEATURE] Added
getonDiff Created At For Humans () Databaseusing Carbon.Notification - [CHANGE] Bumped TYPO3 requirement to 13.4+.
- [CHANGE] Bumped PHP requirement to 8.2+.
1.0.0 — Initial Release
- Backend module for composing and sending messages to frontend users.
- Email channel using TYPO3's mail system and Fluid templates.
- Database channel for persistent in-app notifications.
Notifiabletrait for Extbase domain models.Hastrait for email routing.Route Notification For Mail DatabasewithNotification Repository find,By Notifiable markandAll As Read For Notifiable removemethods.All For Notifiable - Abstract
Notificationbase class for custom notification types. Notificationfor dependency injection.Dispatcher Interface Backendbuilt-in notification class.User Sent Message To Frontend User - English localization for all language files.