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 @@ - + - -