Improve naming in SettingsController

[MAILPOET-1757]
This commit is contained in:
Rostislav Wolny
2019-01-30 17:05:20 +01:00
parent a12d0ff4bc
commit 62dca415d4
2 changed files with 57 additions and 21 deletions

View File

@ -105,7 +105,7 @@ class Mailer {
if(!$mailer || !isset($mailer['method'])) throw new \Exception(__('Mailer is not configured.', 'mailpoet')); if(!$mailer || !isset($mailer['method'])) throw new \Exception(__('Mailer is not configured.', 'mailpoet'));
} }
if(empty($mailer['frequency'])) { if(empty($mailer['frequency'])) {
$default_settings = $settings->getDefaults(); $default_settings = $settings->getAllDefaults();
$mailer['frequency'] = $default_settings['mta']['frequency']; $mailer['frequency'] = $default_settings['mta']['frequency'];
} }
// add additional variables to the mailer object // add additional variables to the mailer object

View File

@ -1,24 +1,32 @@
<?php <?php
namespace MailPoet\Settings; namespace MailPoet\Settings;
use Composer\Package\Package; use MailPoet\Cron\CronTrigger;
use MailPoet\Models\Setting; use MailPoet\Models\Setting;
class SettingsController { class SettingsController {
const DEFAULT_SENDING_METHOD_GROUP = 'website';
const DEFAULT_SENDING_METHOD = 'PHPMail';
const DEFAULT_SENDING_FREQUENCY_EMAILS = 25;
const DEFAULT_SENDING_FREQUENCY_INTERVAL = 5; // in minutes
private static $loaded = false; private static $loaded = false;
private static $settings = []; private static $settings = [];
private $defaults = null;
function get($key, $default = null) { function get($key, $default = null) {
$this->ensureLoaded(); $this->ensureLoaded();
$keys = explode('.', $key); $key_parts = explode('.', $key);
$setting = self::$settings; $setting = self::$settings;
if($default === null) { if($default === null) {
$default = $this->getDefault($keys); $default = $this->getDefaultValue($key_parts);
} }
foreach($keys as $key) { foreach($key_parts as $key_part) {
if(array_key_exists($key, $setting)) { if(array_key_exists($key_part, $setting)) {
$setting = $setting[$key]; $setting = $setting[$key_part];
} else { } else {
return $default; return $default;
} }
@ -29,8 +37,38 @@ class SettingsController {
return $setting; return $setting;
} }
function getDefaults() { function getAllDefaults() {
return Setting::getDefaults(); if($this->defaults === null) {
$this->defaults = [
'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 => [
'method' => CronTrigger::DEFAULT_METHOD
],
'signup_confirmation' => [
'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' => [
'enabled' => true
],
'analytics' => [
'enabled' => false,
],
'in_app_announcements' => [
'displayed' => []
],
'display_nps_poll' => true,
];
}
return $this->defaults;
} }
/** /**
@ -46,25 +84,23 @@ class SettingsController {
function getAll() { function getAll() {
$this->ensureLoaded(); $this->ensureLoaded();
return self::$settings; return array_replace_recursive($this->getAllDefaults(), self::$settings);
} }
function set($key, $value) { function set($key, $value) {
$this->ensureLoaded(); $this->ensureLoaded();
$keys = explode('.', $key); $key_parts = explode('.', $key);
$main_key = $keys[0]; $main_key = $key_parts[0];
$last_key = array_pop($keys); $last_key = array_pop($key_parts);
$settings = self::$settings; $setting =& self::$settings;
$setting =& $settings; foreach($key_parts as $key_part) {
foreach($keys as $key) { $setting =& $setting[$key_part];
$setting =& $setting[$key];
if(!is_array($setting)) { if(!is_array($setting)) {
$setting = []; $setting = [];
} }
} }
$setting[$last_key] = $value; $setting[$last_key] = $value;
Setting::setValue($main_key, $settings[$main_key]); Setting::setValue($main_key, self::$settings[$main_key]);
self::$settings = $settings;
} }
function delete($key) { function delete($key) {
@ -80,8 +116,8 @@ class SettingsController {
self::$loaded = true; self::$loaded = true;
} }
private function getDefault($keys) { private function getDefaultValue($keys) {
$default = $this->getDefaults(); $default = $this->getAllDefaults();
foreach($keys as $key) { foreach($keys as $key) {
if(array_key_exists($key, $default)) { if(array_key_exists($key, $default)) {
$default = $default[$key]; $default = $default[$key];