diff --git a/lib/API/JSON/ResponseBuilders/NewslettersResponseBuilder.php b/lib/API/JSON/ResponseBuilders/NewslettersResponseBuilder.php index 81e03bb29c..61a258a503 100644 --- a/lib/API/JSON/ResponseBuilders/NewslettersResponseBuilder.php +++ b/lib/API/JSON/ResponseBuilders/NewslettersResponseBuilder.php @@ -32,14 +32,19 @@ class NewslettersResponseBuilder { /** @var EntityManager */ private $entityManager; + /** @var NewsletterUrl */ + private $newsletterUrl; + public function __construct( EntityManager $entityManager, NewslettersRepository $newslettersRepository, - NewsletterStatisticsRepository $newslettersStatsRepository + NewsletterStatisticsRepository $newslettersStatsRepository, + NewsletterUrl $newsletterUrl ) { $this->newslettersStatsRepository = $newslettersStatsRepository; $this->newslettersRepository = $newslettersRepository; $this->entityManager = $entityManager; + $this->newsletterUrl = $newsletterUrl; } public function build(NewsletterEntity $newsletter, $relations = []) { @@ -125,7 +130,7 @@ class NewslettersResponseBuilder { 'statistics' => ($statistics && $newsletter->getType() !== NewsletterEntity::TYPE_NOTIFICATION) ? $statistics->asArray() : false, - 'preview_url' => NewsletterUrl::getViewInBrowserUrl( + 'preview_url' => $this->newsletterUrl->getViewInBrowserUrl( (object)[ 'id' => $newsletter->getId(), 'hash' => $newsletter->getHash(), diff --git a/lib/API/JSON/v1/Newsletters.php b/lib/API/JSON/v1/Newsletters.php index fe1ebf24b5..b17b46254c 100644 --- a/lib/API/JSON/v1/Newsletters.php +++ b/lib/API/JSON/v1/Newsletters.php @@ -72,6 +72,9 @@ class Newsletters extends APIEndpoint { /** @var NewsletterSaveController */ private $newsletterSaveController; + /** @var NewsletterUrl */ + private $newsletterUrl; + public function __construct( Listing\Handler $listingHandler, WPFunctions $wp, @@ -84,7 +87,8 @@ class Newsletters extends APIEndpoint { Emoji $emoji, SubscribersFeature $subscribersFeature, SendPreviewController $sendPreviewController, - NewsletterSaveController $newsletterSaveController + NewsletterSaveController $newsletterSaveController, + NewsletterUrl $newsletterUrl ) { $this->listingHandler = $listingHandler; $this->wp = $wp; @@ -98,6 +102,7 @@ class Newsletters extends APIEndpoint { $this->subscribersFeature = $subscribersFeature; $this->sendPreviewController = $sendPreviewController; $this->newsletterSaveController = $newsletterSaveController; + $this->newsletterUrl = $newsletterUrl; } public function get($data = []) { @@ -375,7 +380,7 @@ class Newsletters extends APIEndpoint { private function getViewInBrowserUrl(NewsletterEntity $newsletter): string { $this->fixMissingHash([$newsletter]); // Fix for MAILPOET-3275. Remove after May 2021 - $url = NewsletterUrl::getViewInBrowserUrl( + $url = $this->newsletterUrl->getViewInBrowserUrl( (object)[ 'id' => $newsletter->getId(), 'hash' => $newsletter->getHash(), diff --git a/lib/Config/Shortcodes.php b/lib/Config/Shortcodes.php index 5757a50c96..846399c942 100644 --- a/lib/Config/Shortcodes.php +++ b/lib/Config/Shortcodes.php @@ -25,16 +25,21 @@ class Shortcodes { /** @var SubscribersRepository */ private $subscribersRepository; + /** @var NewsletterUrl */ + private $newsletterUrl; + public function __construct( Pages $subscriptionPages, WPFunctions $wp, SegmentSubscribersRepository $segmentSubscribersRepository, - SubscribersRepository $subscribersRepository + SubscribersRepository $subscribersRepository, + NewsletterUrl $newsletterUrl ) { $this->subscriptionPages = $subscriptionPages; $this->wp = $wp; $this->segmentSubscribersRepository = $segmentSubscribersRepository; $this->subscribersRepository = $subscribersRepository; + $this->newsletterUrl = $newsletterUrl; } public function init() { @@ -145,7 +150,7 @@ class Shortcodes { } public function renderArchiveSubject($newsletter, $subscriber, $queue) { - $previewUrl = NewsletterUrl::getViewInBrowserUrl($newsletter, $subscriber, $queue); + $previewUrl = $this->newsletterUrl->getViewInBrowserUrl($newsletter, $subscriber, $queue); return '' . esc_attr($newsletter->newsletterRenderedSubject) . diff --git a/lib/DI/ContainerConfigurator.php b/lib/DI/ContainerConfigurator.php index 7ebdbb302a..52c4c4b5c4 100644 --- a/lib/DI/ContainerConfigurator.php +++ b/lib/DI/ContainerConfigurator.php @@ -321,6 +321,7 @@ class ContainerConfigurator implements IContainerConfigurator { $container->autowire(\MailPoet\Newsletter\NewslettersRepository::class)->setPublic(true); $container->autowire(\MailPoet\Newsletter\AutomaticEmailsRepository::class)->setPublic(true); $container->autowire(\MailPoet\Newsletter\NewsletterHtmlSanitizer::class)->setPublic(true); + $container->autowire(\MailPoet\Newsletter\Url::class)->setPublic(true); $container->autowire(\MailPoet\Newsletter\Links\Links::class)->setPublic(true); $container->autowire(\MailPoet\Newsletter\Listing\NewsletterListingRepository::class)->setPublic(true); $container->autowire(\MailPoet\Newsletter\Options\NewsletterOptionsRepository::class)->setPublic(true); diff --git a/lib/Newsletter/Shortcodes/Categories/Link.php b/lib/Newsletter/Shortcodes/Categories/Link.php index 89f3a4c75f..4a851607da 100644 --- a/lib/Newsletter/Shortcodes/Categories/Link.php +++ b/lib/Newsletter/Shortcodes/Categories/Link.php @@ -19,14 +19,19 @@ class Link implements CategoryInterface { /** @var SettingsController */ private $settings; + /** @var NewsletterUrl */ + private $newsletterUrl; + /** @var WPFunctions */ private $wp; public function __construct( SettingsController $settings, + NewsletterUrl $newsletterUrl, WPFunctions $wp ) { $this->settings = $settings; + $this->newsletterUrl = $newsletterUrl; $this->wp = $wp; } @@ -69,7 +74,7 @@ class Link implements CategoryInterface { ); case 'newsletter_view_in_browser_url': - $url = NewsletterUrl::getViewInBrowserUrl( + $url = $this->newsletterUrl->getViewInBrowserUrl( $newsletterModel, $wpUserPreview ? null : $subscriberModel, $queueModel, @@ -124,7 +129,7 @@ class Link implements CategoryInterface { $url = $subscriptionUrlFactory->getManageUrl($subscriberModel); break; case 'newsletter_view_in_browser_url': - $url = NewsletterUrl::getViewInBrowserUrl( + $url = $this->newsletterUrl->getViewInBrowserUrl( $newsletterModel, $subscriberModel, $queueModel, diff --git a/lib/Newsletter/Url.php b/lib/Newsletter/Url.php index d3cd57b2de..048651cea5 100644 --- a/lib/Newsletter/Url.php +++ b/lib/Newsletter/Url.php @@ -2,23 +2,38 @@ namespace MailPoet\Newsletter; +use MailPoet\Entities\SubscriberEntity; use MailPoet\Models\Subscriber as SubscriberModel; use MailPoet\Router\Endpoints\ViewInBrowser as ViewInBrowserEndpoint; use MailPoet\Router\Router; use MailPoet\Subscribers\LinkTokens; +use MailPoet\Subscribers\SubscribersRepository; class Url { - public static function getViewInBrowserUrl( + /** @var LinkTokens */ + private $linkTokens; + + /** @var SubscribersRepository */ + private $subscribersRepository; + + public function __construct(LinkTokens $linkTokens, SubscribersRepository $subscribersRepository) { + $this->linkTokens = $linkTokens; + $this->subscribersRepository = $subscribersRepository; + } + + public function getViewInBrowserUrl( $newsletter, $subscriber = false, $queue = false, bool $preview = true ) { - $linkTokens = new LinkTokens; if ($subscriber instanceof SubscriberModel) { - $subscriber->token = $linkTokens->getToken($subscriber); + $subscriberEntity = $this->subscribersRepository->findOneById($subscriber->id); + if ($subscriberEntity instanceof SubscriberEntity) { + $subscriber->token = $this->linkTokens->getToken($subscriberEntity); + } } - $data = self::createUrlDataObject($newsletter, $subscriber, $queue, $preview); + $data = $this->createUrlDataObject($newsletter, $subscriber, $queue, $preview); return Router::buildRequest( ViewInBrowserEndpoint::ENDPOINT, ViewInBrowserEndpoint::ACTION_VIEW, @@ -26,7 +41,7 @@ class Url { ); } - public static function createUrlDataObject($newsletter, $subscriber, $queue, $preview) { + public function createUrlDataObject($newsletter, $subscriber, $queue, $preview) { return [ (!empty($newsletter->id)) ? (int)$newsletter->id : @@ -47,7 +62,7 @@ class Url { ]; } - public static function transformUrlDataObject($data) { + public function transformUrlDataObject($data) { reset($data); if (!is_int(key($data))) return $data; $transformedData = []; diff --git a/lib/Newsletter/ViewInBrowser/ViewInBrowserController.php b/lib/Newsletter/ViewInBrowser/ViewInBrowserController.php index 8469affb20..2ffce4418c 100644 --- a/lib/Newsletter/ViewInBrowser/ViewInBrowserController.php +++ b/lib/Newsletter/ViewInBrowser/ViewInBrowserController.php @@ -13,6 +13,9 @@ class ViewInBrowserController { /** @var LinkTokens */ private $linkTokens; + /** @var NewsletterUrl */ + private $newsletterUrl; + /** @var ViewInBrowserRenderer */ private $viewInBrowserRenderer; @@ -24,6 +27,7 @@ class ViewInBrowserController { public function __construct( LinkTokens $linkTokens, + NewsletterUrl $newsletterUrl, ViewInBrowserRenderer $viewInBrowserRenderer, SendingQueuesRepository $sendingQueuesRepository, SubscribersRepository $subscribersRepository @@ -32,10 +36,11 @@ class ViewInBrowserController { $this->viewInBrowserRenderer = $viewInBrowserRenderer; $this->subscribersRepository = $subscribersRepository; $this->sendingQueuesRepository = $sendingQueuesRepository; + $this->newsletterUrl = $newsletterUrl; } public function view(array $data) { - $data = NewsletterUrl::transformUrlDataObject($data); + $data = $this->newsletterUrl->transformUrlDataObject($data); $isPreview = !empty($data['preview']); $newsletter = $this->getNewsletter($data); $subscriber = $this->getSubscriber($data); diff --git a/lib/Subscribers/ImportExport/PersonalDataExporters/NewslettersExporter.php b/lib/Subscribers/ImportExport/PersonalDataExporters/NewslettersExporter.php index 1fcd8a0372..7e49aca8d9 100644 --- a/lib/Subscribers/ImportExport/PersonalDataExporters/NewslettersExporter.php +++ b/lib/Subscribers/ImportExport/PersonalDataExporters/NewslettersExporter.php @@ -5,13 +5,20 @@ namespace MailPoet\Subscribers\ImportExport\PersonalDataExporters; use MailPoet\Models\Newsletter; use MailPoet\Models\StatisticsNewsletters; use MailPoet\Models\Subscriber; -use MailPoet\Newsletter\Url; +use MailPoet\Newsletter\Url as NewsletterUrl; use MailPoet\WP\Functions as WPFunctions; class NewslettersExporter { const LIMIT = 100; + /** @var NewsletterUrl */ + private $newsletterUrl; + + public function __construct(NewsletterUrl $newsletterUrl) { + $this->newsletterUrl = $newsletterUrl; + } + public function export($email, $page = 1) { $data = $this->exportSubscriber(Subscriber::findOne(trim($email)), $page); return [ @@ -67,7 +74,7 @@ class NewslettersExporter { if (isset($newsletters[$statisticsRow['newsletter_id']])) { $newsletterData[] = [ 'name' => WPFunctions::get()->__('Email preview', 'mailpoet'), - 'value' => Url::getViewInBrowserUrl( + 'value' => $this->newsletterUrl->getViewInBrowserUrl( $newsletters[$statisticsRow['newsletter_id']], $subscriber ), diff --git a/lib/Subscription/ManageSubscriptionFormRenderer.php b/lib/Subscription/ManageSubscriptionFormRenderer.php index 65f4ee236a..8bd84b901b 100644 --- a/lib/Subscription/ManageSubscriptionFormRenderer.php +++ b/lib/Subscription/ManageSubscriptionFormRenderer.php @@ -5,11 +5,13 @@ namespace MailPoet\Subscription; use MailPoet\Config\Renderer as TemplateRenderer; use MailPoet\Form\Block\Date as FormBlockDate; use MailPoet\Form\Renderer as FormRenderer; +use MailPoet\InvalidStateException; use MailPoet\Models\CustomField; use MailPoet\Models\Segment; use MailPoet\Models\Subscriber; use MailPoet\Settings\SettingsController; use MailPoet\Subscribers\LinkTokens; +use MailPoet\Subscribers\SubscribersRepository; use MailPoet\Util\Helpers; use MailPoet\Util\Url as UrlHelper; use MailPoet\WP\Functions as WPFunctions; @@ -39,6 +41,9 @@ class ManageSubscriptionFormRenderer { /** @var TemplateRenderer */ private $templateRenderer; + /** @var SubscribersRepository */ + private $subscribersRepository; + public function __construct( WPFunctions $wp, SettingsController $settings, @@ -46,7 +51,8 @@ class ManageSubscriptionFormRenderer { LinkTokens $linkTokens, FormRenderer $formRenderer, FormBlockDate $dateBlock, - TemplateRenderer $templateRenderer + TemplateRenderer $templateRenderer, + SubscribersRepository $subscribersRepository ) { $this->wp = $wp; $this->settings = $settings; @@ -55,6 +61,7 @@ class ManageSubscriptionFormRenderer { $this->formRenderer = $formRenderer; $this->dateBlock = $dateBlock; $this->templateRenderer = $templateRenderer; + $this->subscribersRepository = $subscribersRepository; } public function renderForm(Subscriber $subscriber, string $formState = self::FORM_STATE_NOT_SUBMITTED): string { @@ -79,11 +86,15 @@ class ManageSubscriptionFormRenderer { $form = $this->wp->applyFilters('mailpoet_manage_subscription_page_form_fields', $form); + $subscriberEntity = $this->subscribersRepository->findOneById($subscriber->id); + if (!$subscriberEntity) { + throw new InvalidStateException(); + } $templateData = [ 'actionUrl' => admin_url('admin-post.php'), 'redirectUrl' => $this->urlHelper->getCurrentUrl(), 'email' => $subscriber->email, - 'token' => $this->linkTokens->getToken($subscriber), + 'token' => $this->linkTokens->getToken($subscriberEntity), 'editEmailInfo' => __('Need to change your email address? Unsubscribe here, then simply sign up again.', 'mailpoet'), 'formHtml' => $this->formRenderer->renderBlocks($form, [], $honeypot = false, $captcha = false), 'formState' => $formState, diff --git a/lib/Tasks/State.php b/lib/Tasks/State.php index 5d9b32ee82..04f26abbf4 100644 --- a/lib/Tasks/State.php +++ b/lib/Tasks/State.php @@ -10,6 +10,13 @@ use MailPoet\Newsletter\Url as NewsletterUrl; use MailPoetVendor\Carbon\Carbon; class State { + /** @var NewsletterUrl */ + private $newsletterUrl; + + public function __construct(NewsletterUrl $newsletterUrl) { + $this->newsletterUrl = $newsletterUrl; + } + /** * @return array */ @@ -88,7 +95,7 @@ class State { 'newsletter_id' => (int)$queue->newsletterId, 'queue_id' => (int)$queue->id, 'subject' => $queue->newsletterRenderedSubject ?: $newsletter->subject, - 'preview_url' => NewsletterUrl::getViewInBrowserUrl( + 'preview_url' => $this->newsletterUrl->getViewInBrowserUrl( $newsletter, null, $queue diff --git a/tests/integration/API/JSON/v1/NewslettersTest.php b/tests/integration/API/JSON/v1/NewslettersTest.php index 591e6e8001..82952aa378 100644 --- a/tests/integration/API/JSON/v1/NewslettersTest.php +++ b/tests/integration/API/JSON/v1/NewslettersTest.php @@ -79,6 +79,9 @@ class NewslettersTest extends \MailPoetTest { /** @var NewslettersResponseBuilder */ private $newslettersResponseBuilder; + /** @var Url */ + private $newsletterUrl; + public function _before() { parent::_before(); $this->cronHelper = ContainerWrapper::getInstance()->get(CronHelper::class); @@ -88,6 +91,7 @@ class NewslettersTest extends \MailPoetTest { $this->segmentRepository = ContainerWrapper::getInstance()->get(SegmentsRepository::class); $this->newsletterSegmentRepository = ContainerWrapper::getInstance()->get(NewsletterSegmentRepository::class); $this->newslettersResponseBuilder = ContainerWrapper::getInstance()->get(NewslettersResponseBuilder::class); + $this->newsletterUrl = ContainerWrapper::getInstance()->get(Url::class); $this->endpoint = Stub::copy( ContainerWrapper::getInstance()->get(Newsletters::class), [ @@ -97,7 +101,8 @@ class NewslettersTest extends \MailPoetTest { new NewsletterStatisticsRepository( $this->diContainer->get(EntityManager::class), $this->makeEmpty(WCHelper::class) - ) + ), + $this->diContainer->get(Url::class) ), ] ); @@ -175,7 +180,7 @@ class NewslettersTest extends \MailPoetTest { 'subscribersFeature' => Stub::make(SubscribersFeature::class), ]); $response = $this->endpoint->get(['id' => $this->newsletter->getId()]); - + expect($response->status)->equals(APIResponse::STATUS_OK); $newsletter = $this->newsletterRepository->findOneById($this->newsletter->getId()); assert($newsletter instanceof NewsletterEntity); @@ -648,7 +653,7 @@ class NewslettersTest extends \MailPoetTest { $response = $this->endpoint->listing(); $previewLink = $response->data[0]['preview_url']; parse_str((string)parse_url($previewLink, PHP_URL_QUERY), $previewLinkData); - $previewLinkData = Url::transformUrlDataObject(Router::decodeRequestData($previewLinkData['data'])); + $previewLinkData = $this->newsletterUrl->transformUrlDataObject(Router::decodeRequestData($previewLinkData['data'])); expect($previewLinkData['newsletter_hash'])->notEmpty(); expect($previewLinkData['subscriber_id'])->false(); expect($previewLinkData['subscriber_token'])->false(); @@ -680,7 +685,8 @@ class NewslettersTest extends \MailPoetTest { $mocks['emoji'] ?? $this->diContainer->get(Emoji::class), $mocks['subscribersFeature'] ?? $this->diContainer->get(SubscribersFeature::class), $mocks['sendPreviewController'] ?? $this->diContainer->get(SendPreviewController::class), - $this->diContainer->get(NewsletterSaveController::class) + $this->diContainer->get(NewsletterSaveController::class), + $this->diContainer->get(Url::class) ); } @@ -710,7 +716,7 @@ class NewslettersTest extends \MailPoetTest { $optionField = $this->newsletterOptionFieldsRepository->findOneBy(['name' => $name]); assert($optionField instanceof NewsletterOptionFieldEntity); $option = new NewsletterOptionEntity($newsletter, $optionField); - $newsletter->getOptions()->add($option); + $newsletter->getOptions()->add($option); } $option->setValue($value); $this->newsletterOptionsRepository->persist($option); diff --git a/tests/integration/Config/ShortcodesTest.php b/tests/integration/Config/ShortcodesTest.php index 60a93a6ded..07608f9485 100644 --- a/tests/integration/Config/ShortcodesTest.php +++ b/tests/integration/Config/ShortcodesTest.php @@ -1,10 +1,9 @@ newsletterUrl = $this->diContainer->get(Url::class); $newsletter = Newsletter::create(); $newsletter->type = Newsletter::TYPE_STANDARD; $newsletter->status = Newsletter::STATUS_SENT; @@ -55,7 +58,7 @@ class ShortcodesTest extends \MailPoetTest { expect($link)->stringContainsString('endpoint=view_in_browser'); $parsedLink = parse_url($link, PHP_URL_QUERY); parse_str(html_entity_decode((string)$parsedLink), $data); - $requestData = Url::transformUrlDataObject( + $requestData = $this->newsletterUrl->transformUrlDataObject( Router::decodeRequestData($data['data']) ); expect($requestData['newsletter_hash'])->equals($this->newsletter->hash); diff --git a/tests/integration/Newsletter/Preview/SendPreviewControllerTest.php b/tests/integration/Newsletter/Preview/SendPreviewControllerTest.php index cc3d7bc625..3c0f686044 100644 --- a/tests/integration/Newsletter/Preview/SendPreviewControllerTest.php +++ b/tests/integration/Newsletter/Preview/SendPreviewControllerTest.php @@ -24,10 +24,14 @@ class SendPreviewControllerTest extends \MailPoetTest { /** @var NewsletterEntity */ private $newsletter; + /** @var Url */ + private $newsletterUrl; + public function _before() { parent::_before(); $this->truncateEntity(NewsletterEntity::class); $this->truncateEntity(SubscriberEntity::class); + $this->newsletterUrl = $this->diContainer->get(Url::class); $this->subscriptionUrlFactory = SubscriptionUrlFactory::getInstance(); $newsletter = new NewsletterEntity(); $newsletter->setType(NewsletterEntity::TYPE_STANDARD); @@ -47,7 +51,7 @@ class SendPreviewControllerTest extends \MailPoetTest { $wpUser->ID = 5; $wp = $this->make(WPFunctions::class, ['wpGetCurrentUser' => $wpUser]); WPFunctions::set($wp); - + $this->newsletter = $newsletter; } @@ -61,7 +65,7 @@ class SendPreviewControllerTest extends \MailPoetTest { function ($newsletter, $subscriber, $extraParams) { $unsubscribeLink = $this->subscriptionUrlFactory->getConfirmUnsubscribeUrl(null); $manageLink = $this->subscriptionUrlFactory->getManageUrl(null); - $viewInBrowserLink = Url::getViewInBrowserUrl( + $viewInBrowserLink = $this->newsletterUrl->getViewInBrowserUrl( (object)[ 'id' => $this->newsletter->getId(), 'hash' => $this->newsletter->getHash(), diff --git a/tests/integration/Newsletter/ShortcodesTest.php b/tests/integration/Newsletter/ShortcodesTest.php index 5eb98f55f2..a0c2bf8fc1 100644 --- a/tests/integration/Newsletter/ShortcodesTest.php +++ b/tests/integration/Newsletter/ShortcodesTest.php @@ -37,10 +37,18 @@ class ShortcodesTest extends \MailPoetTest { /** @var SubscriptionUrlFactory */ private $subscriptionUrlFactory; + /** @var LinkTokens */ + private $linkTokens; + + /** @var NewsletterUrl */ + private $newsletterUrl; + public function _before() { parent::_before(); $this->cleanup(); $this->settings = SettingsController::getInstance(); + $this->linkTokens = $this->diContainer->get(LinkTokens::class); + $this->newsletterUrl = $this->diContainer->get(NewsletterUrl::class); $populator = $this->diContainer->get(Populator::class); $populator->up(); $this->wPUser = $this->_createWPUser(); @@ -54,7 +62,7 @@ class ShortcodesTest extends \MailPoetTest { $this->shortcodesObject->setSubscriber($this->subscriber); $this->shortcodesObject->setWpUserPreview(false); $this->settings->set('tracking.enabled', false); - $this->subscriptionUrlFactory = new SubscriptionUrlFactory(WPFunctions::get(), $this->settings, new LinkTokens); + $this->subscriptionUrlFactory = new SubscriptionUrlFactory(WPFunctions::get(), $this->settings, $this->linkTokens); $this->entityManager->flush(); } @@ -292,7 +300,7 @@ class ShortcodesTest extends \MailPoetTest { $parsedUrlQuery = parse_url($link, PHP_URL_QUERY); $queryData = []; parse_str((string)$parsedUrlQuery, $queryData); - return NewsletterUrl::transformUrlDataObject(json_decode(base64_decode($queryData['data']), true)); + return $this->newsletterUrl->transformUrlDataObject(json_decode(base64_decode($queryData['data']), true)); } public function testItReturnsShortcodeWhenTrackingEnabled() { @@ -346,7 +354,7 @@ class ShortcodesTest extends \MailPoetTest { $this->subscriptionUrlFactory->getConfirmUnsubscribeUrl(null), $this->subscriptionUrlFactory->getUnsubscribeUrl(null), $this->subscriptionUrlFactory->getManageUrl(null), - NewsletterUrl::getViewInBrowserUrl($newsletterModel), + $this->newsletterUrl->getViewInBrowserUrl($newsletterModel), ]; $result = $shortcodesObject->process($shortcodes); // hash is returned diff --git a/tests/integration/Newsletter/ViewInBrowser/ViewInBrowserControllerTest.php b/tests/integration/Newsletter/ViewInBrowser/ViewInBrowserControllerTest.php index e1a8d1d744..205282277f 100644 --- a/tests/integration/Newsletter/ViewInBrowser/ViewInBrowserControllerTest.php +++ b/tests/integration/Newsletter/ViewInBrowser/ViewInBrowserControllerTest.php @@ -8,8 +8,8 @@ use MailPoet\Entities\ScheduledTaskEntity; use MailPoet\Entities\SendingQueueEntity; use MailPoet\Entities\SubscriberEntity; use MailPoet\Models\Newsletter; -use MailPoet\Models\Subscriber; use MailPoet\Newsletter\Sending\SendingQueuesRepository; +use MailPoet\Newsletter\Url; use MailPoet\Subscribers\LinkTokens; use MailPoet\Subscribers\SubscribersRepository; use MailPoet\Tasks\Sending as SendingTask; @@ -39,12 +39,16 @@ class ViewInBrowserControllerTest extends \MailPoetTest { /** @var SendingQueuesRepository */ private $sendingQueuesRepository; + /** @var Url */ + private $newsletterUrl; + public function _before() { // instantiate class $this->viewInBrowserController = $this->diContainer->get(ViewInBrowserController::class); $this->linkTokens = $this->diContainer->get(LinkTokens::class); $this->subscribersRepository = $this->diContainer->get(SubscribersRepository::class); $this->sendingQueuesRepository = $this->diContainer->get(SendingQueuesRepository::class); + $this->newsletterUrl = $this->diContainer->get(Url::class); // create newsletter $newsletter = Newsletter::create(); @@ -230,6 +234,7 @@ class ViewInBrowserControllerTest extends \MailPoetTest { private function createController($viewInBrowserRenderer): ViewInBrowserController { return new ViewInBrowserController( $this->linkTokens, + $this->newsletterUrl, $viewInBrowserRenderer, $this->sendingQueuesRepository, $this->subscribersRepository diff --git a/tests/integration/Tasks/StateTest.php b/tests/integration/Tasks/StateTest.php index 237c574e5a..0fbaf9e6d5 100644 --- a/tests/integration/Tasks/StateTest.php +++ b/tests/integration/Tasks/StateTest.php @@ -6,6 +6,7 @@ use MailPoet\Cron\Workers\SendingQueue\Migration; use MailPoet\Models\Newsletter; use MailPoet\Models\ScheduledTask; use MailPoet\Models\SendingQueue; +use MailPoet\Newsletter\Url; use MailPoet\Tasks\Sending as SendingTask; use MailPoet\Tasks\State; use MailPoetVendor\Idiorm\ORM; @@ -17,7 +18,9 @@ class StateTest extends \MailPoetTest { public function _before() { parent::_before(); - $this->tasksState = new State(); + $this->tasksState = new State( + $this->diContainer->get(Url::class) + ); } public function testItCanFetchBasicTasksData() {