Skip to content

Commit

Permalink
Fix SwiftMailer logger
Browse files Browse the repository at this point in the history
  • Loading branch information
loevgaard committed Sep 23, 2024
1 parent 22d3b73 commit cd705e5
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 12 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
<?php

declare(strict_types=1);

namespace Setono\SyliusMailerPlugin\DependencyInjection\Compiler;

use Setono\SyliusMailerPlugin\EventListener\SwiftMailerLoggerListener;
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException;
use Symfony\Component\DependencyInjection\Reference;
use Webmozart\Assert\Assert;

final class RegisterSwiftMailerListenerPass implements CompilerPassInterface
{
public function process(ContainerBuilder $container): void
{
if (!ContainerBuilder::willBeAvailable('swiftmailer/swiftmailer', \Swift_Mailer::class, ['symfony/swiftmailer-bundle'])) {
return;
}

if (!$container->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)]);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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();
Expand Down
4 changes: 1 addition & 3 deletions src/Resources/config/services/conditional/swiftmailer.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,9 @@
<container xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://symfony.com/schema/dic/services"
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
<services>
<service id="Setono\SyliusMailerPlugin\EventSubscriber\SwiftMailerLoggerSubscriber">
<service id="Setono\SyliusMailerPlugin\EventListener\SwiftMailerLoggerListener">
<argument type="service" id="doctrine"/>
<argument type="service" id="setono_sylius_mailer.factory.sent_email"/>

<tag name="kernel.event_subscriber"/>
</service>
</services>
</container>

0 comments on commit cd705e5

Please sign in to comment.