From cd705e5f9bedbf0a69a98900d3eb236d670df3e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joachim=20L=C3=B8vgaard?= Date: Mon, 23 Sep 2024 11:10:34 +0200 Subject: [PATCH] Fix SwiftMailer logger --- .../RegisterSwiftMailerListenerPass.php | 39 +++++++++++++++++++ .../SwiftMailerLoggerListener.php} | 16 ++++---- .../services/conditional/swiftmailer.xml | 4 +- 3 files changed, 47 insertions(+), 12 deletions(-) create mode 100644 src/DependencyInjection/Compiler/RegisterSwiftMailerListenerPass.php rename src/{EventSubscriber/SwiftMailerLoggerSubscriber.php => EventListener/SwiftMailerLoggerListener.php} (75%) diff --git a/src/DependencyInjection/Compiler/RegisterSwiftMailerListenerPass.php b/src/DependencyInjection/Compiler/RegisterSwiftMailerListenerPass.php new file mode 100644 index 0000000..00ca3c0 --- /dev/null +++ b/src/DependencyInjection/Compiler/RegisterSwiftMailerListenerPass.php @@ -0,0 +1,39 @@ +hasParameter('swiftmailer.mailers')) { + return; + } + + $mailers = $container->getParameter('swiftmailer.mailers'); + Assert::isArray($mailers); + + foreach (array_keys($mailers) as $name) { + try { + $definition = $container->findDefinition(sprintf('swiftmailer.mailer.%s', $name)); + } catch (ServiceNotFoundException) { + continue; + } + + $definition->addMethodCall('registerPlugin', [new Reference(SwiftMailerLoggerListener::class)]); + } + } +} diff --git a/src/EventSubscriber/SwiftMailerLoggerSubscriber.php b/src/EventListener/SwiftMailerLoggerListener.php similarity index 75% rename from src/EventSubscriber/SwiftMailerLoggerSubscriber.php rename to src/EventListener/SwiftMailerLoggerListener.php index 40a0588..0955e1b 100644 --- a/src/EventSubscriber/SwiftMailerLoggerSubscriber.php +++ b/src/EventListener/SwiftMailerLoggerListener.php @@ -2,15 +2,15 @@ declare(strict_types=1); -namespace Setono\SyliusMailerPlugin\EventSubscriber; +namespace Setono\SyliusMailerPlugin\EventListener; use Doctrine\Persistence\ManagerRegistry; use Setono\Doctrine\ORMTrait; use Setono\SyliusMailerPlugin\Model\SentEmailInterface; +use Swift_Events_SendEvent; use Sylius\Component\Resource\Factory\FactoryInterface; -use Symfony\Component\EventDispatcher\EventSubscriberInterface; -final class SwiftMailerLoggerSubscriber implements EventSubscriberInterface +final class SwiftMailerLoggerListener implements \Swift_Events_SendListener { use ORMTrait; @@ -21,16 +21,14 @@ public function __construct( $this->managerRegistry = $managerRegistry; } - public static function getSubscribedEvents(): array + public function beforeSendPerformed(Swift_Events_SendEvent $evt): void { - return [ - 'sendPerformed' => 'log', - ]; + // no op } - public function log(\Swift_Events_SendEvent $event): void + public function sendPerformed(Swift_Events_SendEvent $evt): void { - $message = $event->getMessage(); + $message = $evt->getMessage(); /** @var SentEmailInterface $sentEmail */ $sentEmail = $this->emailFactory->createNew(); diff --git a/src/Resources/config/services/conditional/swiftmailer.xml b/src/Resources/config/services/conditional/swiftmailer.xml index 23bd6e6..7769cdc 100644 --- a/src/Resources/config/services/conditional/swiftmailer.xml +++ b/src/Resources/config/services/conditional/swiftmailer.xml @@ -2,11 +2,9 @@ - + - -