diff --git a/src/Bundle/ChillActivityBundle/Notification/ActivityNotificationHandler.php b/src/Bundle/ChillActivityBundle/Notification/ActivityNotificationHandler.php index 31e68f95b..01d6d537d 100644 --- a/src/Bundle/ChillActivityBundle/Notification/ActivityNotificationHandler.php +++ b/src/Bundle/ChillActivityBundle/Notification/ActivityNotificationHandler.php @@ -25,12 +25,12 @@ final class ActivityNotificationHandler implements NotificationHandlerInterface $this->activityRepository = $activityRepository; } - public function getTemplate() + public function getTemplate(array $options = []): string { return '@ChillActivity/Activity/showInNotification.html.twig'; } - public function getTemplateData(Notification $notification) + public function getTemplateData(Notification $notification, array $options = []): array { return [ 'notification' => $notification, diff --git a/src/Bundle/ChillMainBundle/Notification/NotificationHandlerInterface.php b/src/Bundle/ChillMainBundle/Notification/NotificationHandlerInterface.php index 89983266d..9ad462d9b 100644 --- a/src/Bundle/ChillMainBundle/Notification/NotificationHandlerInterface.php +++ b/src/Bundle/ChillMainBundle/Notification/NotificationHandlerInterface.php @@ -11,6 +11,22 @@ declare(strict_types=1); namespace Chill\MainBundle\Notification; +use Chill\MainBundle\Entity\Notification; + interface NotificationHandlerInterface { + /** + * Return the template path (twig file). + */ + public function getTemplate(array $options = []): string; + + /** + * Return an array which will be passed as data for the template. + */ + public function getTemplateData(Notification $notification, array $options = []): array; + + /** + * Return true if the handler supports the handling for this notification. + */ + public function supports(Notification $notification, array $options = []): bool; } diff --git a/src/Bundle/ChillMainBundle/Notification/NotificationHandlerManager.php b/src/Bundle/ChillMainBundle/Notification/NotificationHandlerManager.php index 214f24239..724c9a479 100644 --- a/src/Bundle/ChillMainBundle/Notification/NotificationHandlerManager.php +++ b/src/Bundle/ChillMainBundle/Notification/NotificationHandlerManager.php @@ -32,10 +32,10 @@ final class NotificationHandlerManager /** * @throw NotificationHandlerNotFound if handler is not found */ - public function getHandler(Notification $notification): NotificationHandlerInterface + public function getHandler(Notification $notification, array $options = []): NotificationHandlerInterface { foreach ($this->handlers as $renderer) { - if ($renderer->supports($notification)) { + if ($renderer->supports($notification, $options)) { return $renderer; } } @@ -43,13 +43,13 @@ final class NotificationHandlerManager throw new NotificationHandlerNotFound(); } - public function getTemplate(Notification $notification): string + public function getTemplate(Notification $notification, array $options = []): string { - return $this->getHandler($notification)->getTemplate(); + return $this->getHandler($notification, $options)->getTemplate($options); } - public function getTemplateData(Notification $notification): array + public function getTemplateData(Notification $notification, array $options = []): array { - return $this->getHandler($notification)->getTemplateData($notification); + return $this->getHandler($notification, $options)->getTemplateData($notification, $options); } } diff --git a/src/Bundle/ChillPersonBundle/Notification/AccompanyingPeriodNotificationHandler.php b/src/Bundle/ChillPersonBundle/Notification/AccompanyingPeriodNotificationHandler.php index 0297c5f39..0370fc00e 100644 --- a/src/Bundle/ChillPersonBundle/Notification/AccompanyingPeriodNotificationHandler.php +++ b/src/Bundle/ChillPersonBundle/Notification/AccompanyingPeriodNotificationHandler.php @@ -25,12 +25,12 @@ final class AccompanyingPeriodNotificationHandler implements NotificationHandler $this->accompanyingPeriodRepository = $accompanyingPeriodRepository; } - public function getTemplate() + public function getTemplate(array $options = []): string { return 'ChillPersonBundle:AccompanyingPeriod:showInNotification.html.twig'; } - public function getTemplateData(Notification $notification) + public function getTemplateData(Notification $notification, array $options = []): array { return [ 'notification' => $notification, @@ -38,7 +38,7 @@ final class AccompanyingPeriodNotificationHandler implements NotificationHandler ]; } - public function supports(Notification $notification) + public function supports(Notification $notification, array $options = []): bool { return $notification->getRelatedEntityClass() === AccompanyingPeriod::class; }