mirror of
https://github.com/flarum/core.git
synced 2025-07-12 12:26:23 +02:00
Allow extensions to return a callback instead of a provider name
This is useful for very simple extensions like language packs, because it means no Composer/namespacing and thus bootstrap.php doesn't have to be changed at all.
This commit is contained in:
@ -23,19 +23,19 @@ class ExtensionsServiceProvider extends ServiceProvider
|
||||
|
||||
$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);
|
||||
}
|
||||
}
|
||||
|
||||
$events = $this->app->make('events');
|
||||
|
||||
foreach ($providers as $provider) {
|
||||
$provider->listen($events);
|
||||
foreach ($extensions as $extension) {
|
||||
if (file_exists($file = public_path().'/extensions/'.$extension.'/bootstrap.php')) {
|
||||
$provider = require $file;
|
||||
|
||||
if (is_string($provider)) {
|
||||
$this->app->register($provider)->listen($events);
|
||||
} elseif (is_callable($provider)) {
|
||||
$provider($events);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user