Fixed Setting::getValue issue where defaults were not returned for single keys

- updated static strings with constants
This commit is contained in:
Jonathan Labreuille
2016-06-10 11:40:18 +02:00
parent bc1bd3bad1
commit 873c3d15a0
4 changed files with 37 additions and 10 deletions

View File

@ -91,7 +91,7 @@ class Mailer {
function getMailer($mailer = false) {
if(!$mailer) {
$mailer = Setting::getValue('mta', null);
$mailer = Setting::getValue('mta');
if(!$mailer || !isset($mailer['method'])) throw new \Exception(__('Mailer is not configured.'));
}
$mailer['class'] = 'MailPoet\\Mailer\\Methods\\' . $mailer['method'];

View File

@ -56,7 +56,11 @@ class Setting extends Model {
if(count($keys) === 1) {
$setting = Setting::where('name', $key)->findOne();
if($setting === false) {
if($default === null && array_key_exists($key, $defaults)) {
return $defaults[$key];
} else {
return $default;
}
} else {
if(is_serialized($setting->value)) {
$value = unserialize($setting->value);

View File

@ -68,7 +68,7 @@ class Scheduler {
}
static function schedulePostNotification($post_id) {
$newsletters = self::getNewsletters('notification');
$newsletters = self::getNewsletters(Newsletter::TYPE_NOTIFICATION);
if(!count($newsletters)) return;
foreach($newsletters as $newsletter) {
$post = NewsletterPost::where('newsletter_id', $newsletter->id)
@ -92,8 +92,9 @@ class Scheduler {
$subscriber_id,
array $segments
) {
$newsletters = self::getNewsletters('welcome');
if(!count($newsletters)) return;
$newsletters = self::getNewsletters(Newsletter::TYPE_WELCOME);
if(empty($newsletters)) return;
foreach($newsletters as $newsletter) {
if($newsletter->event === 'segment' &&
in_array($newsletter->segment, $segments)
@ -108,14 +109,16 @@ class Scheduler {
array $wp_user,
$old_user_data
) {
$newsletters = self::getNewsletters('welcome');
if(!count($newsletters)) return;
$newsletters = self::getNewsletters(Newsletter::TYPE_WELCOME);
if(empty($newsletters)) return;
foreach($newsletters as $newsletter) {
if($newsletter->event === 'user') {
if($old_user_data) {
// do not schedule welcome newsletter if roles have not changed
$old_role = (array)$old_user_data->roles;
$new_role = (array)$wp_user->roles;
if($newsletter->role === self::WORDPRESS_ALL_ROLES ||
!array_diff($old_role, $new_role)
) {

View File

@ -47,7 +47,7 @@ class SettingTest extends MailPoetTest {
->equals($default_settings['signup_confirmation']);
}
function testItReturnsDefaultValueIfNotSet() {
function testItCanSetAndGetValues() {
// try to get an "unknown" key
$setting = Setting::getValue('unknown_key', 'default_value');
expect($setting)->equals('default_value');
@ -69,6 +69,26 @@ class SettingTest extends MailPoetTest {
expect($setting)->equals('default_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',