Merge pull request #1465 from flarum/tz/formatter-extender

Rename and improve FormatterConfiguration extender
This commit is contained in:
Franz Liedke 2018-06-21 10:11:35 +02:00 committed by GitHub
commit e12386d6ec
2 changed files with 55 additions and 37 deletions

View File

@ -0,0 +1,55 @@
<?php
/*
* This file is part of Flarum.
*
* (c) Toby Zerner <toby.zerner@gmail.com>
*
* 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();
}
}
);
}
}

View File

@ -1,37 +0,0 @@
<?php
/*
* This file is part of Flarum.
*
* (c) Toby Zerner <toby.zerner@gmail.com>
*
* 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);
}
);
}
}