diff --git a/src/BusServiceProvider.php b/src/BusServiceProvider.php new file mode 100644 index 000000000..4406460f6 --- /dev/null +++ b/src/BusServiceProvider.php @@ -0,0 +1,30 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Flarum; + +use Flarum\Foundation\AbstractServiceProvider; + +/** + * @deprecated + */ +class BusServiceProvider extends AbstractServiceProvider +{ + /** + * {@inheritdoc} + */ + public function boot() + { + $this->app->make('Illuminate\Contracts\Bus\Dispatcher')->mapUsing(function ($command) { + return get_class($command).'Handler@handle'; + }); + } +} diff --git a/src/Discussion/DiscussionServiceProvider.php b/src/Discussion/DiscussionServiceProvider.php new file mode 100644 index 000000000..89b9ce30d --- /dev/null +++ b/src/Discussion/DiscussionServiceProvider.php @@ -0,0 +1,29 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Flarum\Discussion; + +use Flarum\Foundation\AbstractServiceProvider; + +class DiscussionServiceProvider extends AbstractServiceProvider +{ + /** + * {@inheritdoc} + */ + public function boot() + { + $events = $this->app->make('events'); + + $events->subscribe('Flarum\Discussion\DiscussionMetadataUpdater'); + $events->subscribe('Flarum\Discussion\DiscussionPolicy'); + $events->subscribe('Flarum\Discussion\DiscussionRenamedNotifier'); + } +} diff --git a/src/Extension/ExtensionServiceProvider.php b/src/Extension/ExtensionServiceProvider.php index 522f9d9e5..a421b1865 100644 --- a/src/Extension/ExtensionServiceProvider.php +++ b/src/Extension/ExtensionServiceProvider.php @@ -30,4 +30,14 @@ class ExtensionServiceProvider extends AbstractServiceProvider $this->app->call($bootstrapper); } } + + /** + * {@inheritdoc} + */ + public function boot() + { + $events = $this->app->make('events'); + + $events->subscribe('Flarum\Extension\DefaultLanguagePackGuard'); + } } diff --git a/src/Foundation/AbstractServer.php b/src/Foundation/AbstractServer.php index 34ef520d2..bcc7c534b 100644 --- a/src/Foundation/AbstractServer.php +++ b/src/Foundation/AbstractServer.php @@ -190,7 +190,16 @@ abstract class AbstractServer $config->set('mail.username', $settings->get('mail_username')); $config->set('mail.password', $settings->get('mail_password')); - $app->register('Flarum\Core\CoreServiceProvider'); + $app->register('Flarum\BusServiceProvider'); + + $app->register('Flarum\Discussion\DiscussionServiceProvider'); + $app->register('Flarum\Formatter\FormatterServiceProvider'); + $app->register('Flarum\Group\GroupServiceProvider'); + $app->register('Flarum\Notification\NotificationServiceProvider'); + $app->register('Flarum\Post\PostServiceProvider'); + $app->register('Flarum\Search\SearchServiceProvider'); + $app->register('Flarum\User\UserServiceProvider'); + $app->register('Flarum\Api\ApiServiceProvider'); $app->register('Flarum\Forum\ForumServiceProvider'); $app->register('Flarum\Admin\AdminServiceProvider'); diff --git a/src/Frontend/FrontendServiceProvider.php b/src/Frontend/FrontendServiceProvider.php new file mode 100644 index 000000000..aa4ba6064 --- /dev/null +++ b/src/Frontend/FrontendServiceProvider.php @@ -0,0 +1,25 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Flarum\Frontend; + +use Flarum\Foundation\AbstractServiceProvider; + +class FrontendServiceProvider extends AbstractServiceProvider +{ + /** + * {@inheritdoc} + */ + public function boot() + { + $this->loadViewsFrom(__DIR__.'/../../views', 'flarum'); + } +} diff --git a/src/Group/GroupServiceProvider.php b/src/Group/GroupServiceProvider.php new file mode 100644 index 000000000..bdf1ceb15 --- /dev/null +++ b/src/Group/GroupServiceProvider.php @@ -0,0 +1,26 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Flarum\Group; + +use Flarum\Foundation\AbstractServiceProvider; + +class GroupServiceProvider extends AbstractServiceProvider +{ + /** + * {@inheritdoc} + */ + public function boot() + { + $events = $this->app->make('events'); + $events->subscribe('Flarum\Group\GroupPolicy'); + } +} diff --git a/src/Install/Console/InstallCommand.php b/src/Install/Console/InstallCommand.php index ace02e89b..c75928601 100644 --- a/src/Install/Console/InstallCommand.php +++ b/src/Install/Console/InstallCommand.php @@ -171,7 +171,13 @@ class InstallCommand extends AbstractCommand $this->writeSettings(); - $this->application->register('Flarum\Core\CoreServiceProvider'); + $this->application->register('Flarum\Formatter\FormatterServiceProvider'); + $this->application->register('Flarum\Discussion\DiscussionServiceProvider'); + $this->application->register('Flarum\Group\GroupServiceProvider'); + $this->application->register('Flarum\Notification\NotificationServiceProvider'); + $this->application->register('Flarum\Search\SearchServiceProvider'); + $this->application->register('Flarum\Post\PostServiceProvider'); + $this->application->register('Flarum\User\UserServiceProvider'); $this->seedGroups(); $this->seedPermissions(); diff --git a/src/Post/PostServiceProvider.php b/src/Post/PostServiceProvider.php new file mode 100644 index 000000000..b597f875c --- /dev/null +++ b/src/Post/PostServiceProvider.php @@ -0,0 +1,47 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Flarum\Post; + +use Flarum\Event\ConfigurePostTypes; +use Flarum\Foundation\AbstractServiceProvider; + +class PostServiceProvider extends AbstractServiceProvider +{ + /** + * {@inheritdoc} + */ + public function boot() + { + CommentPost::setFormatter($this->app->make('flarum.formatter')); + + $this->registerPostTypes(); + + $events = $this->app->make('events'); + $events->subscribe('Flarum\Post\PostPolicy'); + } + + public function registerPostTypes() + { + $models = [ + 'Flarum\Post\CommentPost', + 'Flarum\Post\DiscussionRenamedPost' + ]; + + $this->app->make('events')->fire( + new ConfigurePostTypes($models) + ); + + foreach ($models as $model) { + Post::setModel($model::$type, $model); + } + } +} diff --git a/src/Core/CoreServiceProvider.php b/src/User/UserServiceProvider.php similarity index 68% rename from src/Core/CoreServiceProvider.php rename to src/User/UserServiceProvider.php index f5b364f28..45a7e8a24 100644 --- a/src/Core/CoreServiceProvider.php +++ b/src/User/UserServiceProvider.php @@ -9,20 +9,14 @@ * file that was distributed with this source code. */ -namespace Flarum\Core; +namespace Flarum\User; -use Flarum\Post\CommentPost; -use Flarum\Event\ConfigurePostTypes; use Flarum\Event\ConfigureUserPreferences; use Flarum\Event\GetPermission; use Flarum\Foundation\AbstractServiceProvider; -use Flarum\Post\Post; -use Flarum\User\Gate; -use Flarum\User\User; use Illuminate\Contracts\Container\Container; -use RuntimeException; -class CoreServiceProvider extends AbstractServiceProvider +class UserServiceProvider extends AbstractServiceProvider { /** * {@inheritdoc} @@ -39,10 +33,6 @@ class CoreServiceProvider extends AbstractServiceProvider $this->app->alias('flarum.gate', 'Flarum\User\Gate'); $this->registerAvatarsFilesystem(); - - $this->app->register('Flarum\Notification\Notification\NotificationServiceProvider'); - $this->app->register('Flarum\Search\SearchServiceProvider'); - $this->app->register('Flarum\Formatter\FormatterServiceProvider'); } protected function registerAvatarsFilesystem() @@ -69,12 +59,6 @@ class CoreServiceProvider extends AbstractServiceProvider */ public function boot() { - $this->loadViewsFrom(__DIR__.'/../../views', 'flarum'); - - $this->app->make('Illuminate\Contracts\Bus\Dispatcher')->mapUsing(function ($command) { - return get_class($command).'Handler@handle'; - }); - $this->app->make('flarum.gate')->before(function (User $actor, $ability, $model = null) { // Fire an event so that core and extension policies can hook into // this permission query and explicitly grant or deny the @@ -97,46 +81,19 @@ class CoreServiceProvider extends AbstractServiceProvider return false; }); - $this->registerPostTypes(); - - CommentPost::setFormatter($this->app->make('flarum.formatter')); - User::setHasher($this->app->make('hash')); User::setGate($this->app->make('flarum.gate')); $events = $this->app->make('events'); $events->subscribe('Flarum\Core\Listener\SelfDemotionGuard'); - $events->subscribe('Flarum\Discussion\DiscussionMetadataUpdater'); - $events->subscribe('Flarum\User\UserMetadataUpdater'); - $events->subscribe('Flarum\Extension\DefaultLanguagePackGuard'); $events->subscribe('Flarum\User\EmailConfirmationMailer'); - $events->subscribe('Flarum\Discussion\DiscussionRenamedNotifier'); - - $events->subscribe('Flarum\Discussion\DiscussionPolicy'); - $events->subscribe('Flarum\Group\GroupPolicy'); - $events->subscribe('Flarum\Post\PostPolicy'); + $events->subscribe('Flarum\User\UserMetadataUpdater'); $events->subscribe('Flarum\User\UserPolicy'); $events->listen(ConfigureUserPreferences::class, [$this, 'configureUserPreferences']); } - public function registerPostTypes() - { - $models = [ - 'Flarum\Post\CommentPost', - 'Flarum\Post\DiscussionRenamedPost' - ]; - - $this->app->make('events')->fire( - new ConfigurePostTypes($models) - ); - - foreach ($models as $model) { - Post::setModel($model::$type, $model); - } - } - /** * @param ConfigureUserPreferences $event */