Refactor MailPoet\Subscribers, Subscription to use new settings

[MAILPOET-1757]
This commit is contained in:
Rostislav Wolny
2019-01-30 14:01:33 +01:00
parent 9399e19e3b
commit ce7ad292b8
8 changed files with 60 additions and 23 deletions

View File

@ -3,8 +3,8 @@
namespace MailPoet\Subscribers;
use MailPoet\Mailer\Mailer;
use MailPoet\Models\Setting;
use MailPoet\Models\Subscriber;
use MailPoet\Settings\SettingsController;
use MailPoet\Subscription\Url;
use MailPoet\Util\Helpers;
use MailPoet\WP\Functions as WPFunctions;
@ -18,6 +18,8 @@ class ConfirmationEmailMailer {
/** @var WPFunctions */
private $wp;
/** @var SettingsController */
private $settings;
/**
* @param Mailer|null $mailer
@ -29,10 +31,11 @@ class ConfirmationEmailMailer {
if(!$wp) {
$this->wp = new WPFunctions;
}
$this->settings = new SettingsController();
}
function sendConfirmationEmail(Subscriber $subscriber) {
$signup_confirmation = Setting::getValue('signup_confirmation');
$signup_confirmation = $this->settings->get('signup_confirmation');
if((bool)$signup_confirmation['enabled'] === false) {
return false;

View File

@ -4,9 +4,9 @@ namespace MailPoet\Subscribers;
use MailPoet\Config\Renderer;
use MailPoet\Models\Segment;
use MailPoet\Models\Setting;
use MailPoet\Models\Subscriber;
use MailPoet\WP\Functions;
use MailPoet\Settings\SettingsController;
class NewSubscriberNotificationMailer {
@ -22,6 +22,9 @@ class NewSubscriberNotificationMailer {
/** @var Functions */
private $wordpress_functions;
/** @var SettingsController */
private $settings;
/**
* @param \MailPoet\Mailer\Mailer|null $mailer
* @param Renderer|null $renderer
@ -45,6 +48,7 @@ class NewSubscriberNotificationMailer {
} else {
$this->mailer = new \MailPoet\Mailer\Mailer(false, $this->constructSenderEmail());
}
$this->settings = new SettingsController();
}
/**
@ -54,7 +58,7 @@ class NewSubscriberNotificationMailer {
* @throws \Exception
*/
function send(Subscriber $subscriber, array $segments) {
$settings = Setting::getValue(NewSubscriberNotificationMailer::SETTINGS_KEY);
$settings = $this->settings->get(NewSubscriberNotificationMailer::SETTINGS_KEY);
if($this->isDisabled($settings)) {
return;
}

View File

@ -1,7 +1,7 @@
<?php
namespace MailPoet\Subscription;
use MailPoet\Models\Setting;
use MailPoet\Models\Subscriber;
use MailPoet\Settings\SettingsController;
class Comment {
const SPAM = 'spam';
@ -18,7 +18,8 @@ class Comment {
}
static function getSubscriptionField() {
$label = Setting::getValue(
$settings = new SettingsController();
$label = $settings->get(
'subscribe.on_comment.label',
__('Yes, please add me to your mailing list.', 'mailpoet')
);
@ -77,7 +78,8 @@ class Comment {
}
private static function subscribeAuthorOfComment($comment_id) {
$segment_ids = Setting::getValue('subscribe.on_comment.segments', array());
$settings = new SettingsController();
$segment_ids = $settings->get('subscribe.on_comment.segments', array());
if(!empty($segment_ids)) {
$comment = get_comment($comment_id);

View File

@ -8,6 +8,7 @@ use MailPoet\Models\CustomField;
use MailPoet\Models\Setting;
use MailPoet\Models\Segment;
use MailPoet\Newsletter\Scheduler\Scheduler;
use MailPoet\Settings\SettingsController;
use MailPoet\Subscribers\NewSubscriberNotificationMailer;
use MailPoet\Util\Helpers;
use MailPoet\Util\Url as UrlHelper;
@ -25,6 +26,8 @@ class Pages {
private $subscriber;
/** @var NewSubscriberNotificationMailer */
private $new_subscriber_notification_sender;
/** @var SettingsController */
private $settings;
function __construct($action = false, $data = array(), $init_shortcodes = false, $init_page_filters = false, $new_subscriber_notification_sender = null) {
$this->action = $action;
@ -37,6 +40,7 @@ class Pages {
} else {
$this->new_subscriber_notification_sender = new NewSubscriberNotificationMailer();
}
$this->settings = new SettingsController();
}
private function isPreview() {
@ -260,7 +264,7 @@ class Pages {
return $custom_field;
}, CustomField::findMany());
$segment_ids = Setting::getValue('subscription.segments', array());
$segment_ids = $this->settings->get('subscription.segments', []);
if(!empty($segment_ids)) {
$segments = Segment::getPublic()
->whereIn('id', $segment_ids)

View File

@ -2,11 +2,13 @@
namespace MailPoet\Subscription;
use MailPoet\Models\Setting;
use MailPoet\Models\Subscriber;
use MailPoet\Settings\SettingsController;
class Registration {
static function extendForm() {
$label = Setting::getValue(
$settings = new SettingsController();
$label = $settings->get(
'subscribe.on_register.label',
__('Yes, please add me to your mailing list.', 'mailpoet')
);
@ -56,9 +58,10 @@ class Registration {
}
private static function subscribeNewUser($name, $email) {
$segment_ids = Setting::getValue(
$settings = new SettingsController();
$segment_ids = $settings->get(
'subscribe.on_register.segments',
array()
[]
);
if(!empty($segment_ids)) {

View File

@ -4,21 +4,21 @@ namespace MailPoet\Subscription;
use MailPoet\Router\Router;
use MailPoet\Router\Endpoints\Subscription as SubscriptionEndpoint;
use MailPoet\Models\Subscriber;
use MailPoet\Models\Setting;
use MailPoet\Settings\SettingsController;
class Url {
static function getConfirmationUrl(Subscriber $subscriber = null) {
$post = get_post(Setting::getValue('subscription.pages.confirmation'));
$post = get_post(self::getSetting('subscription.pages.confirmation'));
return self::getSubscriptionUrl($post, 'confirm', $subscriber);
}
static function getManageUrl(Subscriber $subscriber = null) {
$post = get_post(Setting::getValue('subscription.pages.manage'));
$post = get_post(self::getSetting('subscription.pages.manage'));
return self::getSubscriptionUrl($post, 'manage', $subscriber);
}
static function getUnsubscribeUrl(Subscriber $subscriber = null) {
$post = get_post(Setting::getValue('subscription.pages.unsubscribe'));
$post = get_post(self::getSetting('subscription.pages.unsubscribe'));
return self::getSubscriptionUrl($post, 'unsubscribe', $subscriber);
}
@ -57,4 +57,9 @@ class Url {
return $url;
}
static private function getSetting($key) {
$setting = new SettingsController();
return $setting->get($key);
}
}

View File

@ -8,7 +8,9 @@ use MailPoet\Mailer\Mailer;
use MailPoet\Models\Segment;
use MailPoet\Models\Setting;
use MailPoet\Models\Subscriber;
use MailPoet\WP\Functions;
use MailPoet\Settings\SettingsController;
class NewSubscriberNotificationMailerTest extends \MailPoetTest {
@ -18,23 +20,27 @@ class NewSubscriberNotificationMailerTest extends \MailPoetTest {
/** @var Segment[] */
private $segments;
/** @var SettingsController */
private $settings;
function _before() {
$this->subscriber = Subscriber::create();
$this->subscriber->email = 'subscriber@example.com';
$this->segments = [Segment::create(), Segment::create()];
$this->segments[0]->name = 'List1';
$this->segments[1]->name = 'List2';
$this->settings = new SettingsController();
}
function testItDoesNotSendIfNoSettings() {
Setting::setValue(NewSubscriberNotificationMailer::SETTINGS_KEY, null);
$this->settings->set(NewSubscriberNotificationMailer::SETTINGS_KEY, null);
$mailer = Stub::makeEmpty(Mailer::class, ['getSenderNameAndAddress' => Expected::never()], $this);
$service = new NewSubscriberNotificationMailer($mailer);
$service->send($this->subscriber, $this->segments);
}
function testItDoesNotSendIfSettingsDoesNotHaveEnabled() {
Setting::setValue(NewSubscriberNotificationMailer::SETTINGS_KEY, []);
$this->settings->set(NewSubscriberNotificationMailer::SETTINGS_KEY, []);
$mailer = Stub::makeEmpty(Mailer::class, ['getSenderNameAndAddress' => Expected::never()], $this);
$service = new NewSubscriberNotificationMailer($mailer);
$service->send($this->subscriber, $this->segments);
@ -42,21 +48,21 @@ class NewSubscriberNotificationMailerTest extends \MailPoetTest {
function testItDoesNotSendIfSettingsDoesNotHaveAddress() {
Setting::setValue(NewSubscriberNotificationMailer::SETTINGS_KEY, ['enabled' => false]);
$this->settings->set(NewSubscriberNotificationMailer::SETTINGS_KEY, ['enabled' => false]);
$mailer = Stub::makeEmpty(Mailer::class, ['getSenderNameAndAddress' => Expected::never()], $this);
$service = new NewSubscriberNotificationMailer($mailer);
$service->send($this->subscriber, $this->segments);
}
function testItDoesNotSendIfDisabled() {
Setting::setValue(NewSubscriberNotificationMailer::SETTINGS_KEY, ['enabled' => false, 'address' => 'a@b.c']);
$this->settings->set(NewSubscriberNotificationMailer::SETTINGS_KEY, ['enabled' => false, 'address' => 'a@b.c']);
$mailer = Stub::makeEmpty(Mailer::class, ['getSenderNameAndAddress' => Expected::never()], $this);
$service = new NewSubscriberNotificationMailer($mailer);
$service->send($this->subscriber, $this->segments);
}
function testItSends() {
Setting::setValue(NewSubscriberNotificationMailer::SETTINGS_KEY, ['enabled' => true, 'address' => 'a@b.c']);
$this->settings->set(NewSubscriberNotificationMailer::SETTINGS_KEY, ['enabled' => true, 'address' => 'a@b.c']);
$mailer = Stub::makeEmpty(Mailer::class, [
'getSenderNameAndAddress' =>
@ -85,7 +91,9 @@ class NewSubscriberNotificationMailerTest extends \MailPoetTest {
}
function testItRemovesWwwFromSenderAddress() {
Setting::setValue(NewSubscriberNotificationMailer::SETTINGS_KEY, ['enabled' => true,'address' => 'a@b.c']);
$this->settings->set(NewSubscriberNotificationMailer::SETTINGS_KEY, ['enabled' => true,'address' => 'a@b.c']);
$home_backup = \MailPoet\WP\get_option('home');
update_option( 'home', 'http://www.example.com/xyz' );
$mailer = Stub::makeEmpty(Mailer::class, [
'getSenderNameAndAddress' =>
@ -105,5 +113,10 @@ class NewSubscriberNotificationMailerTest extends \MailPoetTest {
$service = new NewSubscriberNotificationMailer($mailer, null, $functions);
$service->send($this->subscriber, $this->segments);
update_option('home', $home_backup);
}
function _after() {
\ORM::raw_execute('TRUNCATE ' . Setting::$_table);
}
}

View File

@ -9,7 +9,9 @@ use MailPoet\Models\Segment as SegmentModel;
use MailPoet\Models\Setting as SettingModel;
use MailPoet\Models\Setting;
use MailPoet\Models\Subscriber as SubscriberModel;
use MailPoet\Settings\SettingsController;
use MailPoet\Subscription\Form;
use MailPoet\Test\Cron\Workers\SendingErrorHandlerTest;
use MailPoet\Util\Security;
class FormTest extends \MailPoetTest {
@ -19,7 +21,8 @@ class FormTest extends \MailPoetTest {
function _before() {
parent::_before();
Setting::setValue('sender', array(
$settings = new SettingsController();
$settings->set('sender', array(
'name' => 'John Doe',
'address' => 'john.doe@example.com'
));