Rewrite SendingErrorHandler using Doctrine
[MAILPOET-5682]
This commit is contained in:
@ -2,30 +2,36 @@
|
||||
|
||||
namespace MailPoet\Cron\Workers\SendingQueue;
|
||||
|
||||
use MailPoet\Entities\ScheduledTaskEntity;
|
||||
use MailPoet\Mailer\MailerError;
|
||||
use MailPoet\Mailer\MailerLog;
|
||||
use MailPoet\Tasks\Sending as SendingTask;
|
||||
use MailPoet\Newsletter\Sending\ScheduledTaskSubscribersRepository;
|
||||
|
||||
class SendingErrorHandler {
|
||||
/** @var ScheduledTaskSubscribersRepository */
|
||||
private $scheduledTaskSubscribersRepository;
|
||||
|
||||
/** @var SendingThrottlingHandler */
|
||||
private $throttlingHandler;
|
||||
|
||||
public function __construct(
|
||||
ScheduledTaskSubscribersRepository $scheduledTaskSubscribersRepository,
|
||||
SendingThrottlingHandler $throttlingHandler
|
||||
) {
|
||||
$this->scheduledTaskSubscribersRepository = $scheduledTaskSubscribersRepository;
|
||||
$this->throttlingHandler = $throttlingHandler;
|
||||
}
|
||||
|
||||
public function processError(
|
||||
MailerError $error,
|
||||
SendingTask $sendingTask,
|
||||
ScheduledTaskEntity $task,
|
||||
array $preparedSubscribersIds,
|
||||
array $preparedSubscribers
|
||||
) {
|
||||
if ($error->getLevel() === MailerError::LEVEL_HARD) {
|
||||
return $this->processHardError($error);
|
||||
}
|
||||
$this->processSoftError($error, $sendingTask, $preparedSubscribersIds, $preparedSubscribers);
|
||||
$this->processSoftError($error, $task, $preparedSubscribersIds, $preparedSubscribers);
|
||||
}
|
||||
|
||||
private function processHardError(MailerError $error) {
|
||||
@ -40,11 +46,11 @@ class SendingErrorHandler {
|
||||
}
|
||||
}
|
||||
|
||||
private function processSoftError(MailerError $error, SendingTask $sendingTask, $preparedSubscribersIds, $preparedSubscribers) {
|
||||
private function processSoftError(MailerError $error, ScheduledTaskEntity $task, $preparedSubscribersIds, $preparedSubscribers) {
|
||||
foreach ($error->getSubscriberErrors() as $subscriberError) {
|
||||
$subscriberIdIndex = array_search($subscriberError->getEmail(), $preparedSubscribers);
|
||||
$message = $subscriberError->getMessage() ?: $error->getMessage();
|
||||
$sendingTask->saveSubscriberError($preparedSubscribersIds[$subscriberIdIndex], $message);
|
||||
$this->scheduledTaskSubscribersRepository->saveError($task, $preparedSubscribersIds[$subscriberIdIndex], $message ?? '');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user