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;
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;
}

View File

@ -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;
}

View File

@ -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');

View File

@ -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() {

View File

@ -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() {