Move Setting getValue and setValue to controller as a private methods

[MAILPOET-1757]
This commit is contained in:
Rostislav Wolny
2019-01-30 17:48:09 +01:00
parent 2c921a16aa
commit 10e56d860d
6 changed files with 54 additions and 81 deletions

View File

@ -3,6 +3,7 @@ namespace MailPoet\Settings;
use MailPoet\Cron\CronTrigger;
use MailPoet\Models\Setting;
use MailPoet\Util\Helpers;
class SettingsController {
@ -78,7 +79,7 @@ class SettingsController {
function fetch($key, $default = null) {
$keys = explode('.', $key);
$main_key = $keys[0];
self::$settings[$main_key] = Setting::getValue($main_key);
self::$settings[$main_key] = $this->fetchValue($main_key);
return $this->get($key, $default);
}
@ -100,7 +101,7 @@ class SettingsController {
}
}
$setting[$last_key] = $value;
Setting::setValue($main_key, self::$settings[$main_key]);
$this->saveValue($main_key, self::$settings[$main_key]);
}
function delete($key) {
@ -128,6 +129,31 @@ class SettingsController {
return $default;
}
private function fetchValue($key) {
$setting = Setting::where('name', $key)->findOne();
if($setting === false) {
return null;
}
if(is_serialized($setting->value)) {
return unserialize($setting->value);
} else {
return $setting->value;
}
}
private function saveValue($key, $value) {
$value = Helpers::recursiveTrim($value);
if(is_array($value)) {
$value = serialize($value);
}
$setting = Setting::createOrUpdate([
'name' => $key,
'value' => $value,
]);
return ($setting->id() > 0 && $setting->getErrors() === false);
}
/**
* Temporary function for tests use only.
* It is needed until this is only instantiated in one place (DI Container)