diff --git a/assets/js/src/newsletters/send.jsx b/assets/js/src/newsletters/send.jsx index 9b95efcf23..3cc64c266a 100644 --- a/assets/js/src/newsletters/send.jsx +++ b/assets/js/src/newsletters/send.jsx @@ -40,9 +40,11 @@ function validateNewsletter(newsletter) { return MailPoet.I18n.t('newsletterIsEmpty'); } } - // todo only check this if MSS is active - if (body.indexOf('[link:subscription_unsubscribe_url]') < 0 - && body.indexOf('[link:subscription_unsubscribe]') < 0 + + if ( + window.mailpoet_mss_active + && (body.indexOf('[link:subscription_unsubscribe_url]') < 0) + && (body.indexOf('[link:subscription_unsubscribe]') < 0) ) { return MailPoet.I18n.t('unsubscribeLinkMissing'); } diff --git a/lib/API/JSON/v1/SendingQueue.php b/lib/API/JSON/v1/SendingQueue.php index a9ff7098fc..03754fe580 100644 --- a/lib/API/JSON/v1/SendingQueue.php +++ b/lib/API/JSON/v1/SendingQueue.php @@ -13,6 +13,7 @@ use MailPoet\Models\SendingQueue as SendingQueueModel; use MailPoet\Newsletter\NewslettersRepository; use MailPoet\Newsletter\Scheduler\Scheduler; use MailPoet\Segments\SubscribersFinder; +use MailPoet\Services\Bridge; use MailPoet\Tasks\Sending as SendingTask; use MailPoet\Util\License\Features\Subscribers as SubscribersFeature; @@ -30,14 +31,19 @@ class SendingQueue extends APIEndpoint { /** @var NewslettersRepository */ private $newsletterRepository; + /** @var Bridge */ + private $bridge; + public function __construct( SubscribersFeature $subscribersFeature, NewslettersRepository $newsletterRepository, + Bridge $bridge, SubscribersFinder $subscribersFinder ) { $this->subscribersFeature = $subscribersFeature; $this->subscribersFinder = $subscribersFinder; $this->newsletterRepository = $newsletterRepository; + $this->bridge = $bridge; } public function add($data = []) { @@ -153,8 +159,9 @@ class SendingQueue extends APIEndpoint { return __('Poet, please add prose to your masterpiece before you send it to your followers.'); } - // todo only check this if MSS is active - if ((strpos($body, '[link:subscription_unsubscribe_url]') === false) + if ( + $this->bridge->isMailpoetSendingServiceEnabled() + && (strpos($body, '[link:subscription_unsubscribe_url]') === false) && (strpos($body, '[link:subscription_unsubscribe]') === false) ) { return __('All emails must include an "Unsubscribe" link. Add a footer widget to your email to continue.'); diff --git a/tests/integration/API/JSON/v1/SendingQueueTest.php b/tests/integration/API/JSON/v1/SendingQueueTest.php index c4f2230fe6..48160c37a0 100644 --- a/tests/integration/API/JSON/v1/SendingQueueTest.php +++ b/tests/integration/API/JSON/v1/SendingQueueTest.php @@ -14,6 +14,7 @@ use MailPoet\Models\ScheduledTask; use MailPoet\Models\SendingQueue as SendingQueueModel; use MailPoet\Newsletter\NewslettersRepository; use MailPoet\Segments\SubscribersFinder; +use MailPoet\Services\Bridge; use MailPoet\Settings\SettingsController; use MailPoet\Settings\SettingsRepository; use MailPoet\Tasks\Sending; @@ -68,6 +69,7 @@ class SendingQueueTest extends \MailPoetTest { 'check' => true, ]), $this->diContainer->get(NewslettersRepository::class), + $this->diContainer->get(Bridge::class), $this->diContainer->get(SubscribersFinder::class) ); $res = $sendingQueue->add(['newsletter_id' => $this->newsletter->id]); @@ -122,7 +124,14 @@ class SendingQueueTest extends \MailPoetTest { $newsletter->setBody(['content' => ['type' => 'container', 'columnLayout' => false, 'orientation' => 'vertical']]); $this->entityManager->persist($newsletter); $this->entityManager->flush(); - $sendingQueue = $this->diContainer->get(SendingQueueAPI::class); + $sendingQueue = new SendingQueueAPI( + $this->diContainer->get(SubscribersFeature::class), + $this->diContainer->get(NewslettersRepository::class), + Stub::make(Bridge::class, [ + 'isMailpoetSendingServiceEnabled' => true, + ]), + $this->diContainer->get(SubscribersFinder::class) + ); $response = $sendingQueue->add(['newsletter_id' => $newsletter->getId()]); $response = $response->getData(); expect($response['errors'][0])->array();