From bd3b4f1e93813b2c7bdfd62b51558d543a94f54d Mon Sep 17 00:00:00 2001 From: Sam Najian Date: Thu, 7 Jul 2022 14:52:30 +0200 Subject: [PATCH] Remove Newsletter model usages [MAILPOET-4361] --- .../NewslettersResponseBuilder.php | 7 ++----- mailpoet/lib/API/JSON/v1/Newsletters.php | 8 +------ .../Newsletter/Shortcodes/Categories/Link.php | 21 +++++-------------- mailpoet/lib/Newsletter/Url.php | 13 ++++-------- .../Preview/SendPreviewControllerTest.php | 7 +------ .../integration/Newsletter/ShortcodesTest.php | 4 +--- 6 files changed, 14 insertions(+), 46 deletions(-) diff --git a/mailpoet/lib/API/JSON/ResponseBuilders/NewslettersResponseBuilder.php b/mailpoet/lib/API/JSON/ResponseBuilders/NewslettersResponseBuilder.php index 5eb0f48204..ec641d292b 100644 --- a/mailpoet/lib/API/JSON/ResponseBuilders/NewslettersResponseBuilder.php +++ b/mailpoet/lib/API/JSON/ResponseBuilders/NewslettersResponseBuilder.php @@ -138,14 +138,11 @@ class NewslettersResponseBuilder { ? $statistics->asArray() : false, 'preview_url' => $this->newsletterUrl->getViewInBrowserUrl( - (object)[ - 'id' => $newsletter->getId(), - 'hash' => $newsletter->getHash(), - ], + $newsletter, null, in_array($newsletter->getStatus(), [NewsletterEntity::STATUS_SENT, NewsletterEntity::STATUS_SENDING], true) ? $latestQueue - : false + : null ), ]; diff --git a/mailpoet/lib/API/JSON/v1/Newsletters.php b/mailpoet/lib/API/JSON/v1/Newsletters.php index c24a1c11cc..2ca308aa16 100644 --- a/mailpoet/lib/API/JSON/v1/Newsletters.php +++ b/mailpoet/lib/API/JSON/v1/Newsletters.php @@ -399,13 +399,7 @@ class Newsletters extends APIEndpoint { private function getViewInBrowserUrl(NewsletterEntity $newsletter): string { $this->fixMissingHash([$newsletter]); // Fix for MAILPOET-3275. Remove after May 2021 - $url = $this->newsletterUrl->getViewInBrowserUrl( - (object)[ - 'id' => $newsletter->getId(), - 'hash' => $newsletter->getHash(), - ] - ); - + $url = $this->newsletterUrl->getViewInBrowserUrl($newsletter); // strip protocol to avoid mix content error return preg_replace('/^https?:/i', '', $url); } diff --git a/mailpoet/lib/Newsletter/Shortcodes/Categories/Link.php b/mailpoet/lib/Newsletter/Shortcodes/Categories/Link.php index 47ff6810d1..8a6b5b6207 100644 --- a/mailpoet/lib/Newsletter/Shortcodes/Categories/Link.php +++ b/mailpoet/lib/Newsletter/Shortcodes/Categories/Link.php @@ -5,7 +5,6 @@ namespace MailPoet\Newsletter\Shortcodes\Categories; use MailPoet\Entities\NewsletterEntity; use MailPoet\Entities\SendingQueueEntity; use MailPoet\Entities\SubscriberEntity; -use MailPoet\Models\Newsletter as NewsletterModel; use MailPoet\Models\SendingQueue; use MailPoet\Models\Subscriber as SubscriberModel; use MailPoet\Newsletter\Url as NewsletterUrl; @@ -51,7 +50,6 @@ class Link implements CategoryInterface { ): ?string { $subscriptionUrlFactory = SubscriptionUrlFactory::getInstance(); $subscriberModel = $this->getSubscriberModel($subscriber); - $newsletterModel = $this->getNewsletterModel($newsletter); $queueModel = $this->getQueueModel($queue); switch ($shortcodeDetails['action']) { @@ -81,7 +79,7 @@ class Link implements CategoryInterface { case 'newsletter_view_in_browser_url': $url = $this->newsletterUrl->getViewInBrowserUrl( - $newsletterModel, + $newsletter, $wpUserPreview ? null : $subscriberModel, $queueModel, $wpUserPreview @@ -112,7 +110,7 @@ class Link implements CategoryInterface { public function processUrl($action, $url, $queue, $wpUserPreview = false): string { if ($wpUserPreview) return $url; - return ($queue !== false && $this->trackingConfig->isEmailTrackingEnabled()) ? + return ($queue && $this->trackingConfig->isEmailTrackingEnabled()) ? self::getFullShortcode($action) : $url; } @@ -125,22 +123,21 @@ class Link implements CategoryInterface { $wpUserPreview = false ): ?string { $subscriberModel = $this->getSubscriberModel($subscriber); - $newsletterModel = $this->getNewsletterModel($newsletter); $queueModel = $this->getQueueModel($queue); $subscriptionUrlFactory = SubscriptionUrlFactory::getInstance(); switch ($shortcodeAction) { case 'subscription_unsubscribe_url': - $url = $subscriptionUrlFactory->getConfirmUnsubscribeUrl($subscriber, self::getSendingQueueId($queue)); + $url = $subscriptionUrlFactory->getConfirmUnsubscribeUrl($subscriber, self::getSendingQueueId($queue ? $queue) : null); break; case 'subscription_instant_unsubscribe_url': - $url = $subscriptionUrlFactory->getUnsubscribeUrl($subscriber, self::getSendingQueueId($queue)); + $url = $subscriptionUrlFactory->getUnsubscribeUrl($subscriber, self::getSendingQueueId($queue ? $queue) : null); break; case 'subscription_manage_url': $url = $subscriptionUrlFactory->getManageUrl($subscriber); break; case 'newsletter_view_in_browser_url': $url = $this->newsletterUrl->getViewInBrowserUrl( - $newsletterModel, + $newsletter, $subscriberModel, $queueModel, false @@ -184,14 +181,6 @@ class Link implements CategoryInterface { return null; } - // temporary function until Links are refactored to Doctrine - private function getNewsletterModel(NewsletterEntity $newsletter = null): ?NewsletterModel { - if (!$newsletter) return null; - $newsletterModel = NewsletterModel::where('id', $newsletter->getId())->findOne(); - if ($newsletterModel) return $newsletterModel; - return null; - } - // temporary function until Links are refactored to Doctrine private function getQueueModel(SendingQueueEntity $queue = null): ?SendingQueue { if (!$queue) return null; diff --git a/mailpoet/lib/Newsletter/Url.php b/mailpoet/lib/Newsletter/Url.php index 0e6d0eb8c5..cacf6c5ddc 100644 --- a/mailpoet/lib/Newsletter/Url.php +++ b/mailpoet/lib/Newsletter/Url.php @@ -27,7 +27,7 @@ class Url { } public function getViewInBrowserUrl( - $newsletter, + NewsletterEntity $newsletter = null, $subscriber = false, $queue = false, bool $preview = true @@ -46,14 +46,9 @@ class Url { ); } - public function createUrlDataObject($newsletter, $subscriber, $queue, $preview) { - if ($newsletter instanceof NewsletterEntity) { - $newsletterId = (!empty($newsletter->getId())) ? (int)$newsletter->getId() : 0; - $newsletterHash = (!empty($newsletter->getHash())) ? $newsletter->getHash() : 0; - } else { - $newsletterId = (!empty($newsletter->id)) ? (int)$newsletter->id : 0; - $newsletterHash = (!empty($newsletter->hash)) ? $newsletter->hash : 0; - } + public function createUrlDataObject(NewsletterEntity $newsletter = null, $subscriber, $queue, $preview) { + $newsletterId = $newsletter && $newsletter->getId() ? $newsletter->getId() : 0; + $newsletterHash = $newsletter && $newsletter->getHash() ? $newsletter->getHash() : 0; if ($queue instanceof SendingQueueEntity) { $sendingQueueId = (!empty($queue->getId())) ? (int)$queue->getId() : 0; diff --git a/mailpoet/tests/integration/Newsletter/Preview/SendPreviewControllerTest.php b/mailpoet/tests/integration/Newsletter/Preview/SendPreviewControllerTest.php index 03442f3da7..e0cc5542de 100644 --- a/mailpoet/tests/integration/Newsletter/Preview/SendPreviewControllerTest.php +++ b/mailpoet/tests/integration/Newsletter/Preview/SendPreviewControllerTest.php @@ -66,12 +66,7 @@ class SendPreviewControllerTest extends \MailPoetTest { function ($newsletter, $subscriber, $extraParams) { $unsubscribeLink = $this->subscriptionUrlFactory->getConfirmUnsubscribeUrl(null); $manageLink = $this->subscriptionUrlFactory->getManageUrl(null); - $viewInBrowserLink = $this->newsletterUrl->getViewInBrowserUrl( - (object)[ - 'id' => $this->newsletter->getId(), - 'hash' => $this->newsletter->getHash(), - ] - ); + $viewInBrowserLink = $this->newsletterUrl->getViewInBrowserUrl($this->newsletter); $mailerMetaInfo = new MetaInfo; expect(is_array($newsletter))->true(); diff --git a/mailpoet/tests/integration/Newsletter/ShortcodesTest.php b/mailpoet/tests/integration/Newsletter/ShortcodesTest.php index f6dad3a1e5..ffd6e72567 100644 --- a/mailpoet/tests/integration/Newsletter/ShortcodesTest.php +++ b/mailpoet/tests/integration/Newsletter/ShortcodesTest.php @@ -9,7 +9,6 @@ use MailPoet\Entities\SendingQueueEntity; use MailPoet\Entities\SubscriberCustomFieldEntity; use MailPoet\Entities\SubscriberEntity; use MailPoet\Models\Newsletter; -use MailPoet\Models\Newsletter as NewsletterModel; use MailPoet\Models\Subscriber; use MailPoet\Newsletter\Shortcodes\Categories\Date; use MailPoet\Newsletter\Shortcodes\Shortcodes; @@ -352,7 +351,6 @@ class ShortcodesTest extends \MailPoetTest { $shortcodesObject = $this->shortcodesObject; $shortcodesObject->setWpUserPreview(true); $shortcodesObject->setSubscriber(null); - $newsletterModel = NewsletterModel::where('id', $this->newsletter->getId())->findOne(); $shortcodes = [ '[link:subscription_unsubscribe_url]', '[link:subscription_instant_unsubscribe_url]', @@ -363,7 +361,7 @@ class ShortcodesTest extends \MailPoetTest { $this->subscriptionUrlFactory->getConfirmUnsubscribeUrl(null), $this->subscriptionUrlFactory->getUnsubscribeUrl(null), $this->subscriptionUrlFactory->getManageUrl(null), - $this->newsletterUrl->getViewInBrowserUrl($newsletterModel), + $this->newsletterUrl->getViewInBrowserUrl($this->newsletter), ]; $result = $shortcodesObject->process($shortcodes); // hash is returned