Inject LinkTokens dependency to SubscriptionUrlFactory using DI

[MAILPOET-2381]
This commit is contained in:
Rostislav Wolny
2019-09-24 17:11:13 +02:00
committed by Jack Kitterhing
parent 0dd7b5fb7a
commit 4d3a005b20
5 changed files with 14 additions and 8 deletions

View File

@ -49,7 +49,7 @@ class ConfirmationEmailMailer {
$this->mailerMetaInfo = new MetaInfo; $this->mailerMetaInfo = new MetaInfo;
if ($subscription_url_factory === null) { 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; $this->subscription_url_factory = $subscription_url_factory;
} }

View File

@ -20,9 +20,13 @@ class SubscriptionUrlFactory {
/** @var SettingsController */ /** @var SettingsController */
private $settings; 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->wp = $wp;
$this->settings = $settings; $this->settings = $settings;
$this->link_tokens = $link_tokens;
} }
function getCaptchaUrl() { function getCaptchaUrl() {
@ -59,10 +63,9 @@ class SubscriptionUrlFactory {
if ($post === null || $action === null) return; if ($post === null || $action === null) return;
$url = $this->wp->getPermalink($post); $url = $this->wp->getPermalink($post);
$link_tokens = new LinkTokens;
if ($subscriber !== null) { if ($subscriber !== null) {
$data = [ $data = [
'token' => $link_tokens->getToken($subscriber), 'token' => $this->link_tokens->getToken($subscriber),
'email' => $subscriber->email, 'email' => $subscriber->email,
]; ];
} elseif (is_null($data)) { } elseif (is_null($data)) {
@ -94,7 +97,7 @@ class SubscriptionUrlFactory {
*/ */
static function getInstance() { static function getInstance() {
if (!self::$instance instanceof SubscriptionUrlFactory) { 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; return self::$instance;
} }

View File

@ -24,6 +24,7 @@ use MailPoet\Models\SubscriberSegment;
use MailPoet\Segments\SubscribersListings; use MailPoet\Segments\SubscribersListings;
use MailPoet\Settings\SettingsController; use MailPoet\Settings\SettingsController;
use MailPoet\Subscribers\ConfirmationEmailMailer; use MailPoet\Subscribers\ConfirmationEmailMailer;
use MailPoet\Subscribers\LinkTokens;
use MailPoet\Subscribers\RequiredCustomFieldValidator; use MailPoet\Subscribers\RequiredCustomFieldValidator;
use MailPoet\Subscribers\Source; use MailPoet\Subscribers\Source;
use MailPoet\Subscribers\SubscriberActions; use MailPoet\Subscribers\SubscriberActions;
@ -66,7 +67,7 @@ class SubscribersTest extends \MailPoetTest {
$settings, $settings,
$this->captcha_session, $this->captcha_session,
$container->get(ConfirmationEmailMailer::class), $container->get(ConfirmationEmailMailer::class),
new SubscriptionUrlFactory($wp, $settings) new SubscriptionUrlFactory($wp, $settings, new LinkTokens)
); );
$obfuscator = new FieldNameObfuscator(); $obfuscator = new FieldNameObfuscator();
$this->obfuscatedEmail = $obfuscator->obfuscate('email'); $this->obfuscatedEmail = $obfuscator->obfuscate('email');

View File

@ -13,6 +13,7 @@ use MailPoet\Newsletter\Shortcodes\Categories\Date;
use MailPoet\Newsletter\Url as NewsletterUrl; use MailPoet\Newsletter\Url as NewsletterUrl;
use MailPoet\Referrals\ReferralDetector; use MailPoet\Referrals\ReferralDetector;
use MailPoet\Settings\SettingsController; use MailPoet\Settings\SettingsController;
use MailPoet\Subscribers\LinkTokens;
use MailPoet\Subscription\Captcha; use MailPoet\Subscription\Captcha;
use MailPoet\Subscription\SubscriptionUrlFactory; use MailPoet\Subscription\SubscriptionUrlFactory;
use MailPoet\WooCommerce\TransactionalEmails; use MailPoet\WooCommerce\TransactionalEmails;
@ -46,7 +47,7 @@ class ShortcodesTest extends \MailPoetTest {
$this->subscriber $this->subscriber
); );
$this->settings->set('tracking.enabled', false); $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() { function testItCanExtractShortcodes() {

View File

@ -5,6 +5,7 @@ use Codeception\Util\Stub;
use MailPoet\Features\FeaturesController; use MailPoet\Features\FeaturesController;
use MailPoet\Referrals\ReferralDetector; use MailPoet\Referrals\ReferralDetector;
use MailPoet\Router\Router; use MailPoet\Router\Router;
use MailPoet\Subscribers\LinkTokens;
use MailPoet\Subscription\SubscriptionUrlFactory; use MailPoet\Subscription\SubscriptionUrlFactory;
use MailPoet\Models\Subscriber; use MailPoet\Models\Subscriber;
use MailPoet\Models\Setting; use MailPoet\Models\Setting;
@ -30,7 +31,7 @@ class UrlTest extends \MailPoetTest {
$wc_transactional_emails = new TransactionalEmails(WPFunctions::get(), $this->settings); $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 = new Populator($this->settings, WPFunctions::get(), new Captcha, $referral_detector, $features_controller, $wc_transactional_emails);
$populator->up(); $populator->up();
$this->url = new SubscriptionUrlFactory(WPFunctions::get(), $this->settings); $this->url = new SubscriptionUrlFactory(WPFunctions::get(), $this->settings, new LinkTokens);
} }
function testItReturnsTheDefaultPageUrlIfNoPageIsSetInSettings() { function testItReturnsTheDefaultPageUrlIfNoPageIsSetInSettings() {