diff --git a/framework/core/src/Extend/Formatter.php b/framework/core/src/Extend/Formatter.php new file mode 100644 index 000000000..13245db4a --- /dev/null +++ b/framework/core/src/Extend/Formatter.php @@ -0,0 +1,55 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Flarum\Extend; + +use Flarum\Extension\Event\Disabled; +use Flarum\Extension\Event\Enabled; +use Flarum\Extension\Extension; +use Flarum\Formatter\Event\Configuring; +use Flarum\Formatter\Formatter as ActualFormatter; +use Illuminate\Contracts\Container\Container; +use Illuminate\Events\Dispatcher; + +class Formatter implements ExtenderInterface +{ + protected $callback; + + public function configure(callable $callback) + { + $this->callback = $callback; + + return $this; + } + + public function __invoke(Container $container, Extension $extension = null) + { + $events = $container->make(Dispatcher::class); + + $events->listen( + Configuring::class, + function (Configuring $event) { + call_user_func($this->callback, $event->configurator); + } + ); + + // Also set up an event listener to flush the formatter cache whenever + // this extension is enabled or disabled. + $events->listen( + [Enabled::class, Disabled::class], + function ($event) use ($container, $extension) { + if ($event->extension === $extension) { + $container->make(ActualFormatter::class)->flush(); + } + } + ); + } +} diff --git a/framework/core/src/Extend/FormatterConfiguration.php b/framework/core/src/Extend/FormatterConfiguration.php deleted file mode 100644 index 61a11d1a4..000000000 --- a/framework/core/src/Extend/FormatterConfiguration.php +++ /dev/null @@ -1,37 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Flarum\Extend; - -use Flarum\Extension\Extension; -use Flarum\Formatter\Event\Configuring; -use Illuminate\Contracts\Container\Container; -use Illuminate\Events\Dispatcher; - -class FormatterConfiguration implements ExtenderInterface -{ - protected $callback; - - public function __construct(callable $callback) - { - $this->callback = $callback; - } - - public function __invoke(Container $container, Extension $extension = null) - { - $container->make(Dispatcher::class)->listen( - Configuring::class, - function (Configuring $event) { - call_user_func($this->callback, $event->configurator); - } - ); - } -}