Refactor markNewsletterAsSent() to use Doctrine instead of Paris

[MAILPOET-4363]
This commit is contained in:
Rodrigo Primo
2022-08-27 12:23:26 -03:00
committed by Aschepikov
parent a4bb49852d
commit 05664a0c6a
2 changed files with 11 additions and 8 deletions

View File

@@ -219,7 +219,7 @@ class SendingQueue {
); );
$queue->removeSubscribers($subscribersToRemove); $queue->removeSubscribers($subscribersToRemove);
if (!$queue->countToProcess) { if (!$queue->countToProcess) {
$this->newsletterTask->markNewsletterAsSent($newsletter, $queue); $this->newsletterTask->markNewsletterAsSent($newsletterEntity, $queue);
continue; continue;
} }
// if there aren't any subscribers to process in batch (e.g. all unsubscribed or were deleted) continue with next batch // if there aren't any subscribers to process in batch (e.g. all unsubscribed or were deleted) continue with next batch
@@ -250,9 +250,9 @@ class SendingQueue {
'completed newsletter sending', 'completed newsletter sending',
['newsletter_id' => $newsletter->id, 'task_id' => $queue->taskId] ['newsletter_id' => $newsletter->id, 'task_id' => $queue->taskId]
); );
$this->newsletterTask->markNewsletterAsSent($newsletter, $queue);
$newsletter = $this->newslettersRepository->findOneById($newsletter->id); $newsletter = $this->newslettersRepository->findOneById($newsletter->id);
assert($newsletter instanceof NewsletterEntity); assert($newsletter instanceof NewsletterEntity);
$this->newsletterTask->markNewsletterAsSent($newsletter, $queue);
$this->statsNotificationsScheduler->schedule($newsletter); $this->statsNotificationsScheduler->schedule($newsletter);
} }
$this->enforceSendingAndExecutionLimits($timer); $this->enforceSendingAndExecutionLimits($timer);

View File

@@ -6,6 +6,7 @@ use MailPoet\Cron\Workers\SendingQueue\Tasks\Links as LinksTask;
use MailPoet\Cron\Workers\SendingQueue\Tasks\Posts as PostsTask; use MailPoet\Cron\Workers\SendingQueue\Tasks\Posts as PostsTask;
use MailPoet\Cron\Workers\SendingQueue\Tasks\Shortcodes as ShortcodesTask; use MailPoet\Cron\Workers\SendingQueue\Tasks\Shortcodes as ShortcodesTask;
use MailPoet\DI\ContainerWrapper; use MailPoet\DI\ContainerWrapper;
use MailPoet\Entities\NewsletterEntity;
use MailPoet\Logging\LoggerFactory; use MailPoet\Logging\LoggerFactory;
use MailPoet\Mailer\MailerLog; use MailPoet\Mailer\MailerLog;
use MailPoet\Models\Newsletter as NewsletterModel; use MailPoet\Models\Newsletter as NewsletterModel;
@@ -23,6 +24,7 @@ use MailPoet\Subscribers\SubscribersRepository;
use MailPoet\Util\Helpers; use MailPoet\Util\Helpers;
use MailPoet\WP\Emoji; use MailPoet\WP\Emoji;
use MailPoet\WP\Functions as WPFunctions; use MailPoet\WP\Functions as WPFunctions;
use MailPoetVendor\Carbon\Carbon;
class Newsletter { class Newsletter {
public $trackingEnabled; public $trackingEnabled;
@@ -268,15 +270,16 @@ class Newsletter {
]; ];
} }
public function markNewsletterAsSent($newsletter, $queue) { public function markNewsletterAsSent(NewsletterEntity $newsletter, $queue) {
// if it's a standard or notification history newsletter, update its status // if it's a standard or notification history newsletter, update its status
if ( if (
$newsletter->type === NewsletterModel::TYPE_STANDARD || $newsletter->getType() === NewsletterModel::TYPE_STANDARD ||
$newsletter->type === NewsletterModel::TYPE_NOTIFICATION_HISTORY $newsletter->getType() === NewsletterModel::TYPE_NOTIFICATION_HISTORY
) { ) {
$newsletter->status = NewsletterModel::STATUS_SENT; $newsletter->setStatus(NewsletterModel::STATUS_SENT);
$newsletter->sentAt = $queue->processedAt; $newsletter->setSentAt(new Carbon($queue->processedAt));
$newsletter->save(); $this->newslettersRepository->persist($newsletter);
$this->newslettersRepository->flush();
} }
} }