Replace Subscriber model with Doctrine in Tasks\Newsletter

[MAILPOET-4363]
This commit is contained in:
Rodrigo Primo
2022-08-27 15:45:12 -03:00
committed by Aschepikov
parent fd0acbd6cf
commit 68c3277195
2 changed files with 12 additions and 22 deletions

View File

@ -273,11 +273,17 @@ class SendingQueue {
$statistics = []; $statistics = [];
$metas = []; $metas = [];
foreach ($subscribers as $subscriber) { foreach ($subscribers as $subscriber) {
$subscriberEntity = $this->subscribersRepository->findOneById($subscriber->id);
if (!$subscriberEntity instanceof SubscriberEntity) {
continue;
}
// render shortcodes and replace subscriber data in tracked links // render shortcodes and replace subscriber data in tracked links
$preparedNewsletters[] = $preparedNewsletters[] =
$this->newsletterTask->prepareNewsletterForSending( $this->newsletterTask->prepareNewsletterForSending(
$newsletter, $newsletter,
$subscriber, $subscriberEntity,
$queue $queue
); );
// format subscriber name/address according to mailer settings // format subscriber name/address according to mailer settings
@ -288,12 +294,7 @@ class SendingQueue {
// create personalized instant unsubsribe link // create personalized instant unsubsribe link
$unsubscribeUrls[] = $this->links->getUnsubscribeUrl($queue, $subscriber->id); $unsubscribeUrls[] = $this->links->getUnsubscribeUrl($queue, $subscriber->id);
$subscriberEntity = $this->subscribersRepository->findOneById($subscriber->id); $metas[] = $this->mailerMetaInfo->getNewsletterMetaInfo($newsletter, $subscriberEntity);
if ($subscriberEntity instanceof SubscriberEntity) {
$metas[] = $this->mailerMetaInfo->getNewsletterMetaInfo($newsletter, $subscriberEntity);
} else {
$metas[] = [];
}
// keep track of values for statistics purposes // keep track of values for statistics purposes
$statistics[] = [ $statistics[] = [

View File

@ -9,11 +9,11 @@ use MailPoet\DI\ContainerWrapper;
use MailPoet\Entities\NewsletterEntity; use MailPoet\Entities\NewsletterEntity;
use MailPoet\Entities\NewsletterSegmentEntity; use MailPoet\Entities\NewsletterSegmentEntity;
use MailPoet\Entities\SegmentEntity; use MailPoet\Entities\SegmentEntity;
use MailPoet\Entities\SubscriberEntity;
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;
use MailPoet\Models\SendingQueue as SendingQueueModel; use MailPoet\Models\SendingQueue as SendingQueueModel;
use MailPoet\Models\Subscriber as SubscriberModel;
use MailPoet\Newsletter\Links\Links as NewsletterLinks; use MailPoet\Newsletter\Links\Links as NewsletterLinks;
use MailPoet\Newsletter\NewslettersRepository; use MailPoet\Newsletter\NewslettersRepository;
use MailPoet\Newsletter\Renderer\PostProcess\OpenTracking; use MailPoet\Newsletter\Renderer\PostProcess\OpenTracking;
@ -22,7 +22,6 @@ use MailPoet\Newsletter\Segment\NewsletterSegmentRepository;
use MailPoet\Newsletter\Sending\SendingQueuesRepository; use MailPoet\Newsletter\Sending\SendingQueuesRepository;
use MailPoet\Settings\TrackingConfig; use MailPoet\Settings\TrackingConfig;
use MailPoet\Statistics\GATracking; use MailPoet\Statistics\GATracking;
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;
@ -62,9 +61,6 @@ class Newsletter {
/** @var SendingQueuesRepository */ /** @var SendingQueuesRepository */
private $sendingQueuesRepository; private $sendingQueuesRepository;
/** @var SubscribersRepository */
private $subscribersRepository;
/** @var NewsletterSegmentRepository */ /** @var NewsletterSegmentRepository */
private $newsletterSegmentRepository; private $newsletterSegmentRepository;
@ -98,7 +94,6 @@ class Newsletter {
$this->linksTask = ContainerWrapper::getInstance()->get(LinksTask::class); $this->linksTask = ContainerWrapper::getInstance()->get(LinksTask::class);
$this->newsletterLinks = ContainerWrapper::getInstance()->get(NewsletterLinks::class); $this->newsletterLinks = ContainerWrapper::getInstance()->get(NewsletterLinks::class);
$this->sendingQueuesRepository = ContainerWrapper::getInstance()->get(SendingQueuesRepository::class); $this->sendingQueuesRepository = ContainerWrapper::getInstance()->get(SendingQueuesRepository::class);
$this->subscribersRepository = ContainerWrapper::getInstance()->get(SubscribersRepository::class);
$this->newsletterSegmentRepository = ContainerWrapper::getInstance()->get(NewsletterSegmentRepository::class); $this->newsletterSegmentRepository = ContainerWrapper::getInstance()->get(NewsletterSegmentRepository::class);
} }
@ -220,7 +215,7 @@ class Newsletter {
return $newsletter; return $newsletter;
} }
public function prepareNewsletterForSending($newsletter, $subscriber, $queue) { public function prepareNewsletterForSending($newsletter, SubscriberEntity $subscriber, $queue) {
// shortcodes and links will be replaced in the subject, html and text body // shortcodes and links will be replaced in the subject, html and text body
// to speed the processing, join content into a continuous string // to speed the processing, join content into a continuous string
$renderedNewsletter = $queue->getNewsletterRenderedBody(); $renderedNewsletter = $queue->getNewsletterRenderedBody();
@ -239,12 +234,6 @@ class Newsletter {
$newsletterEntity = null; $newsletterEntity = null;
} }
if ($subscriber instanceof SubscriberModel) {
$subscriberEntity = $this->subscribersRepository->findOneById($subscriber->id);
} else {
$subscriberEntity = null;
}
if ($queue->queue() instanceof SendingQueueModel) { if ($queue->queue() instanceof SendingQueueModel) {
$sendingQueueEntity = $this->sendingQueuesRepository->findOneById($queue->queue()->id); $sendingQueueEntity = $this->sendingQueuesRepository->findOneById($queue->queue()->id);
} else { } else {
@ -255,12 +244,12 @@ class Newsletter {
$preparedNewsletter, $preparedNewsletter,
null, null,
$newsletterEntity, $newsletterEntity,
$subscriberEntity, $subscriber,
$sendingQueueEntity $sendingQueueEntity
); );
if ($this->trackingEnabled) { if ($this->trackingEnabled) {
$preparedNewsletter = $this->newsletterLinks->replaceSubscriberData( $preparedNewsletter = $this->newsletterLinks->replaceSubscriberData(
$subscriber->id, $subscriber->getId(),
$queue->id, $queue->id,
$preparedNewsletter $preparedNewsletter
); );