diff --git a/lib/Subscribers/ConfirmationEmailMailer.php b/lib/Subscribers/ConfirmationEmailMailer.php index 80dbc6209d..6b3d2703f5 100644 --- a/lib/Subscribers/ConfirmationEmailMailer.php +++ b/lib/Subscribers/ConfirmationEmailMailer.php @@ -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; diff --git a/lib/Subscribers/NewSubscriberNotificationMailer.php b/lib/Subscribers/NewSubscriberNotificationMailer.php index f96870c5da..ba64e87fc7 100644 --- a/lib/Subscribers/NewSubscriberNotificationMailer.php +++ b/lib/Subscribers/NewSubscriberNotificationMailer.php @@ -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; } diff --git a/lib/Subscription/Comment.php b/lib/Subscription/Comment.php index 6b31e5c82d..6563c664de 100644 --- a/lib/Subscription/Comment.php +++ b/lib/Subscription/Comment.php @@ -1,7 +1,7 @@ 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); diff --git a/lib/Subscription/Pages.php b/lib/Subscription/Pages.php index 8186ab5202..c8af5fe1ff 100644 --- a/lib/Subscription/Pages.php +++ b/lib/Subscription/Pages.php @@ -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) diff --git a/lib/Subscription/Registration.php b/lib/Subscription/Registration.php index c23d607a9e..991d4b5b48 100644 --- a/lib/Subscription/Registration.php +++ b/lib/Subscription/Registration.php @@ -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)) { @@ -71,4 +74,4 @@ class Registration { ); } } -} \ No newline at end of file +} diff --git a/lib/Subscription/Url.php b/lib/Subscription/Url.php index 1c556762da..2065b18054 100644 --- a/lib/Subscription/Url.php +++ b/lib/Subscription/Url.php @@ -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); + } } diff --git a/tests/integration/Subscribers/NewSubscriberNotificationMailerTest.php b/tests/integration/Subscribers/NewSubscriberNotificationMailerTest.php index 9d2cb369b7..9a1424d5ad 100644 --- a/tests/integration/Subscribers/NewSubscriberNotificationMailerTest.php +++ b/tests/integration/Subscribers/NewSubscriberNotificationMailerTest.php @@ -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); } } diff --git a/tests/integration/Subscription/FormTest.php b/tests/integration/Subscription/FormTest.php index e98b4d47d3..16a92142e7 100644 --- a/tests/integration/Subscription/FormTest.php +++ b/tests/integration/Subscription/FormTest.php @@ -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' ));