diff --git a/lib/Alchemy/Phrasea/Core/Event/Subscriber/OrderSubscriber.php b/lib/Alchemy/Phrasea/Core/Event/Subscriber/OrderSubscriber.php index 48372aa700..9db96e830a 100644 --- a/lib/Alchemy/Phrasea/Core/Event/Subscriber/OrderSubscriber.php +++ b/lib/Alchemy/Phrasea/Core/Event/Subscriber/OrderSubscriber.php @@ -14,6 +14,7 @@ namespace Alchemy\Phrasea\Core\Event\Subscriber; use Alchemy\Phrasea\Core\Event\OrderDeliveryEvent; use Alchemy\Phrasea\Core\Event\OrderEvent; use Alchemy\Phrasea\Core\PhraseaEvents; +use Alchemy\Phrasea\Model\Entities\Order; use Alchemy\Phrasea\Model\Entities\OrderElement; use Alchemy\Phrasea\Model\Entities\User; use Alchemy\Phrasea\Notification\Emitter; @@ -21,6 +22,7 @@ use Alchemy\Phrasea\Notification\Mail\MailInfoNewOrder; use Alchemy\Phrasea\Notification\Mail\MailInfoOrderCancelled; use Alchemy\Phrasea\Notification\Mail\MailInfoOrderDelivered; use Alchemy\Phrasea\Notification\Receiver; +use Alchemy\Phrasea\Order\ValidationNotifier\CompositeNotifier; use Alchemy\Phrasea\Order\ValidationNotifierRegistry; class OrderSubscriber extends AbstractNotificationSubscriber @@ -60,6 +62,13 @@ class OrderSubscriber extends AbstractNotificationSubscriber 'order_id' => $event->getOrder()->getId(), ]); + if ($event->getOrder()->getNotificationMethod() !== Order::NOTIFY_MAIL) { + $notifier = new CompositeNotifier([ + $this->notifierRegistry->getNotifier(Order::NOTIFY_MAIL), + $notifier + ]); + } + foreach ($users as $user) { $notified = false; diff --git a/lib/Alchemy/Phrasea/Order/ValidationNotifier/CompositeNotifier.php b/lib/Alchemy/Phrasea/Order/ValidationNotifier/CompositeNotifier.php new file mode 100644 index 0000000000..a3e75cebcb --- /dev/null +++ b/lib/Alchemy/Phrasea/Order/ValidationNotifier/CompositeNotifier.php @@ -0,0 +1,56 @@ +notifiers = $notifiers; + } + + /** + * @param Order $order + * @param User $recipient + */ + public function notifyCreation(Order $order, User $recipient) + { + foreach ($this->notifiers as $notifier) { + $notifier->notifyCreation($order, $recipient); + } + } + + /** + * @param OrderDelivery $delivery + */ + public function notifyDelivery(OrderDelivery $delivery) + { + foreach ($this->notifiers as $notifier) { + $notifier->notifyDelivery($delivery); + } + } + + /** + * @param OrderDelivery $delivery + */ + public function notifyDenial(OrderDelivery $delivery) + { + foreach ($this->notifiers as $notifier) { + $notifier->notifyDenial($delivery); + } + } +}