Move default setting values from Setting model to new controller
[MAILPOET-1757]
This commit is contained in:
@ -10,8 +10,6 @@ if(!defined('ABSPATH')) exit;
|
||||
class Setting extends Model {
|
||||
public static $_table = MP_SETTINGS_TABLE;
|
||||
|
||||
public static $defaults = null;
|
||||
|
||||
const DEFAULT_SENDING_METHOD_GROUP = 'website';
|
||||
const DEFAULT_SENDING_METHOD = 'PHPMail';
|
||||
const DEFAULT_SENDING_FREQUENCY_EMAILS = 25;
|
||||
@ -25,64 +23,15 @@ class Setting extends Model {
|
||||
));
|
||||
}
|
||||
|
||||
public static function getDefaults() {
|
||||
if(self::$defaults === null) {
|
||||
self::loadDefaults();
|
||||
}
|
||||
return self::$defaults;
|
||||
}
|
||||
|
||||
public static function loadDefaults() {
|
||||
self::$defaults = array(
|
||||
'mta_group' => self::DEFAULT_SENDING_METHOD_GROUP,
|
||||
'mta' => array(
|
||||
'method' => self::DEFAULT_SENDING_METHOD,
|
||||
'frequency' => array(
|
||||
'emails' => self::DEFAULT_SENDING_FREQUENCY_EMAILS,
|
||||
'interval' => self::DEFAULT_SENDING_FREQUENCY_INTERVAL
|
||||
)
|
||||
),
|
||||
CronTrigger::SETTING_NAME => array(
|
||||
'method' => CronTrigger::DEFAULT_METHOD
|
||||
),
|
||||
'signup_confirmation' => array(
|
||||
'enabled' => true,
|
||||
'subject' => sprintf(__('Confirm your subscription to %1$s', 'mailpoet'), get_option('blogname')),
|
||||
'body' => __("Hello,\n\nWelcome to our newsletter!\n\nPlease confirm your subscription to the list(s): [lists_to_confirm] by clicking the link below: \n\n[activation_link]Click here to confirm your subscription.[/activation_link]\n\nThank you,\n\nThe Team", 'mailpoet')
|
||||
),
|
||||
'tracking' => array(
|
||||
'enabled' => true
|
||||
),
|
||||
'analytics' => array(
|
||||
'enabled' => false,
|
||||
),
|
||||
'in_app_announcements' => [
|
||||
'displayed' => []
|
||||
],
|
||||
'display_nps_poll' => true,
|
||||
);
|
||||
}
|
||||
|
||||
public static function getValue($key, $default = null) {
|
||||
$defaults = self::getDefaults();
|
||||
public static function getValue($key) {
|
||||
$setting = Setting::where('name', $key)->findOne();
|
||||
if($setting === false) {
|
||||
if($default === null && array_key_exists($key, $defaults)) {
|
||||
return $defaults[$key];
|
||||
} else {
|
||||
return $default;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
if(is_serialized($setting->value)) {
|
||||
return unserialize($setting->value);
|
||||
} else {
|
||||
if(is_serialized($setting->value)) {
|
||||
$value = unserialize($setting->value);
|
||||
} else {
|
||||
$value = $setting->value;
|
||||
}
|
||||
if(is_array($value) && array_key_exists($key, $defaults)) {
|
||||
return array_replace_recursive($defaults[$key], $value);
|
||||
} else {
|
||||
return $value;
|
||||
}
|
||||
return $setting->value;
|
||||
}
|
||||
}
|
||||
|
||||
@ -111,7 +60,7 @@ class Setting extends Model {
|
||||
$settings[$setting->name] = $value;
|
||||
}
|
||||
}
|
||||
return array_replace_recursive(self::getDefaults(), $settings);
|
||||
return $settings;
|
||||
}
|
||||
|
||||
public static function createOrUpdate($data = array()) {
|
||||
|
@ -12,11 +12,14 @@ class SettingsTest extends \MailPoetTest {
|
||||
/** @var Settings */
|
||||
private $endpoint;
|
||||
|
||||
/** @var SettingsController */
|
||||
private $settings;
|
||||
|
||||
function _before() {
|
||||
parent::_before();
|
||||
$settings = new SettingsController();
|
||||
$settings->set('some.setting.key', true);
|
||||
$this->endpoint = new Settings($settings);
|
||||
$this->settings = new SettingsController();
|
||||
$this->settings->set('some.setting.key', true);
|
||||
$this->endpoint = new Settings($this->settings);
|
||||
}
|
||||
|
||||
function testItCanGetSettings() {
|
||||
@ -30,7 +33,7 @@ class SettingsTest extends \MailPoetTest {
|
||||
SettingsController::resetCache();
|
||||
$response = $this->endpoint->get();
|
||||
expect($response->status)->equals(APIResponse::STATUS_OK);
|
||||
expect($response->data)->equals(Setting::getDefaults());
|
||||
expect($response->data)->equals($this->settings->getAllDefaults());
|
||||
}
|
||||
|
||||
function testItCanSetSettings() {
|
||||
|
@ -22,22 +22,7 @@ class SettingTest extends \MailPoetTest {
|
||||
expect($errors[0])->equals('Please specify a name.');
|
||||
}
|
||||
|
||||
function testItHasDefaultSettings() {
|
||||
$default_settings = Setting::getDefaults();
|
||||
expect($default_settings)->notEmpty();
|
||||
expect($default_settings['signup_confirmation']['enabled'])->true();
|
||||
}
|
||||
|
||||
function testItCanLoadDefaults() {
|
||||
Setting::$defaults = null;
|
||||
expect(Setting::$defaults)->null();
|
||||
|
||||
$default_settings = Setting::getDefaults();
|
||||
expect(Setting::$defaults)->notEmpty();
|
||||
expect($default_settings['signup_confirmation']['enabled'])->true();
|
||||
}
|
||||
|
||||
function testItCanGetAllSettingsIncludingDefaults() {
|
||||
function testItCanGetAllSettings() {
|
||||
Setting::setValue('key_1', 'value_1');
|
||||
Setting::setValue('key_2', 'value_2');
|
||||
Setting::setValue('key_3', array(
|
||||
@ -52,17 +37,12 @@ class SettingTest extends \MailPoetTest {
|
||||
'subkey_1' => 'subvalue_1',
|
||||
'subkey_2' => 'subvalue_2'
|
||||
));
|
||||
|
||||
// default settings
|
||||
$default_settings = Setting::getDefaults();
|
||||
expect($settings['signup_confirmation'])
|
||||
->equals($default_settings['signup_confirmation']);
|
||||
}
|
||||
|
||||
function testItCanSetAndGetValues() {
|
||||
// try to get an "unknown" key
|
||||
$setting = Setting::getValue('unknown_key', 'default_value');
|
||||
expect($setting)->equals('default_value');
|
||||
$setting = Setting::getValue('unknown_key');
|
||||
expect($setting)->equals(null);
|
||||
|
||||
// setting a "known" key
|
||||
$setting = Setting::setValue('known_key', ' actual_value ');
|
||||
@ -73,26 +53,6 @@ class SettingTest extends \MailPoetTest {
|
||||
expect($setting)->equals('actual_value');
|
||||
}
|
||||
|
||||
function testItShouldReturnDefaultsSetInModelIfNotSet() {
|
||||
// model specified default settings
|
||||
$default_settings = Setting::getDefaults();
|
||||
|
||||
// try to get the MTA settings (which don't exist in the database)
|
||||
$mta_settings = Setting::getValue('mta');
|
||||
expect($mta_settings)->equals($default_settings['mta']);
|
||||
}
|
||||
|
||||
function testItShouldReturnCustomDefaultsInsteadOfDefaultsSetInModel() {
|
||||
// try to get the MTA settings (which don't exist in the database)
|
||||
// but specify a custom default value
|
||||
$custom_mta_settings = Setting::getValue('mta', array(
|
||||
'custom_default' => 'value'
|
||||
));
|
||||
expect($custom_mta_settings)->equals(array(
|
||||
'custom_default' => 'value'
|
||||
));
|
||||
}
|
||||
|
||||
function testItCanCreateOrUpdate() {
|
||||
$data = array(
|
||||
'name' => 'new',
|
||||
|
@ -41,7 +41,7 @@ class SettingsControllerTest extends \MailPoetTest {
|
||||
|
||||
function testItReturnsDefaultValueAsFallback() {
|
||||
$settings = Stub::make($this->controller, [
|
||||
'getDefaults' => function () {
|
||||
'getAllDefaults' => function () {
|
||||
return ['default1' => ['default2' => 1]];
|
||||
}
|
||||
]);
|
||||
|
Reference in New Issue
Block a user