diff --git a/lib/Subscribers/ConfirmationEmailMailer.php b/lib/Subscribers/ConfirmationEmailMailer.php index 442ceac682..6dd336b67f 100644 --- a/lib/Subscribers/ConfirmationEmailMailer.php +++ b/lib/Subscribers/ConfirmationEmailMailer.php @@ -49,7 +49,7 @@ class ConfirmationEmailMailer { $this->mailerMetaInfo = new MetaInfo; if ($subscription_url_factory === null) { - $subscription_url_factory = new SubscriptionUrlFactory($this->wp, $this->settings); + $subscription_url_factory = SubscriptionUrlFactory::getInstance(); } $this->subscription_url_factory = $subscription_url_factory; } diff --git a/lib/Subscription/SubscriptionUrlFactory.php b/lib/Subscription/SubscriptionUrlFactory.php index 5bff561ee8..899b16c909 100644 --- a/lib/Subscription/SubscriptionUrlFactory.php +++ b/lib/Subscription/SubscriptionUrlFactory.php @@ -20,9 +20,13 @@ class SubscriptionUrlFactory { /** @var SettingsController */ private $settings; - public function __construct(WPFunctions $wp, SettingsController $settings) { + /** @var LinkTokens */ + private $link_tokens; + + public function __construct(WPFunctions $wp, SettingsController $settings, LinkTokens $link_tokens) { $this->wp = $wp; $this->settings = $settings; + $this->link_tokens = $link_tokens; } function getCaptchaUrl() { @@ -59,10 +63,9 @@ class SubscriptionUrlFactory { if ($post === null || $action === null) return; $url = $this->wp->getPermalink($post); - $link_tokens = new LinkTokens; if ($subscriber !== null) { $data = [ - 'token' => $link_tokens->getToken($subscriber), + 'token' => $this->link_tokens->getToken($subscriber), 'email' => $subscriber->email, ]; } elseif (is_null($data)) { @@ -94,7 +97,7 @@ class SubscriptionUrlFactory { */ static function getInstance() { if (!self::$instance instanceof SubscriptionUrlFactory) { - self::$instance = new SubscriptionUrlFactory(new WPFunctions, new SettingsController); + self::$instance = new SubscriptionUrlFactory(new WPFunctions, new SettingsController, new LinkTokens); } return self::$instance; } diff --git a/tests/integration/API/JSON/v1/SubscribersTest.php b/tests/integration/API/JSON/v1/SubscribersTest.php index e08bf23030..89a8b5b687 100644 --- a/tests/integration/API/JSON/v1/SubscribersTest.php +++ b/tests/integration/API/JSON/v1/SubscribersTest.php @@ -24,6 +24,7 @@ use MailPoet\Models\SubscriberSegment; use MailPoet\Segments\SubscribersListings; use MailPoet\Settings\SettingsController; use MailPoet\Subscribers\ConfirmationEmailMailer; +use MailPoet\Subscribers\LinkTokens; use MailPoet\Subscribers\RequiredCustomFieldValidator; use MailPoet\Subscribers\Source; use MailPoet\Subscribers\SubscriberActions; @@ -66,7 +67,7 @@ class SubscribersTest extends \MailPoetTest { $settings, $this->captcha_session, $container->get(ConfirmationEmailMailer::class), - new SubscriptionUrlFactory($wp, $settings) + new SubscriptionUrlFactory($wp, $settings, new LinkTokens) ); $obfuscator = new FieldNameObfuscator(); $this->obfuscatedEmail = $obfuscator->obfuscate('email'); diff --git a/tests/integration/Newsletter/ShortcodesTest.php b/tests/integration/Newsletter/ShortcodesTest.php index 6bcf7df8e7..3804ae5611 100644 --- a/tests/integration/Newsletter/ShortcodesTest.php +++ b/tests/integration/Newsletter/ShortcodesTest.php @@ -13,6 +13,7 @@ use MailPoet\Newsletter\Shortcodes\Categories\Date; use MailPoet\Newsletter\Url as NewsletterUrl; use MailPoet\Referrals\ReferralDetector; use MailPoet\Settings\SettingsController; +use MailPoet\Subscribers\LinkTokens; use MailPoet\Subscription\Captcha; use MailPoet\Subscription\SubscriptionUrlFactory; use MailPoet\WooCommerce\TransactionalEmails; @@ -46,7 +47,7 @@ class ShortcodesTest extends \MailPoetTest { $this->subscriber ); $this->settings->set('tracking.enabled', false); - $this->subscription_url_factory = new SubscriptionUrlFactory(WPFunctions::get(), $this->settings); + $this->subscription_url_factory = new SubscriptionUrlFactory(WPFunctions::get(), $this->settings, new LinkTokens); } function testItCanExtractShortcodes() { diff --git a/tests/integration/Subscription/UrlTest.php b/tests/integration/Subscription/UrlTest.php index dd80189913..3e8cc43705 100644 --- a/tests/integration/Subscription/UrlTest.php +++ b/tests/integration/Subscription/UrlTest.php @@ -5,6 +5,7 @@ use Codeception\Util\Stub; use MailPoet\Features\FeaturesController; use MailPoet\Referrals\ReferralDetector; use MailPoet\Router\Router; +use MailPoet\Subscribers\LinkTokens; use MailPoet\Subscription\SubscriptionUrlFactory; use MailPoet\Models\Subscriber; use MailPoet\Models\Setting; @@ -30,7 +31,7 @@ class UrlTest extends \MailPoetTest { $wc_transactional_emails = new TransactionalEmails(WPFunctions::get(), $this->settings); $populator = new Populator($this->settings, WPFunctions::get(), new Captcha, $referral_detector, $features_controller, $wc_transactional_emails); $populator->up(); - $this->url = new SubscriptionUrlFactory(WPFunctions::get(), $this->settings); + $this->url = new SubscriptionUrlFactory(WPFunctions::get(), $this->settings, new LinkTokens); } function testItReturnsTheDefaultPageUrlIfNoPageIsSetInSettings() {