Refactor MailPoet\Model to use new settings

[MAILPOET-1757]
This commit is contained in:
Rostislav Wolny
2019-01-30 13:59:44 +01:00
parent f4f1770b1d
commit 3a7ea60d3f
5 changed files with 38 additions and 24 deletions

View File

@ -2,6 +2,7 @@
namespace MailPoet\Models; namespace MailPoet\Models;
use Carbon\Carbon; use Carbon\Carbon;
use MailPoet\Newsletter\Renderer\Renderer; use MailPoet\Newsletter\Renderer\Renderer;
use MailPoet\Settings\SettingsController;
use MailPoet\Tasks\Sending as SendingTask; use MailPoet\Tasks\Sending as SendingTask;
use MailPoet\Util\Helpers; use MailPoet\Util\Helpers;
use MailPoet\Util\Security; use MailPoet\Util\Security;
@ -935,9 +936,10 @@ class Newsletter extends Model {
static function createOrUpdate($data = array()) { static function createOrUpdate($data = array()) {
return parent::_createOrUpdate($data, false, function($data) { return parent::_createOrUpdate($data, false, function($data) {
$settings = new SettingsController();
// set default sender based on settings // set default sender based on settings
if(empty($data['sender'])) { if(empty($data['sender'])) {
$sender = Setting::getValue('sender', array()); $sender = $settings->get('sender', []);
$data['sender_name'] = ( $data['sender_name'] = (
!empty($sender['name']) !empty($sender['name'])
? $sender['name'] ? $sender['name']
@ -952,7 +954,7 @@ class Newsletter extends Model {
// set default reply_to based on settings // set default reply_to based on settings
if(empty($data['reply_to'])) { if(empty($data['reply_to'])) {
$reply_to = Setting::getValue('reply_to', array()); $reply_to = $settings->get('reply_to', array());
$data['reply_to_name'] = ( $data['reply_to_name'] = (
!empty($reply_to['name']) !empty($reply_to['name'])
? $reply_to['name'] ? $reply_to['name']

View File

@ -2,6 +2,7 @@
namespace MailPoet\Models; namespace MailPoet\Models;
use MailPoet\Cron\CronTrigger; use MailPoet\Cron\CronTrigger;
use MailPoet\Settings\SettingsController;
use MailPoet\Util\Helpers; use MailPoet\Util\Helpers;
if(!defined('ABSPATH')) exit; if(!defined('ABSPATH')) exit;
@ -124,10 +125,11 @@ class Setting extends Model {
} }
public static function saveDefaultSenderIfNeeded($sender_address, $sender_name) { public static function saveDefaultSenderIfNeeded($sender_address, $sender_name) {
if(empty($sender_address) || empty($sender_name) || Setting::getValue('sender')) { $settings = new SettingsController();
if(empty($sender_address) || empty($sender_name) || $settings->get('sender')) {
return; return;
} }
Setting::setValue('sender', array( $settings->set('sender', array(
'address' => $sender_address, 'address' => $sender_address,
'name' => $sender_name 'name' => $sender_name
)); ));

View File

@ -2,6 +2,7 @@
namespace MailPoet\Models; namespace MailPoet\Models;
use MailPoet\Newsletter\Scheduler\Scheduler; use MailPoet\Newsletter\Scheduler\Scheduler;
use MailPoet\Settings\SettingsController;
use MailPoet\Subscribers\ConfirmationEmailMailer; use MailPoet\Subscribers\ConfirmationEmailMailer;
use MailPoet\Subscribers\NewSubscriberNotificationMailer; use MailPoet\Subscribers\NewSubscriberNotificationMailer;
use MailPoet\Subscribers\Source; use MailPoet\Subscribers\Source;
@ -121,7 +122,8 @@ class Subscriber extends Model {
// that should not be editable when subscribing // that should not be editable when subscribing
$subscriber_data = self::filterOutReservedColumns($subscriber_data); $subscriber_data = self::filterOutReservedColumns($subscriber_data);
$signup_confirmation_enabled = (bool)Setting::getValue( $settings = new SettingsController();
$signup_confirmation_enabled = (bool)$settings->get(
'signup_confirmation.enabled' 'signup_confirmation.enabled'
); );
@ -822,10 +824,11 @@ class Subscriber extends Model {
} }
static function setRequiredFieldsDefaultValues($data) { static function setRequiredFieldsDefaultValues($data) {
$settings = new SettingsController();
$required_field_default_values = array( $required_field_default_values = array(
'first_name' => '', 'first_name' => '',
'last_name' => '', 'last_name' => '',
'status' => (!Setting::getValue('signup_confirmation.enabled')) ? self::STATUS_SUBSCRIBED : self::STATUS_UNCONFIRMED 'status' => (!$settings->get('signup_confirmation.enabled')) ? self::STATUS_SUBSCRIBED : self::STATUS_UNCONFIRMED
); );
foreach($required_field_default_values as $field => $value) { foreach($required_field_default_values as $field => $value) {
if(!isset($data[$field])) { if(!isset($data[$field])) {

View File

@ -2,6 +2,7 @@
namespace MailPoet\Test\Models; namespace MailPoet\Test\Models;
use MailPoet\Models\Setting; use MailPoet\Models\Setting;
use MailPoet\Settings\SettingsController;
class SettingTest extends \MailPoetTest { class SettingTest extends \MailPoetTest {
function testItCanBeCreated() { function testItCanBeCreated() {
@ -128,21 +129,24 @@ class SettingTest extends \MailPoetTest {
} }
function testSaveDefaultSenderIfNeededNotSaveEmptyValue() { function testSaveDefaultSenderIfNeededNotSaveEmptyValue() {
$settings_controller = new SettingsController();
Setting::saveDefaultSenderIfNeeded('', null); Setting::saveDefaultSenderIfNeeded('', null);
expect(Setting::getValue('sender'))->null(); expect($settings_controller->get('sender'))->null();
} }
function testSaveDefaultSenderIfNeededDoesntOverride() { function testSaveDefaultSenderIfNeededDoesntOverride() {
Setting::setValue('sender', array('name' => 'sender1', 'address' => 'sender1address')); $settings_controller = new SettingsController();
$settings_controller->set('sender', array('name' => 'sender1', 'address' => 'sender1address'));
Setting::saveDefaultSenderIfNeeded('sender2address', 'sender1'); Setting::saveDefaultSenderIfNeeded('sender2address', 'sender1');
$settings = Setting::getValue('sender'); $settings = $settings_controller->get('sender');
expect($settings['name'])->equals('sender1'); expect($settings['name'])->equals('sender1');
expect($settings['address'])->equals('sender1address'); expect($settings['address'])->equals('sender1address');
} }
function testSaveDefaultSenderIfNeeded() { function testSaveDefaultSenderIfNeeded() {
$settings_controller = new SettingsController();
Setting::saveDefaultSenderIfNeeded('senderAddress', 'sender'); Setting::saveDefaultSenderIfNeeded('senderAddress', 'sender');
$settings = Setting::getValue('sender'); $settings = $settings_controller->get('sender');
expect($settings['name'])->equals('sender'); expect($settings['name'])->equals('sender');
expect($settings['address'])->equals('senderAddress'); expect($settings['address'])->equals('senderAddress');
} }

View File

@ -14,12 +14,16 @@ use MailPoet\Models\Setting;
use MailPoet\Models\Subscriber; use MailPoet\Models\Subscriber;
use MailPoet\Models\SubscriberCustomField; use MailPoet\Models\SubscriberCustomField;
use MailPoet\Models\SubscriberSegment; use MailPoet\Models\SubscriberSegment;
use MailPoet\Settings\SettingsController;
class SubscriberTest extends \MailPoetTest { class SubscriberTest extends \MailPoetTest {
/** @var array */ /** @var array */
private $test_data; private $test_data;
/** @var SettingsController */
private $settings;
function _before() { function _before() {
parent::_before(); parent::_before();
$this->test_data = array( $this->test_data = array(
@ -30,7 +34,8 @@ class SubscriberTest extends \MailPoetTest {
$this->subscriber = Subscriber::create(); $this->subscriber = Subscriber::create();
$this->subscriber->hydrate($this->test_data); $this->subscriber->hydrate($this->test_data);
$this->saved = $this->subscriber->save(); $this->saved = $this->subscriber->save();
Setting::setValue('sender', array( $this->settings = new SettingsController();
$this->settings->set('sender', array(
'name' => 'John Doe', 'name' => 'John Doe',
'address' => 'john.doe@example.com' 'address' => 'john.doe@example.com'
)); ));
@ -482,7 +487,7 @@ class SubscriberTest extends \MailPoetTest {
expect($newsletter_option->getErrors())->false(); expect($newsletter_option->getErrors())->false();
} }
Setting::setValue('signup_confirmation.enabled', false); $this->settings->set('signup_confirmation.enabled', false);
$subscriber = Subscriber::subscribe($this->test_data, array($segment->id())); $subscriber = Subscriber::subscribe($this->test_data, array($segment->id()));
expect($subscriber->id() > 0)->equals(true); expect($subscriber->id() > 0)->equals(true);
expect($subscriber->segments()->count())->equals(1); expect($subscriber->segments()->count())->equals(1);
@ -527,9 +532,7 @@ class SubscriberTest extends \MailPoetTest {
expect($newsletter_option->getErrors())->false(); expect($newsletter_option->getErrors())->false();
} }
$signup_confirmation_enabled = (bool)Setting::setValue( $this->settings->set('signup_confirmation.enabled', true);
'signup_confirmation.enabled', true
);
$subscriber = Subscriber::subscribe($this->test_data, array($segment->id())); $subscriber = Subscriber::subscribe($this->test_data, array($segment->id()));
expect($subscriber->id() > 0)->equals(true); expect($subscriber->id() > 0)->equals(true);
expect($subscriber->segments()->count())->equals(1); expect($subscriber->segments()->count())->equals(1);
@ -578,8 +581,8 @@ class SubscriberTest extends \MailPoetTest {
} }
function testItOverwritesSubscriberDataWhenConfirmationIsDisabled() { function testItOverwritesSubscriberDataWhenConfirmationIsDisabled() {
$original_setting_value = Setting::getValue('signup_confirmation.enabled'); $original_setting_value = $this->settings->get('signup_confirmation.enabled');
Setting::setValue('signup_confirmation.enabled', false); $this->settings->set('signup_confirmation.enabled', false);
$segment = Segment::create(); $segment = Segment::create();
$segment->hydrate(array('name' => 'List #1')); $segment->hydrate(array('name' => 'List #1'));
@ -621,12 +624,12 @@ class SubscriberTest extends \MailPoetTest {
expect($subscriber->first_name)->equals($data2['first_name']); expect($subscriber->first_name)->equals($data2['first_name']);
expect($subscriber->last_name)->equals($data2['last_name']); expect($subscriber->last_name)->equals($data2['last_name']);
Setting::setValue('signup_confirmation.enabled', $original_setting_value); $this->settings->set('signup_confirmation.enabled', $original_setting_value);
} }
function testItStoresUnconfirmedSubscriberDataWhenConfirmationIsEnabled() { function testItStoresUnconfirmedSubscriberDataWhenConfirmationIsEnabled() {
$original_setting_value = Setting::getValue('signup_confirmation.enabled'); $original_setting_value = $this->settings->get('signup_confirmation.enabled');
Setting::setValue('signup_confirmation.enabled', true); $this->settings->set('signup_confirmation.enabled', true);
$segment = Segment::create(); $segment = Segment::create();
$segment->hydrate(array('name' => 'List #1')); $segment->hydrate(array('name' => 'List #1'));
@ -690,7 +693,7 @@ class SubscriberTest extends \MailPoetTest {
$subscriber = Subscriber::where('email', $data2['email'])->findOne(); $subscriber = Subscriber::where('email', $data2['email'])->findOne();
expect($subscriber->unconfirmed_data)->isEmpty(); expect($subscriber->unconfirmed_data)->isEmpty();
Setting::setValue('signup_confirmation.enabled', $original_setting_value); $this->settings->set('signup_confirmation.enabled', $original_setting_value);
} }
function testItCanBeUpdatedByEmail() { function testItCanBeUpdatedByEmail() {
@ -1071,7 +1074,7 @@ class SubscriberTest extends \MailPoetTest {
function testItSetsDefaultStatusDependingOnSingupConfirmationOption() { function testItSetsDefaultStatusDependingOnSingupConfirmationOption() {
// when signup confirmation is disabled, status should be 'subscribed' // when signup confirmation is disabled, status should be 'subscribed'
Setting::setValue('signup_confirmation.enabled', false); $this->settings->set('signup_confirmation.enabled', false);
expect(Subscriber::setRequiredFieldsDefaultValues(array()))->equals( expect(Subscriber::setRequiredFieldsDefaultValues(array()))->equals(
array( array(
'first_name' => '', 'first_name' => '',
@ -1080,7 +1083,7 @@ class SubscriberTest extends \MailPoetTest {
) )
); );
Setting::setValue('signup_confirmation.enabled', true); $this->settings->set('signup_confirmation.enabled', true);
// when signup confirmation is enabled, status should be 'unconfirmed' // when signup confirmation is enabled, status should be 'unconfirmed'
expect(Subscriber::setRequiredFieldsDefaultValues(array()))->equals( expect(Subscriber::setRequiredFieldsDefaultValues(array()))->equals(
array( array(
@ -1091,7 +1094,7 @@ class SubscriberTest extends \MailPoetTest {
); );
// when status is specified, it should not change regardless of signup confirmation option // when status is specified, it should not change regardless of signup confirmation option
Setting::setValue('signup_confirmation.enabled', true); $this->settings->set('signup_confirmation.enabled', true);
expect(Subscriber::setRequiredFieldsDefaultValues(array('status' => Subscriber::STATUS_SUBSCRIBED)))->equals( expect(Subscriber::setRequiredFieldsDefaultValues(array('status' => Subscriber::STATUS_SUBSCRIBED)))->equals(
array( array(
'first_name' => '', 'first_name' => '',