mirror of
https://github.com/flarum/core.git
synced 2025-07-21 00:31:17 +02:00
Change order of bootstrapping
See commit on flarum/flarum for explanation
This commit is contained in:
@@ -1,7 +1,5 @@
|
|||||||
<?php namespace Flarum\Core;
|
<?php namespace Flarum\Core;
|
||||||
|
|
||||||
use Flarum\Core\Settings\MemoryCacheSettingsRepository;
|
|
||||||
use Flarum\Core\Settings\DatabaseSettingsRepository;
|
|
||||||
use Flarum\Core\Users\User;
|
use Flarum\Core\Users\User;
|
||||||
use Flarum\Events\ModelAllow;
|
use Flarum\Events\ModelAllow;
|
||||||
use Flarum\Support\ServiceProvider;
|
use Flarum\Support\ServiceProvider;
|
||||||
@@ -39,14 +37,6 @@ class CoreServiceProvider extends ServiceProvider
|
|||||||
*/
|
*/
|
||||||
public function register()
|
public function register()
|
||||||
{
|
{
|
||||||
$this->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');
|
$this->app->singleton('flarum.forum', 'Flarum\Core\Forum');
|
||||||
|
|
||||||
// TODO: probably use Illuminate's AggregateServiceProvider
|
// TODO: probably use Illuminate's AggregateServiceProvider
|
||||||
|
22
framework/core/src/Core/Settings/SettingsServiceProvider.php
Normal file
22
framework/core/src/Core/Settings/SettingsServiceProvider.php
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
<?php namespace Flarum\Core\Settings;
|
||||||
|
|
||||||
|
use Flarum\Support\ServiceProvider;
|
||||||
|
|
||||||
|
class SettingsServiceProvider extends ServiceProvider
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Register the service provider.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function register()
|
||||||
|
{
|
||||||
|
$this->app->singleton('Flarum\Core\Settings\SettingsRepository', function () {
|
||||||
|
return new MemoryCacheSettingsRepository(
|
||||||
|
new DatabaseSettingsRepository(
|
||||||
|
$this->app->make('Illuminate\Database\ConnectionInterface')
|
||||||
|
)
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
7
framework/core/src/Support/Extension.php
Normal file
7
framework/core/src/Support/Extension.php
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
<?php namespace Flarum\Support;
|
||||||
|
|
||||||
|
use Flarum\Support\ServiceProvider;
|
||||||
|
|
||||||
|
class Extension extends ServiceProvider
|
||||||
|
{
|
||||||
|
}
|
@@ -1,42 +0,0 @@
|
|||||||
<?php namespace Flarum\Support\Extensions;
|
|
||||||
|
|
||||||
use Flarum\Core;
|
|
||||||
use Illuminate\Support\ServiceProvider;
|
|
||||||
|
|
||||||
class ExtensionsServiceProvider extends ServiceProvider
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Register the service provider.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function register()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Boot the service provider.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function boot()
|
|
||||||
{
|
|
||||||
// Extensions will not be registered if Flarum is not installed yet
|
|
||||||
if (!Core::isInstalled()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$config = $this->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
|
|
||||||
}
|
|
||||||
}
|
|
23
framework/core/src/Support/ExtensionsServiceProvider.php
Normal file
23
framework/core/src/Support/ExtensionsServiceProvider.php
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<?php namespace Flarum\Support;
|
||||||
|
|
||||||
|
class ExtensionsServiceProvider extends ServiceProvider
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Register the service provider.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function register()
|
||||||
|
{
|
||||||
|
$config = $this->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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -1,22 +1,9 @@
|
|||||||
<?php namespace Flarum\Support;
|
<?php namespace Flarum\Support;
|
||||||
|
|
||||||
use Flarum\Extend\ExtenderInterface;
|
|
||||||
use Illuminate\Support\ServiceProvider as IlluminateServiceProvider;
|
use Illuminate\Support\ServiceProvider as IlluminateServiceProvider;
|
||||||
use Illuminate\Contracts\Events\Dispatcher;
|
|
||||||
use InvalidArgumentException;
|
|
||||||
|
|
||||||
class ServiceProvider extends IlluminateServiceProvider
|
class ServiceProvider extends IlluminateServiceProvider
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* Bootstrap the application events.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function boot()
|
|
||||||
{
|
|
||||||
$this->extend($this->extenders());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Register the service provider.
|
* Register the service provider.
|
||||||
*
|
*
|
||||||
@@ -25,32 +12,4 @@ class ServiceProvider extends IlluminateServiceProvider
|
|||||||
public function register()
|
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user