Use Doctrine in SettingsController

[MAILPOET-2436]
This commit is contained in:
Jan Jakeš
2019-10-28 13:47:11 +01:00
committed by Jack Kitterhing
parent 0d04df570c
commit 4779506f82
2 changed files with 31 additions and 22 deletions

View File

@ -4,8 +4,7 @@ namespace MailPoet\Settings;
use MailPoet\Cron\CronTrigger; use MailPoet\Cron\CronTrigger;
use MailPoet\DI\ContainerWrapper; use MailPoet\DI\ContainerWrapper;
use MailPoet\Models\Setting; use MailPoet\Entities\SettingEntity;
use MailPoet\Util\Helpers;
use MailPoet\WP\Functions as WPFunctions; use MailPoet\WP\Functions as WPFunctions;
class SettingsController { class SettingsController {
@ -22,6 +21,13 @@ class SettingsController {
private $defaults = null; private $defaults = null;
/** @var SettingsRepository */
private $settings_repository;
function __construct(SettingsRepository $settings_repository) {
$this->settings_repository = $settings_repository;
}
function get($key, $default = null) { function get($key, $default = null) {
$this->ensureLoaded(); $this->ensureLoaded();
$key_parts = explode('.', $key); $key_parts = explode('.', $key);
@ -107,7 +113,11 @@ class SettingsController {
} }
function delete($key) { function delete($key) {
Setting::deleteValue($key); $setting = $this->settings_repository->findOneByName($key);
if ($setting) {
$this->settings_repository->remove($setting);
$this->settings_repository->flush();
}
unset($this->settings[$key]); unset($this->settings[$key]);
} }
@ -115,7 +125,11 @@ class SettingsController {
if ($this->loaded) { if ($this->loaded) {
return; return;
} }
$this->settings = Setting::getAll() ?: [];
$this->settings = [];
foreach ($this->settings_repository->findAll() as $setting) {
$this->settings[$setting->getName()] = $setting->getValue();
}
$this->loaded = true; $this->loaded = true;
} }
@ -132,28 +146,19 @@ class SettingsController {
} }
private function fetchValue($key) { private function fetchValue($key) {
$setting = Setting::where('name', $key)->findOne(); $setting = $this->settings_repository->findOneByName($key);
if (!$setting instanceof Setting) { return $setting ? $setting->getValue() : null;
return null;
}
if (is_serialized($setting->value)) {
return unserialize($setting->value);
} else {
return $setting->value;
}
} }
private function saveValue($key, $value) { private function saveValue($key, $value) {
$value = Helpers::recursiveTrim($value); $setting = $this->settings_repository->findOneByName($key);
if (is_array($value)) { if (!$setting) {
$value = serialize($value); $setting = new SettingEntity();
$setting->setName($key);
$this->settings_repository->persist($setting);
} }
$setting->setValue($value);
$setting = Setting::createOrUpdate([ $this->settings_repository->flush();
'name' => $key,
'value' => $value,
]);
return ($setting->id() > 0 && $setting->getErrors() === false);
} }
function resetCache() { function resetCache() {

View File

@ -14,6 +14,10 @@ use MailPoet\Entities\SettingEntity;
* @method void remove(SettingEntity $entity) * @method void remove(SettingEntity $entity)
*/ */
class SettingsRepository extends Repository { class SettingsRepository extends Repository {
function findOneByName($name) {
return $this->doctrine_repository->findOneBy(['name' => $name]);
}
protected function getEntityClassName() { protected function getEntityClassName() {
return SettingEntity::class; return SettingEntity::class;
} }