Refactor MailPoet\Subscribers, Subscription to use new settings
[MAILPOET-1757]
This commit is contained in:
@ -3,8 +3,8 @@
|
|||||||
namespace MailPoet\Subscribers;
|
namespace MailPoet\Subscribers;
|
||||||
|
|
||||||
use MailPoet\Mailer\Mailer;
|
use MailPoet\Mailer\Mailer;
|
||||||
use MailPoet\Models\Setting;
|
|
||||||
use MailPoet\Models\Subscriber;
|
use MailPoet\Models\Subscriber;
|
||||||
|
use MailPoet\Settings\SettingsController;
|
||||||
use MailPoet\Subscription\Url;
|
use MailPoet\Subscription\Url;
|
||||||
use MailPoet\Util\Helpers;
|
use MailPoet\Util\Helpers;
|
||||||
use MailPoet\WP\Functions as WPFunctions;
|
use MailPoet\WP\Functions as WPFunctions;
|
||||||
@ -18,6 +18,8 @@ class ConfirmationEmailMailer {
|
|||||||
|
|
||||||
/** @var WPFunctions */
|
/** @var WPFunctions */
|
||||||
private $wp;
|
private $wp;
|
||||||
|
/** @var SettingsController */
|
||||||
|
private $settings;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Mailer|null $mailer
|
* @param Mailer|null $mailer
|
||||||
@ -29,10 +31,11 @@ class ConfirmationEmailMailer {
|
|||||||
if(!$wp) {
|
if(!$wp) {
|
||||||
$this->wp = new WPFunctions;
|
$this->wp = new WPFunctions;
|
||||||
}
|
}
|
||||||
|
$this->settings = new SettingsController();
|
||||||
}
|
}
|
||||||
|
|
||||||
function sendConfirmationEmail(Subscriber $subscriber) {
|
function sendConfirmationEmail(Subscriber $subscriber) {
|
||||||
$signup_confirmation = Setting::getValue('signup_confirmation');
|
$signup_confirmation = $this->settings->get('signup_confirmation');
|
||||||
|
|
||||||
if((bool)$signup_confirmation['enabled'] === false) {
|
if((bool)$signup_confirmation['enabled'] === false) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -4,9 +4,9 @@ namespace MailPoet\Subscribers;
|
|||||||
|
|
||||||
use MailPoet\Config\Renderer;
|
use MailPoet\Config\Renderer;
|
||||||
use MailPoet\Models\Segment;
|
use MailPoet\Models\Segment;
|
||||||
use MailPoet\Models\Setting;
|
|
||||||
use MailPoet\Models\Subscriber;
|
use MailPoet\Models\Subscriber;
|
||||||
use MailPoet\WP\Functions;
|
use MailPoet\WP\Functions;
|
||||||
|
use MailPoet\Settings\SettingsController;
|
||||||
|
|
||||||
class NewSubscriberNotificationMailer {
|
class NewSubscriberNotificationMailer {
|
||||||
|
|
||||||
@ -22,6 +22,9 @@ class NewSubscriberNotificationMailer {
|
|||||||
/** @var Functions */
|
/** @var Functions */
|
||||||
private $wordpress_functions;
|
private $wordpress_functions;
|
||||||
|
|
||||||
|
/** @var SettingsController */
|
||||||
|
private $settings;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param \MailPoet\Mailer\Mailer|null $mailer
|
* @param \MailPoet\Mailer\Mailer|null $mailer
|
||||||
* @param Renderer|null $renderer
|
* @param Renderer|null $renderer
|
||||||
@ -45,6 +48,7 @@ class NewSubscriberNotificationMailer {
|
|||||||
} else {
|
} else {
|
||||||
$this->mailer = new \MailPoet\Mailer\Mailer(false, $this->constructSenderEmail());
|
$this->mailer = new \MailPoet\Mailer\Mailer(false, $this->constructSenderEmail());
|
||||||
}
|
}
|
||||||
|
$this->settings = new SettingsController();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -54,7 +58,7 @@ class NewSubscriberNotificationMailer {
|
|||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
function send(Subscriber $subscriber, array $segments) {
|
function send(Subscriber $subscriber, array $segments) {
|
||||||
$settings = Setting::getValue(NewSubscriberNotificationMailer::SETTINGS_KEY);
|
$settings = $this->settings->get(NewSubscriberNotificationMailer::SETTINGS_KEY);
|
||||||
if($this->isDisabled($settings)) {
|
if($this->isDisabled($settings)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace MailPoet\Subscription;
|
namespace MailPoet\Subscription;
|
||||||
use MailPoet\Models\Setting;
|
|
||||||
use MailPoet\Models\Subscriber;
|
use MailPoet\Models\Subscriber;
|
||||||
|
use MailPoet\Settings\SettingsController;
|
||||||
|
|
||||||
class Comment {
|
class Comment {
|
||||||
const SPAM = 'spam';
|
const SPAM = 'spam';
|
||||||
@ -18,7 +18,8 @@ class Comment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static function getSubscriptionField() {
|
static function getSubscriptionField() {
|
||||||
$label = Setting::getValue(
|
$settings = new SettingsController();
|
||||||
|
$label = $settings->get(
|
||||||
'subscribe.on_comment.label',
|
'subscribe.on_comment.label',
|
||||||
__('Yes, please add me to your mailing list.', 'mailpoet')
|
__('Yes, please add me to your mailing list.', 'mailpoet')
|
||||||
);
|
);
|
||||||
@ -77,7 +78,8 @@ class Comment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static function subscribeAuthorOfComment($comment_id) {
|
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)) {
|
if(!empty($segment_ids)) {
|
||||||
$comment = get_comment($comment_id);
|
$comment = get_comment($comment_id);
|
||||||
|
@ -8,6 +8,7 @@ use MailPoet\Models\CustomField;
|
|||||||
use MailPoet\Models\Setting;
|
use MailPoet\Models\Setting;
|
||||||
use MailPoet\Models\Segment;
|
use MailPoet\Models\Segment;
|
||||||
use MailPoet\Newsletter\Scheduler\Scheduler;
|
use MailPoet\Newsletter\Scheduler\Scheduler;
|
||||||
|
use MailPoet\Settings\SettingsController;
|
||||||
use MailPoet\Subscribers\NewSubscriberNotificationMailer;
|
use MailPoet\Subscribers\NewSubscriberNotificationMailer;
|
||||||
use MailPoet\Util\Helpers;
|
use MailPoet\Util\Helpers;
|
||||||
use MailPoet\Util\Url as UrlHelper;
|
use MailPoet\Util\Url as UrlHelper;
|
||||||
@ -25,6 +26,8 @@ class Pages {
|
|||||||
private $subscriber;
|
private $subscriber;
|
||||||
/** @var NewSubscriberNotificationMailer */
|
/** @var NewSubscriberNotificationMailer */
|
||||||
private $new_subscriber_notification_sender;
|
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) {
|
function __construct($action = false, $data = array(), $init_shortcodes = false, $init_page_filters = false, $new_subscriber_notification_sender = null) {
|
||||||
$this->action = $action;
|
$this->action = $action;
|
||||||
@ -37,6 +40,7 @@ class Pages {
|
|||||||
} else {
|
} else {
|
||||||
$this->new_subscriber_notification_sender = new NewSubscriberNotificationMailer();
|
$this->new_subscriber_notification_sender = new NewSubscriberNotificationMailer();
|
||||||
}
|
}
|
||||||
|
$this->settings = new SettingsController();
|
||||||
}
|
}
|
||||||
|
|
||||||
private function isPreview() {
|
private function isPreview() {
|
||||||
@ -260,7 +264,7 @@ class Pages {
|
|||||||
return $custom_field;
|
return $custom_field;
|
||||||
}, CustomField::findMany());
|
}, CustomField::findMany());
|
||||||
|
|
||||||
$segment_ids = Setting::getValue('subscription.segments', array());
|
$segment_ids = $this->settings->get('subscription.segments', []);
|
||||||
if(!empty($segment_ids)) {
|
if(!empty($segment_ids)) {
|
||||||
$segments = Segment::getPublic()
|
$segments = Segment::getPublic()
|
||||||
->whereIn('id', $segment_ids)
|
->whereIn('id', $segment_ids)
|
||||||
|
@ -2,11 +2,13 @@
|
|||||||
namespace MailPoet\Subscription;
|
namespace MailPoet\Subscription;
|
||||||
use MailPoet\Models\Setting;
|
use MailPoet\Models\Setting;
|
||||||
use MailPoet\Models\Subscriber;
|
use MailPoet\Models\Subscriber;
|
||||||
|
use MailPoet\Settings\SettingsController;
|
||||||
|
|
||||||
class Registration {
|
class Registration {
|
||||||
|
|
||||||
static function extendForm() {
|
static function extendForm() {
|
||||||
$label = Setting::getValue(
|
$settings = new SettingsController();
|
||||||
|
$label = $settings->get(
|
||||||
'subscribe.on_register.label',
|
'subscribe.on_register.label',
|
||||||
__('Yes, please add me to your mailing list.', 'mailpoet')
|
__('Yes, please add me to your mailing list.', 'mailpoet')
|
||||||
);
|
);
|
||||||
@ -56,9 +58,10 @@ class Registration {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static function subscribeNewUser($name, $email) {
|
private static function subscribeNewUser($name, $email) {
|
||||||
$segment_ids = Setting::getValue(
|
$settings = new SettingsController();
|
||||||
|
$segment_ids = $settings->get(
|
||||||
'subscribe.on_register.segments',
|
'subscribe.on_register.segments',
|
||||||
array()
|
[]
|
||||||
);
|
);
|
||||||
|
|
||||||
if(!empty($segment_ids)) {
|
if(!empty($segment_ids)) {
|
||||||
@ -71,4 +74,4 @@ class Registration {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,21 +4,21 @@ namespace MailPoet\Subscription;
|
|||||||
use MailPoet\Router\Router;
|
use MailPoet\Router\Router;
|
||||||
use MailPoet\Router\Endpoints\Subscription as SubscriptionEndpoint;
|
use MailPoet\Router\Endpoints\Subscription as SubscriptionEndpoint;
|
||||||
use MailPoet\Models\Subscriber;
|
use MailPoet\Models\Subscriber;
|
||||||
use MailPoet\Models\Setting;
|
use MailPoet\Settings\SettingsController;
|
||||||
|
|
||||||
class Url {
|
class Url {
|
||||||
static function getConfirmationUrl(Subscriber $subscriber = null) {
|
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);
|
return self::getSubscriptionUrl($post, 'confirm', $subscriber);
|
||||||
}
|
}
|
||||||
|
|
||||||
static function getManageUrl(Subscriber $subscriber = null) {
|
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);
|
return self::getSubscriptionUrl($post, 'manage', $subscriber);
|
||||||
}
|
}
|
||||||
|
|
||||||
static function getUnsubscribeUrl(Subscriber $subscriber = null) {
|
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);
|
return self::getSubscriptionUrl($post, 'unsubscribe', $subscriber);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -57,4 +57,9 @@ class Url {
|
|||||||
|
|
||||||
return $url;
|
return $url;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static private function getSetting($key) {
|
||||||
|
$setting = new SettingsController();
|
||||||
|
return $setting->get($key);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,9 @@ use MailPoet\Mailer\Mailer;
|
|||||||
use MailPoet\Models\Segment;
|
use MailPoet\Models\Segment;
|
||||||
use MailPoet\Models\Setting;
|
use MailPoet\Models\Setting;
|
||||||
use MailPoet\Models\Subscriber;
|
use MailPoet\Models\Subscriber;
|
||||||
|
|
||||||
use MailPoet\WP\Functions;
|
use MailPoet\WP\Functions;
|
||||||
|
use MailPoet\Settings\SettingsController;
|
||||||
|
|
||||||
class NewSubscriberNotificationMailerTest extends \MailPoetTest {
|
class NewSubscriberNotificationMailerTest extends \MailPoetTest {
|
||||||
|
|
||||||
@ -18,23 +20,27 @@ class NewSubscriberNotificationMailerTest extends \MailPoetTest {
|
|||||||
/** @var Segment[] */
|
/** @var Segment[] */
|
||||||
private $segments;
|
private $segments;
|
||||||
|
|
||||||
|
/** @var SettingsController */
|
||||||
|
private $settings;
|
||||||
|
|
||||||
function _before() {
|
function _before() {
|
||||||
$this->subscriber = Subscriber::create();
|
$this->subscriber = Subscriber::create();
|
||||||
$this->subscriber->email = 'subscriber@example.com';
|
$this->subscriber->email = 'subscriber@example.com';
|
||||||
$this->segments = [Segment::create(), Segment::create()];
|
$this->segments = [Segment::create(), Segment::create()];
|
||||||
$this->segments[0]->name = 'List1';
|
$this->segments[0]->name = 'List1';
|
||||||
$this->segments[1]->name = 'List2';
|
$this->segments[1]->name = 'List2';
|
||||||
|
$this->settings = new SettingsController();
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItDoesNotSendIfNoSettings() {
|
function testItDoesNotSendIfNoSettings() {
|
||||||
Setting::setValue(NewSubscriberNotificationMailer::SETTINGS_KEY, null);
|
$this->settings->set(NewSubscriberNotificationMailer::SETTINGS_KEY, null);
|
||||||
$mailer = Stub::makeEmpty(Mailer::class, ['getSenderNameAndAddress' => Expected::never()], $this);
|
$mailer = Stub::makeEmpty(Mailer::class, ['getSenderNameAndAddress' => Expected::never()], $this);
|
||||||
$service = new NewSubscriberNotificationMailer($mailer);
|
$service = new NewSubscriberNotificationMailer($mailer);
|
||||||
$service->send($this->subscriber, $this->segments);
|
$service->send($this->subscriber, $this->segments);
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItDoesNotSendIfSettingsDoesNotHaveEnabled() {
|
function testItDoesNotSendIfSettingsDoesNotHaveEnabled() {
|
||||||
Setting::setValue(NewSubscriberNotificationMailer::SETTINGS_KEY, []);
|
$this->settings->set(NewSubscriberNotificationMailer::SETTINGS_KEY, []);
|
||||||
$mailer = Stub::makeEmpty(Mailer::class, ['getSenderNameAndAddress' => Expected::never()], $this);
|
$mailer = Stub::makeEmpty(Mailer::class, ['getSenderNameAndAddress' => Expected::never()], $this);
|
||||||
$service = new NewSubscriberNotificationMailer($mailer);
|
$service = new NewSubscriberNotificationMailer($mailer);
|
||||||
$service->send($this->subscriber, $this->segments);
|
$service->send($this->subscriber, $this->segments);
|
||||||
@ -42,21 +48,21 @@ class NewSubscriberNotificationMailerTest extends \MailPoetTest {
|
|||||||
|
|
||||||
|
|
||||||
function testItDoesNotSendIfSettingsDoesNotHaveAddress() {
|
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);
|
$mailer = Stub::makeEmpty(Mailer::class, ['getSenderNameAndAddress' => Expected::never()], $this);
|
||||||
$service = new NewSubscriberNotificationMailer($mailer);
|
$service = new NewSubscriberNotificationMailer($mailer);
|
||||||
$service->send($this->subscriber, $this->segments);
|
$service->send($this->subscriber, $this->segments);
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItDoesNotSendIfDisabled() {
|
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);
|
$mailer = Stub::makeEmpty(Mailer::class, ['getSenderNameAndAddress' => Expected::never()], $this);
|
||||||
$service = new NewSubscriberNotificationMailer($mailer);
|
$service = new NewSubscriberNotificationMailer($mailer);
|
||||||
$service->send($this->subscriber, $this->segments);
|
$service->send($this->subscriber, $this->segments);
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItSends() {
|
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, [
|
$mailer = Stub::makeEmpty(Mailer::class, [
|
||||||
'getSenderNameAndAddress' =>
|
'getSenderNameAndAddress' =>
|
||||||
@ -85,7 +91,9 @@ class NewSubscriberNotificationMailerTest extends \MailPoetTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function testItRemovesWwwFromSenderAddress() {
|
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, [
|
$mailer = Stub::makeEmpty(Mailer::class, [
|
||||||
'getSenderNameAndAddress' =>
|
'getSenderNameAndAddress' =>
|
||||||
@ -105,5 +113,10 @@ class NewSubscriberNotificationMailerTest extends \MailPoetTest {
|
|||||||
|
|
||||||
$service = new NewSubscriberNotificationMailer($mailer, null, $functions);
|
$service = new NewSubscriberNotificationMailer($mailer, null, $functions);
|
||||||
$service->send($this->subscriber, $this->segments);
|
$service->send($this->subscriber, $this->segments);
|
||||||
|
update_option('home', $home_backup);
|
||||||
|
}
|
||||||
|
|
||||||
|
function _after() {
|
||||||
|
\ORM::raw_execute('TRUNCATE ' . Setting::$_table);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,9 @@ use MailPoet\Models\Segment as SegmentModel;
|
|||||||
use MailPoet\Models\Setting as SettingModel;
|
use MailPoet\Models\Setting as SettingModel;
|
||||||
use MailPoet\Models\Setting;
|
use MailPoet\Models\Setting;
|
||||||
use MailPoet\Models\Subscriber as SubscriberModel;
|
use MailPoet\Models\Subscriber as SubscriberModel;
|
||||||
|
use MailPoet\Settings\SettingsController;
|
||||||
use MailPoet\Subscription\Form;
|
use MailPoet\Subscription\Form;
|
||||||
|
use MailPoet\Test\Cron\Workers\SendingErrorHandlerTest;
|
||||||
use MailPoet\Util\Security;
|
use MailPoet\Util\Security;
|
||||||
|
|
||||||
class FormTest extends \MailPoetTest {
|
class FormTest extends \MailPoetTest {
|
||||||
@ -19,7 +21,8 @@ class FormTest extends \MailPoetTest {
|
|||||||
|
|
||||||
function _before() {
|
function _before() {
|
||||||
parent::_before();
|
parent::_before();
|
||||||
Setting::setValue('sender', array(
|
$settings = new SettingsController();
|
||||||
|
$settings->set('sender', array(
|
||||||
'name' => 'John Doe',
|
'name' => 'John Doe',
|
||||||
'address' => 'john.doe@example.com'
|
'address' => 'john.doe@example.com'
|
||||||
));
|
));
|
||||||
|
Reference in New Issue
Block a user