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

View File

@ -9,11 +9,11 @@ use MailPoet\DI\ContainerWrapper;
use MailPoet\Entities\NewsletterEntity;
use MailPoet\Entities\NewsletterSegmentEntity;
use MailPoet\Entities\SegmentEntity;
use MailPoet\Entities\SubscriberEntity;
use MailPoet\Logging\LoggerFactory;
use MailPoet\Mailer\MailerLog;
use MailPoet\Models\Newsletter as NewsletterModel;
use MailPoet\Models\SendingQueue as SendingQueueModel;
use MailPoet\Models\Subscriber as SubscriberModel;
use MailPoet\Newsletter\Links\Links as NewsletterLinks;
use MailPoet\Newsletter\NewslettersRepository;
use MailPoet\Newsletter\Renderer\PostProcess\OpenTracking;
@ -22,7 +22,6 @@ use MailPoet\Newsletter\Segment\NewsletterSegmentRepository;
use MailPoet\Newsletter\Sending\SendingQueuesRepository;
use MailPoet\Settings\TrackingConfig;
use MailPoet\Statistics\GATracking;
use MailPoet\Subscribers\SubscribersRepository;
use MailPoet\Util\Helpers;
use MailPoet\WP\Emoji;
use MailPoet\WP\Functions as WPFunctions;
@ -62,9 +61,6 @@ class Newsletter {
/** @var SendingQueuesRepository */
private $sendingQueuesRepository;
/** @var SubscribersRepository */
private $subscribersRepository;
/** @var NewsletterSegmentRepository */
private $newsletterSegmentRepository;
@ -98,7 +94,6 @@ class Newsletter {
$this->linksTask = ContainerWrapper::getInstance()->get(LinksTask::class);
$this->newsletterLinks = ContainerWrapper::getInstance()->get(NewsletterLinks::class);
$this->sendingQueuesRepository = ContainerWrapper::getInstance()->get(SendingQueuesRepository::class);
$this->subscribersRepository = ContainerWrapper::getInstance()->get(SubscribersRepository::class);
$this->newsletterSegmentRepository = ContainerWrapper::getInstance()->get(NewsletterSegmentRepository::class);
}
@ -220,7 +215,7 @@ class 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
// to speed the processing, join content into a continuous string
$renderedNewsletter = $queue->getNewsletterRenderedBody();
@ -239,12 +234,6 @@ class Newsletter {
$newsletterEntity = null;
}
if ($subscriber instanceof SubscriberModel) {
$subscriberEntity = $this->subscribersRepository->findOneById($subscriber->id);
} else {
$subscriberEntity = null;
}
if ($queue->queue() instanceof SendingQueueModel) {
$sendingQueueEntity = $this->sendingQueuesRepository->findOneById($queue->queue()->id);
} else {
@ -255,12 +244,12 @@ class Newsletter {
$preparedNewsletter,
null,
$newsletterEntity,
$subscriberEntity,
$subscriber,
$sendingQueueEntity
);
if ($this->trackingEnabled) {
$preparedNewsletter = $this->newsletterLinks->replaceSubscriberData(
$subscriber->id,
$subscriber->getId(),
$queue->id,
$preparedNewsletter
);