Skip to content

Commit 4ab076d

Browse files
committed
CampaignProcessor
1 parent a2740f7 commit 4ab076d

File tree

3 files changed

+24
-6
lines changed

3 files changed

+24
-6
lines changed

resources/translations/messages.en.xlf

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,15 @@
287287
<target>mbox file path must be provided with --mailbox.</target>
288288
</trans-unit>
289289

290+
<trans-unit id="messaging.invalid_email_unconfirm">
291+
<source>Invalid email, marking unconfirmed: %email%</source>
292+
<target>Invalid email, marking unconfirmed: %email%</target>
293+
</trans-unit>
294+
<trans-unit id="messaging.failed_to_send">
295+
<source>Failed to send to: %email%</source>
296+
<target>Failed to send to: %email%</target>
297+
</trans-unit>
298+
290299
<!-- Subscription -->
291300
<trans-unit id="subscription.list_not_found">
292301
<source>Subscriber list not found.</source>

src/Domain/Messaging/Service/Processor/CampaignProcessor.php

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
use PhpList\Core\Domain\Subscription\Model\Subscriber;
1919
use Psr\Log\LoggerInterface;
2020
use Symfony\Component\Console\Output\OutputInterface;
21+
use Symfony\Contracts\Translation\TranslatorInterface;
2122
use Throwable;
2223

2324
/**
@@ -33,6 +34,7 @@ class CampaignProcessor
3334
private UserMessageRepository $userMessageRepository;
3435
private MaxProcessTimeLimiter $timeLimiter;
3536
private RequeueHandler $requeueHandler;
37+
private TranslatorInterface $translator;
3638

3739
public function __construct(
3840
RateLimitedCampaignMailer $mailer,
@@ -42,7 +44,8 @@ public function __construct(
4244
LoggerInterface $logger,
4345
UserMessageRepository $userMessageRepository,
4446
MaxProcessTimeLimiter $timeLimiter,
45-
RequeueHandler $requeueHandler
47+
RequeueHandler $requeueHandler,
48+
TranslatorInterface $translator,
4649
) {
4750
$this->mailer = $mailer;
4851
$this->entityManager = $entityManager;
@@ -52,6 +55,7 @@ public function __construct(
5255
$this->userMessageRepository = $userMessageRepository;
5356
$this->timeLimiter = $timeLimiter;
5457
$this->requeueHandler = $requeueHandler;
58+
$this->translator = $translator;
5559
}
5660

5761
public function process(Message $campaign, ?OutputInterface $output = null): void
@@ -82,7 +86,9 @@ public function process(Message $campaign, ?OutputInterface $output = null): voi
8286
if (!filter_var($subscriber->getEmail(), FILTER_VALIDATE_EMAIL)) {
8387
$this->updateUserMessageStatus($userMessage, UserMessageStatus::InvalidEmailAddress);
8488
$this->unconfirmSubscriber($subscriber);
85-
$output?->writeln('Invalid email, marking unconfirmed: ' . $subscriber->getEmail());
89+
$output?->writeln($this->translator->trans('Invalid email, marking unconfirmed: %email%', [
90+
'%email%' => $subscriber->getEmail(),
91+
]));
8692
continue;
8793
}
8894

@@ -98,7 +104,9 @@ public function process(Message $campaign, ?OutputInterface $output = null): voi
98104
'subscriber_id' => $subscriber->getId(),
99105
'campaign_id' => $campaign->getId(),
100106
]);
101-
$output?->writeln('Failed to send to: ' . $subscriber->getEmail());
107+
$output?->writeln($this->translator->trans('Failed to send to: %email%', [
108+
'%email%' => $subscriber->getEmail(),
109+
]));
102110
}
103111
}
104112

tests/Unit/Domain/Messaging/Service/Processor/CampaignProcessorTest.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
use Psr\Log\LoggerInterface;
2323
use Symfony\Component\Console\Output\OutputInterface;
2424
use Symfony\Component\Mime\Email;
25+
use Symfony\Component\Translation\Translator;
2526

2627
class CampaignProcessorTest extends TestCase
2728
{
@@ -32,7 +33,6 @@ class CampaignProcessorTest extends TestCase
3233
private LoggerInterface|MockObject $logger;
3334
private OutputInterface|MockObject $output;
3435
private CampaignProcessor $campaignProcessor;
35-
private UserMessageRepository|MockObject $userMessageRepository;
3636

3737
protected function setUp(): void
3838
{
@@ -42,17 +42,18 @@ protected function setUp(): void
4242
$this->messagePreparator = $this->createMock(MessageProcessingPreparator::class);
4343
$this->logger = $this->createMock(LoggerInterface::class);
4444
$this->output = $this->createMock(OutputInterface::class);
45-
$this->userMessageRepository = $this->createMock(UserMessageRepository::class);
45+
$userMessageRepository = $this->createMock(UserMessageRepository::class);
4646

4747
$this->campaignProcessor = new CampaignProcessor(
4848
mailer: $this->mailer,
4949
entityManager: $this->entityManager,
5050
subscriberProvider: $this->subscriberProvider,
5151
messagePreparator: $this->messagePreparator,
5252
logger: $this->logger,
53-
userMessageRepository: $this->userMessageRepository,
53+
userMessageRepository: $userMessageRepository,
5454
timeLimiter: $this->createMock(MaxProcessTimeLimiter::class),
5555
requeueHandler: $this->createMock(RequeueHandler::class),
56+
translator: new Translator('en'),
5657
);
5758
}
5859

0 commit comments

Comments
 (0)