diff --git a/framework/core/src/Admin/AdminServiceProvider.php b/framework/core/src/Admin/AdminServiceProvider.php index 08c9348e1..ea727c2f0 100644 --- a/framework/core/src/Admin/AdminServiceProvider.php +++ b/framework/core/src/Admin/AdminServiceProvider.php @@ -12,8 +12,11 @@ namespace Flarum\Admin; use Flarum\Event\ConfigureMiddleware; +use Flarum\Extension\Event\Disabled; +use Flarum\Extension\Event\Enabled; use Flarum\Foundation\AbstractServiceProvider; use Flarum\Foundation\Application; +use Flarum\Foundation\Event\ClearingCache; use Flarum\Frontend\AddLocaleAssets; use Flarum\Frontend\AddTranslations; use Flarum\Frontend\Compiler\Source\SourceCollector; @@ -22,6 +25,8 @@ use Flarum\Http\Middleware as HttpMiddleware; use Flarum\Http\RouteCollection; use Flarum\Http\RouteHandlerFactory; use Flarum\Http\UrlGenerator; +use Flarum\Locale\LocaleManager; +use Flarum\Settings\Event\Saved; use Zend\Stratigility\MiddlewarePipe; class AdminServiceProvider extends AbstractServiceProvider @@ -102,11 +107,28 @@ class AdminServiceProvider extends AbstractServiceProvider $this->loadViewsFrom(__DIR__.'/../../views', 'flarum.admin'); - $this->app->make('events')->subscribe( - new RecompileFrontendAssets( - $this->app->make('flarum.assets.admin'), - $this->app->make('flarum.locales') - ) + $events = $this->app->make('events'); + + $events->listen( + [Enabled::class, Disabled::class, ClearingCache::class], + function () { + $recompile = new RecompileFrontendAssets( + $this->app->make('flarum.assets.admin'), + $this->app->make(LocaleManager::class) + ); + $recompile->flush(); + } + ); + + $events->listen( + Saved::class, + function (Saved $event) { + $recompile = new RecompileFrontendAssets( + $this->app->make('flarum.assets.admin'), + $this->app->make(LocaleManager::class) + ); + $recompile->whenSettingsSaved($event); + } ); } diff --git a/framework/core/src/Extend/Frontend.php b/framework/core/src/Extend/Frontend.php index cd3d0abc0..90ca00559 100644 --- a/framework/core/src/Extend/Frontend.php +++ b/framework/core/src/Extend/Frontend.php @@ -11,13 +11,18 @@ namespace Flarum\Extend; +use Flarum\Extension\Event\Disabled; +use Flarum\Extension\Event\Enabled; use Flarum\Extension\Extension; +use Flarum\Foundation\Event\ClearingCache; use Flarum\Frontend\Assets; use Flarum\Frontend\Compiler\Source\SourceCollector; use Flarum\Frontend\Frontend as ActualFrontend; use Flarum\Frontend\RecompileFrontendAssets; use Flarum\Http\RouteCollection; use Flarum\Http\RouteHandlerFactory; +use Flarum\Locale\LocaleManager; +use Flarum\Settings\Event\Saved; use Illuminate\Contracts\Container\Container; class Frontend implements ExtenderInterface @@ -108,11 +113,29 @@ class Frontend implements ExtenderInterface return $container->make('flarum.assets.factory')($this->frontend); }); - $container->make('events')->subscribe( - new RecompileFrontendAssets( - $container->make($abstract), - $container->make('flarum.locales') - ) + /** @var \Illuminate\Contracts\Events\Dispatcher $events */ + $events = $container->make('events'); + + $events->listen( + [Enabled::class, Disabled::class, ClearingCache::class], + function () use ($container, $abstract) { + $recompile = new RecompileFrontendAssets( + $container->make($abstract), + $container->make(LocaleManager::class) + ); + $recompile->flush(); + } + ); + + $events->listen( + Saved::class, + function (Saved $event) use ($container, $abstract) { + $recompile = new RecompileFrontendAssets( + $container->make($abstract), + $container->make(LocaleManager::class) + ); + $recompile->whenSettingsSaved($event); + } ); } } diff --git a/framework/core/src/Forum/ForumServiceProvider.php b/framework/core/src/Forum/ForumServiceProvider.php index 2d40259d9..94ee49d5b 100644 --- a/framework/core/src/Forum/ForumServiceProvider.php +++ b/framework/core/src/Forum/ForumServiceProvider.php @@ -13,9 +13,12 @@ namespace Flarum\Forum; use Flarum\Event\ConfigureForumRoutes; use Flarum\Event\ConfigureMiddleware; +use Flarum\Extension\Event\Disabled; +use Flarum\Extension\Event\Enabled; use Flarum\Formatter\Formatter; use Flarum\Foundation\AbstractServiceProvider; use Flarum\Foundation\Application; +use Flarum\Foundation\Event\ClearingCache; use Flarum\Frontend\AddLocaleAssets; use Flarum\Frontend\AddTranslations; use Flarum\Frontend\Assets; @@ -25,6 +28,8 @@ use Flarum\Http\Middleware as HttpMiddleware; use Flarum\Http\RouteCollection; use Flarum\Http\RouteHandlerFactory; use Flarum\Http\UrlGenerator; +use Flarum\Locale\LocaleManager; +use Flarum\Settings\Event\Saved; use Flarum\Settings\SettingsRepositoryInterface; use Symfony\Component\Translation\TranslatorInterface; use Zend\Stratigility\MiddlewarePipe; @@ -116,11 +121,26 @@ class ForumServiceProvider extends AbstractServiceProvider $events = $this->app->make('events'); - $events->subscribe( - new RecompileFrontendAssets( - $this->app->make('flarum.assets.forum'), - $this->app->make('flarum.locales') - ) + $events->listen( + [Enabled::class, Disabled::class, ClearingCache::class], + function () { + $recompile = new RecompileFrontendAssets( + $this->app->make('flarum.assets.forum'), + $this->app->make(LocaleManager::class) + ); + $recompile->flush(); + } + ); + + $events->listen( + Saved::class, + function (Saved $event) { + $recompile = new RecompileFrontendAssets( + $this->app->make('flarum.assets.forum'), + $this->app->make(LocaleManager::class) + ); + $recompile->whenSettingsSaved($event); + } ); $events->subscribe( diff --git a/framework/core/src/Frontend/RecompileFrontendAssets.php b/framework/core/src/Frontend/RecompileFrontendAssets.php index 9351da9bc..8fb372695 100644 --- a/framework/core/src/Frontend/RecompileFrontendAssets.php +++ b/framework/core/src/Frontend/RecompileFrontendAssets.php @@ -11,12 +11,8 @@ namespace Flarum\Frontend; -use Flarum\Extension\Event\Disabled; -use Flarum\Extension\Event\Enabled; -use Flarum\Foundation\Event\ClearingCache; use Flarum\Locale\LocaleManager; use Flarum\Settings\Event\Saved; -use Illuminate\Contracts\Events\Dispatcher; class RecompileFrontendAssets { @@ -40,17 +36,6 @@ class RecompileFrontendAssets $this->locales = $locales; } - /** - * @param Dispatcher $events - */ - public function subscribe(Dispatcher $events) - { - $events->listen(Saved::class, [$this, 'whenSettingsSaved']); - $events->listen(Enabled::class, [$this, 'flush']); - $events->listen(Disabled::class, [$this, 'flush']); - $events->listen(ClearingCache::class, [$this, 'flush']); - } - public function whenSettingsSaved(Saved $event) { if (preg_grep('/^theme_/i', array_keys($event->settings))) {