diff --git a/framework/core/src/Core/CoreServiceProvider.php b/framework/core/src/Core/CoreServiceProvider.php index 9314407c9..063701907 100644 --- a/framework/core/src/Core/CoreServiceProvider.php +++ b/framework/core/src/Core/CoreServiceProvider.php @@ -1,7 +1,5 @@ app->singleton('Flarum\Core\Settings\SettingsRepository', function () { - return new MemoryCacheSettingsRepository( - new DatabaseSettingsRepository( - $this->app->make('Illuminate\Database\ConnectionInterface') - ) - ); - }); - $this->app->singleton('flarum.forum', 'Flarum\Core\Forum'); // TODO: probably use Illuminate's AggregateServiceProvider diff --git a/framework/core/src/Core/Settings/SettingsServiceProvider.php b/framework/core/src/Core/Settings/SettingsServiceProvider.php new file mode 100644 index 000000000..1bc6064ac --- /dev/null +++ b/framework/core/src/Core/Settings/SettingsServiceProvider.php @@ -0,0 +1,22 @@ +app->singleton('Flarum\Core\Settings\SettingsRepository', function () { + return new MemoryCacheSettingsRepository( + new DatabaseSettingsRepository( + $this->app->make('Illuminate\Database\ConnectionInterface') + ) + ); + }); + } +} diff --git a/framework/core/src/Support/Extension.php b/framework/core/src/Support/Extension.php new file mode 100644 index 000000000..65b947b28 --- /dev/null +++ b/framework/core/src/Support/Extension.php @@ -0,0 +1,7 @@ +app->make('Flarum\Core\Settings\SettingsRepository')->get('extensions_enabled'); - $extensions = json_decode($config, true); - $providers = []; - - foreach ($extensions as $extension) { - if (file_exists($file = public_path().'/extensions/'.$extension.'/bootstrap.php') || - file_exists($file = base_path().'/extensions/'.$extension.'/bootstrap.php')) { - $providers[$extension] = require $file; - } - } - - // @todo store $providers somewhere (in Core?) so that extensions can talk to each other - } -} diff --git a/framework/core/src/Support/ExtensionsServiceProvider.php b/framework/core/src/Support/ExtensionsServiceProvider.php new file mode 100644 index 000000000..8399c4897 --- /dev/null +++ b/framework/core/src/Support/ExtensionsServiceProvider.php @@ -0,0 +1,23 @@ +app->make('Flarum\Core\Settings\SettingsRepository')->get('extensions_enabled'); + $extensions = json_decode($config, true); + $providers = []; + + foreach ($extensions as $extension) { + if (file_exists($file = public_path().'/extensions/'.$extension.'/bootstrap.php')) { + $providerName = require $file; + $providers[$extension] = $this->app->register($providerName); + } + } + } +} diff --git a/framework/core/src/Support/ServiceProvider.php b/framework/core/src/Support/ServiceProvider.php index f67858b49..b50ac38f3 100644 --- a/framework/core/src/Support/ServiceProvider.php +++ b/framework/core/src/Support/ServiceProvider.php @@ -1,22 +1,9 @@ extend($this->extenders()); - } - /** * Register the service provider. * @@ -25,32 +12,4 @@ class ServiceProvider extends IlluminateServiceProvider public function register() { } - - /** - * @return ExtenderInterface[] - */ - public function extenders() - { - return []; - } - - /** - * @param ExtenderInterface|ExtenderInterface[] $extenders - * @return void - */ - protected function extend($extenders) - { - if (! is_array($extenders)) { - $extenders = [$extenders]; - } - - foreach ($extenders as $extender) { - if (! $extender instanceof ExtenderInterface) { - throw new InvalidArgumentException('Argument must be an object of type ' - . ExtenderInterface::class); - } - - $extender->extend($this->app); - } - } }