Use proper Event and Service Provider extenders

This commit is contained in:
Alexander Skvortsov 2020-12-08 13:37:23 -05:00
parent 6ce50a1c52
commit d747946e49
2 changed files with 33 additions and 21 deletions

View File

@ -8,15 +8,11 @@
*/ */
use Flarum\Akismet\Listener; use Flarum\Akismet\Listener;
use Flarum\Akismet\Provider\AkismetProvider;
use Flarum\Approval\Event\PostWasApproved; use Flarum\Approval\Event\PostWasApproved;
use Flarum\Extend; use Flarum\Extend;
use Flarum\Http\UrlGenerator;
use Flarum\Post\Event\Hidden; use Flarum\Post\Event\Hidden;
use Flarum\Post\Event\Saving; use Flarum\Post\Event\Saving;
use Flarum\Settings\SettingsRepositoryInterface;
use Illuminate\Contracts\Container\Container;
use Illuminate\Contracts\Events\Dispatcher;
use TijsVerkoyen\Akismet\Akismet;
return [ return [
(new Extend\Frontend('forum')) (new Extend\Frontend('forum'))
@ -27,21 +23,11 @@ return [
new Extend\Locales(__DIR__.'/locale'), new Extend\Locales(__DIR__.'/locale'),
function (Dispatcher $events, Container $container) { (new Extend\Event())
$container->bind(Akismet::class, function ($app) { ->listen(Hidden::class, Listener\SubmitSpam::class)
/** @var SettingsRepositoryInterface $settings */ ->listen(PostWasApproved::class, Listener\SubmitHam::class)
$settings = $app->make(SettingsRepositoryInterface::class); ->listen(Saving::class, Listener\ValidatePost::class),
/** @var UrlGenerator $url */
$url = $app->make(UrlGenerator::class);
return new Akismet( (new Extend\ServiceProvider())
$settings->get('flarum-akismet.api_key'), ->register(AkismetProvider::class),
$url->to('forum')->base()
);
});
$events->listen(Saving::class, Listener\ValidatePost::class);
$events->listen(PostWasApproved::class, Listener\SubmitHam::class);
$events->listen(Hidden::class, Listener\SubmitSpam::class);
},
]; ];

View File

@ -0,0 +1,26 @@
<?php
namespace Flarum\Akismet\Provider;
use Flarum\Foundation\AbstractServiceProvider;
use Flarum\Http\UrlGenerator;
use Flarum\Settings\SettingsRepositoryInterface;
use TijsVerkoyen\Akismet\Akismet;
class AkismetProvider extends AbstractServiceProvider
{
public function register()
{
$this->app->bind(Akismet::class, function () {
/** @var SettingsRepositoryInterface $settings */
$settings = $this->app->make(SettingsRepositoryInterface::class);
/** @var UrlGenerator $url */
$url = $this->app->make(UrlGenerator::class);
return new Akismet(
$settings->get('flarum-akismet.api_key'),
$url->to('forum')->base()
);
});
}
}