Use Newsletter\Url as service
[MAILPOET-3269]
This commit is contained in:
@ -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(),
|
||||
|
@ -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(),
|
||||
|
@ -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 '<a href="' . esc_attr($previewUrl) . '" target="_blank" title="'
|
||||
. esc_attr(__('Preview in a new tab', 'mailpoet')) . '">'
|
||||
. esc_attr($newsletter->newsletterRenderedSubject) .
|
||||
|
@ -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);
|
||||
|
@ -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,
|
||||
|
@ -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 = [];
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
),
|
||||
|
@ -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,
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -1,10 +1,9 @@
|
||||
<?php
|
||||
|
||||
namespace MailPoet\Test\Config;
|
||||
namespace MailPoet\Config;
|
||||
|
||||
use Codeception\Util\Fixtures;
|
||||
use Helper\WordPress;
|
||||
use MailPoet\Config\Shortcodes;
|
||||
use MailPoet\DI\ContainerWrapper;
|
||||
use MailPoet\Models\Newsletter;
|
||||
use MailPoet\Models\ScheduledTask;
|
||||
@ -20,8 +19,12 @@ class ShortcodesTest extends \MailPoetTest {
|
||||
public $queue;
|
||||
public $newsletter;
|
||||
|
||||
/** @var Url */
|
||||
private $newsletterUrl;
|
||||
|
||||
public function _before() {
|
||||
parent::_before();
|
||||
$this->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);
|
||||
|
@ -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(),
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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() {
|
||||
|
Reference in New Issue
Block a user