From 6aea45f8867cefac2d27bdb11f887e18b76f22e4 Mon Sep 17 00:00:00 2001 From: SychO9 Date: Wed, 27 Oct 2021 10:55:36 +0100 Subject: [PATCH] Switch to an array of defaults --- src/Extend/Settings.php | 8 ++++-- src/Settings/DefaultSettingsManager.php | 27 ------------------- .../MemoryCacheSettingsRepository.php | 16 +++++------ src/Settings/SettingsServiceProvider.php | 8 +++--- .../MemoryCacheSettingsRepositoryTest.php | 7 +---- 5 files changed, 18 insertions(+), 48 deletions(-) delete mode 100644 src/Settings/DefaultSettingsManager.php diff --git a/src/Extend/Settings.php b/src/Extend/Settings.php index d791f193f7..ec88ceac36 100644 --- a/src/Extend/Settings.php +++ b/src/Extend/Settings.php @@ -63,10 +63,14 @@ public function default(string $key, $value): self public function extend(Container $container, Extension $extension = null) { if (! empty($this->defaults)) { - $container->extend(DefaultSettingsManager::class, function (DefaultSettingsManager $manager) { + $container->extend('flarum.settings.default', function (array $settings) { foreach ($this->defaults as $key => $default) { - $manager->set($key, $default); + if (! isset($settings[$key])) { + $settings[$key] = $default; + } } + + return $settings; }); } diff --git a/src/Settings/DefaultSettingsManager.php b/src/Settings/DefaultSettingsManager.php deleted file mode 100644 index 255d27c4e7..0000000000 --- a/src/Settings/DefaultSettingsManager.php +++ /dev/null @@ -1,27 +0,0 @@ -defaults, $key, $default); - } - - public function set($key, $value) - { - $this->defaults[$key] = $value; - } -} diff --git a/src/Settings/MemoryCacheSettingsRepository.php b/src/Settings/MemoryCacheSettingsRepository.php index 304886b5cf..9ec343c61f 100644 --- a/src/Settings/MemoryCacheSettingsRepository.php +++ b/src/Settings/MemoryCacheSettingsRepository.php @@ -19,18 +19,18 @@ class MemoryCacheSettingsRepository implements SettingsRepositoryInterface protected $cache = []; - protected $defaultSettingsManager; + protected $defaultSettings = []; - public function __construct(SettingsRepositoryInterface $inner, DefaultSettingsManager $defaultSettingsManager) + public function __construct(SettingsRepositoryInterface $inner, array $defaultSettings) { $this->inner = $inner; - $this->defaultSettingsManager = $defaultSettingsManager; + $this->defaultSettings = $defaultSettings; } public function all(): array { if (! $this->isCached) { - $this->cache = $this->inner->all(); + $this->cache = array_merge($this->defaultSettings, $this->inner->all()); $this->isCached = true; } @@ -39,15 +39,13 @@ public function all(): array public function get($key, $default = null) { - $value = $this->defaultSettingsManager->get($key, $default); - if (array_key_exists($key, $this->cache)) { - $value = $this->cache[$key]; + return $this->cache[$key]; } elseif (! $this->isCached) { - $value = Arr::get($this->all(), $key, $value); + return Arr::get($this->all(), $key, $default); } - return $value; + return $default; } public function set($key, $value) diff --git a/src/Settings/SettingsServiceProvider.php b/src/Settings/SettingsServiceProvider.php index 11cebe284a..c4f90c70d5 100644 --- a/src/Settings/SettingsServiceProvider.php +++ b/src/Settings/SettingsServiceProvider.php @@ -20,16 +20,16 @@ class SettingsServiceProvider extends AbstractServiceProvider */ public function register() { - $this->container->singleton(DefaultSettingsManager::class); - - $this->container->alias(DefaultSettingsManager::class, 'flarum.default_settings'); + $this->container->singleton('flarum.settings.default', function () { + return []; + }); $this->container->singleton(SettingsRepositoryInterface::class, function (Container $container) { return new MemoryCacheSettingsRepository( new DatabaseSettingsRepository( $container->make(ConnectionInterface::class) ), - $this->container->make(DefaultSettingsManager::class) + $this->container->make('flarum.settings.default') ); }); diff --git a/tests/unit/Settings/MemoryCacheSettingsRepositoryTest.php b/tests/unit/Settings/MemoryCacheSettingsRepositoryTest.php index 2d6725e515..40771206c7 100644 --- a/tests/unit/Settings/MemoryCacheSettingsRepositoryTest.php +++ b/tests/unit/Settings/MemoryCacheSettingsRepositoryTest.php @@ -9,7 +9,6 @@ namespace Flarum\Tests\unit\Settings; -use Flarum\Settings\DefaultSettingsManager; use Flarum\Settings\MemoryCacheSettingsRepository; use Flarum\Settings\SettingsRepositoryInterface; use Flarum\Testing\unit\TestCase; @@ -18,7 +17,6 @@ class MemoryCacheSettingsRepositoryTest extends TestCase { private $baseRepository; - private $defaultSettingsManager; private $repository; /** @@ -27,8 +25,7 @@ class MemoryCacheSettingsRepositoryTest extends TestCase protected function setUp(): void { $this->baseRepository = m::mock(SettingsRepositoryInterface::class); - $this->defaultSettingsManager = m::mock(DefaultSettingsManager::class); - $this->repository = new MemoryCacheSettingsRepository($this->baseRepository, $this->defaultSettingsManager); + $this->repository = new MemoryCacheSettingsRepository($this->baseRepository, []); } public function test_it_should_return_all_settings_when_not_cached() @@ -42,7 +39,6 @@ public function test_it_should_return_all_settings_when_not_cached() public function test_it_should_retrieve_a_specific_value() { $this->baseRepository->shouldReceive('all')->once()->andReturn(['key1' => 'value1', 'key2' => 'value2']); - $this->defaultSettingsManager->shouldReceive('get')->twice(); $this->assertEquals('value2', $this->repository->get('key2')); $this->assertEquals('value2', $this->repository->get('key2')); // Assert twice to ensure we hit the cache @@ -51,7 +47,6 @@ public function test_it_should_retrieve_a_specific_value() public function test_it_should_set_a_key_value_pair() { $this->baseRepository->shouldReceive('set')->once(); - $this->defaultSettingsManager->shouldReceive('get')->once(); $this->repository->set('key', 'value');