Replace Paris models with Doctrine entities in Shortcodes
[MAILPOET-4364]
This commit is contained in:
@ -11,12 +11,15 @@ use MailPoet\Mailer\MailerLog;
|
||||
use MailPoet\Models\Newsletter as NewsletterModel;
|
||||
use MailPoet\Models\NewsletterSegment as NewsletterSegmentModel;
|
||||
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;
|
||||
use MailPoet\Newsletter\Renderer\Renderer;
|
||||
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;
|
||||
@ -52,6 +55,12 @@ class Newsletter {
|
||||
/** @var NewsletterLinks */
|
||||
private $newsletterLinks;
|
||||
|
||||
/** @var SendingQueuesRepository */
|
||||
private $sendingQueuesRepository;
|
||||
|
||||
/** @var SubscribersRepository */
|
||||
private $subscribersRepository;
|
||||
|
||||
public function __construct(
|
||||
WPFunctions $wp = null,
|
||||
PostsTask $postsTask = null,
|
||||
@ -81,6 +90,8 @@ class Newsletter {
|
||||
$this->newslettersRepository = ContainerWrapper::getInstance()->get(NewslettersRepository::class);
|
||||
$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);
|
||||
}
|
||||
|
||||
public function getNewsletterFromQueue($queue) {
|
||||
@ -163,13 +174,20 @@ class Newsletter {
|
||||
}
|
||||
// extract and save newsletter posts
|
||||
$this->postsTask->extractAndSave($renderedNewsletter, $newsletterEntity);
|
||||
|
||||
if ($sendingTask->queue() instanceof SendingQueueModel) {
|
||||
$sendingQueueEntity = $this->sendingQueuesRepository->findOneById($sendingTask->queue()->id);
|
||||
} else {
|
||||
$sendingQueueEntity = null;
|
||||
}
|
||||
|
||||
// update queue with the rendered and pre-processed newsletter
|
||||
$sendingTask->newsletterRenderedSubject = ShortcodesTask::process(
|
||||
$newsletter->subject,
|
||||
$renderedNewsletter['html'],
|
||||
$newsletter,
|
||||
$newsletterEntity,
|
||||
null,
|
||||
$sendingTask
|
||||
$sendingQueueEntity
|
||||
);
|
||||
// if the rendered subject is empty, use a default subject,
|
||||
// having no subject in a newsletter is considered spammy
|
||||
@ -206,12 +224,31 @@ class Newsletter {
|
||||
$renderedNewsletter['text'],
|
||||
]
|
||||
);
|
||||
|
||||
if ($newsletter instanceof NewsletterModel) {
|
||||
$newsletterEntity = $this->newslettersRepository->findOneById($newsletter->id);
|
||||
} else {
|
||||
$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 {
|
||||
$sendingQueueEntity = null;
|
||||
}
|
||||
|
||||
$preparedNewsletter = ShortcodesTask::process(
|
||||
$preparedNewsletter,
|
||||
null,
|
||||
$newsletter,
|
||||
$subscriber,
|
||||
$queue
|
||||
$newsletterEntity,
|
||||
$subscriberEntity,
|
||||
$sendingQueueEntity
|
||||
);
|
||||
if ($this->trackingEnabled) {
|
||||
$preparedNewsletter = $this->newsletterLinks->replaceSubscriberData(
|
||||
|
@ -6,53 +6,32 @@ use MailPoet\DI\ContainerWrapper;
|
||||
use MailPoet\Entities\NewsletterEntity;
|
||||
use MailPoet\Entities\SendingQueueEntity;
|
||||
use MailPoet\Entities\SubscriberEntity;
|
||||
use MailPoet\Models\Newsletter;
|
||||
use MailPoet\Models\SendingQueue;
|
||||
use MailPoet\Models\Subscriber;
|
||||
use MailPoet\Newsletter\NewslettersRepository;
|
||||
use MailPoet\Newsletter\Sending\SendingQueuesRepository;
|
||||
use MailPoet\Newsletter\Shortcodes\Shortcodes as NewsletterShortcodes;
|
||||
use MailPoet\Subscribers\SubscribersRepository;
|
||||
use MailPoet\Tasks\Sending;
|
||||
use stdClass;
|
||||
|
||||
class Shortcodes {
|
||||
/**
|
||||
* @param string $content
|
||||
* @param string|null $contentSource
|
||||
* @param stdClass|Newsletter|null $newsletter
|
||||
* @param Subscriber|null $subscriber
|
||||
* @param Sending|SendingQueue|null $queue
|
||||
* @param NewsletterEntity|null $newsletter
|
||||
* @param SubscriberEntity|null $subscriber
|
||||
* @param SendingQueueEntity|null $queue
|
||||
*/
|
||||
public static function process($content, $contentSource = null, $newsletter = null, $subscriber = null, $queue = null) {
|
||||
public static function process($content, $contentSource = null, NewsletterEntity $newsletter = null, SubscriberEntity $subscriber = null, SendingQueueEntity $queue = null) {
|
||||
/** @var NewsletterShortcodes $shortcodes */
|
||||
$shortcodes = ContainerWrapper::getInstance()->get(NewsletterShortcodes::class);
|
||||
/** @var SendingQueuesRepository $sendingQueueRepository */
|
||||
$sendingQueueRepository = ContainerWrapper::getInstance()->get(SendingQueuesRepository::class);
|
||||
/** @var NewslettersRepository $newsletterRepository */
|
||||
$newsletterRepository = ContainerWrapper::getInstance()->get(NewslettersRepository::class);
|
||||
/** @var SubscribersRepository $subscribersRepository */
|
||||
$subscribersRepository = ContainerWrapper::getInstance()->get(SubscribersRepository::class);
|
||||
|
||||
if (($queue instanceof Sending || $queue instanceof SendingQueue) && $queue->id) {
|
||||
$queue = $sendingQueueRepository->findOneById($queue->id);
|
||||
}
|
||||
if ($queue instanceof SendingQueueEntity) {
|
||||
$shortcodes->setQueue($queue);
|
||||
} else {
|
||||
$shortcodes->setQueue(null);
|
||||
}
|
||||
if (($newsletter instanceof Newsletter || $newsletter instanceof stdClass) && $newsletter->id) {
|
||||
$newsletter = $newsletterRepository->findOneById($newsletter->id);
|
||||
}
|
||||
|
||||
if ($newsletter instanceof NewsletterEntity) {
|
||||
$shortcodes->setNewsletter($newsletter);
|
||||
} else {
|
||||
$shortcodes->setNewsletter(null);
|
||||
}
|
||||
if ($subscriber instanceof Subscriber && $subscriber->id) {
|
||||
$subscriber = $subscribersRepository->findOneById($subscriber->id);
|
||||
}
|
||||
|
||||
if ($subscriber instanceof SubscriberEntity) {
|
||||
$shortcodes->setSubscriber($subscriber);
|
||||
} else {
|
||||
|
Reference in New Issue
Block a user