From cd8d7479851df917687202c148c095858541fb36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Sevilla=20Mart=C3=ADn?= Date: Mon, 12 Feb 2018 08:36:37 -0500 Subject: [PATCH] Merge upstream into master --- extensions/suspend/composer.json | 2 +- extensions/suspend/js/admin/src/main.js | 2 +- extensions/suspend/js/forum/src/main.js | 4 +- extensions/suspend/src/Event/Suspended.php | 32 +++++++++++ extensions/suspend/src/Event/Unsuspended.php | 32 +++++++++++ .../suspend/src/Event/UserWasSuspended.php | 2 +- .../suspend/src/Event/UserWasUnsuspended.php | 2 +- .../src/Listener/SaveSuspensionToDatabase.php | 22 +++++--- .../SendNotificationWhenUserIsSuspended.php | 55 +++++++------------ .../Notification/UserSuspendedBlueprint.php | 4 +- .../Notification/UserUnsuspendedBlueprint.php | 4 +- 11 files changed, 110 insertions(+), 51 deletions(-) create mode 100644 extensions/suspend/src/Event/Suspended.php create mode 100644 extensions/suspend/src/Event/Unsuspended.php diff --git a/extensions/suspend/composer.json b/extensions/suspend/composer.json index 33b2830d7..ef0ed66cc 100644 --- a/extensions/suspend/composer.json +++ b/extensions/suspend/composer.json @@ -29,7 +29,7 @@ "flarum-extension": { "title": "Suspend", "icon": { - "name": "ban", + "name": "fas fa-ban", "backgroundColor": "#ddd", "color": "#666" } diff --git a/extensions/suspend/js/admin/src/main.js b/extensions/suspend/js/admin/src/main.js index d81b74f8d..87b9e41fd 100644 --- a/extensions/suspend/js/admin/src/main.js +++ b/extensions/suspend/js/admin/src/main.js @@ -5,7 +5,7 @@ import PermissionGrid from 'flarum/components/PermissionGrid'; app.initializers.add('suspend', () => { extend(PermissionGrid.prototype, 'moderateItems', items => { items.add('suspendUsers', { - icon: 'ban', + icon: 'fas fa-ban', label: app.translator.trans('flarum-suspend.admin.permissions.suspend_users_label'), permission: 'user.suspend' }); diff --git a/extensions/suspend/js/forum/src/main.js b/extensions/suspend/js/forum/src/main.js index 34715bf0e..248f531f1 100644 --- a/extensions/suspend/js/forum/src/main.js +++ b/extensions/suspend/js/forum/src/main.js @@ -21,7 +21,7 @@ app.initializers.add('flarum-suspend', () => { if (user.canSuspend()) { items.add('suspend', Button.component({ children: app.translator.trans('flarum-suspend.forum.user_controls.suspend_button'), - icon: 'ban', + icon: 'fas fa-ban', onclick: () => app.modal.show(new SuspendUserModal({user})) })); } @@ -32,7 +32,7 @@ app.initializers.add('flarum-suspend', () => { if (new Date() < until) { items.add('suspended', Badge.component({ - icon: 'ban', + icon: 'fas fa-ban', type: 'suspended', label: app.translator.trans('flarum-suspend.forum.user_badge.suspended_tooltip') })); diff --git a/extensions/suspend/src/Event/Suspended.php b/extensions/suspend/src/Event/Suspended.php new file mode 100644 index 000000000..f855410fb --- /dev/null +++ b/extensions/suspend/src/Event/Suspended.php @@ -0,0 +1,32 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Flarum\Suspend\Event; + +use Flarum\User\User; + +class Suspended +{ + /** + * @var User + */ + public $user; + /** + * @var User + */ + public $actor; + + public function __construct(User $user, User $actor) + { + $this->user = $user; + $this->actor = $actor; + } +} diff --git a/extensions/suspend/src/Event/Unsuspended.php b/extensions/suspend/src/Event/Unsuspended.php new file mode 100644 index 000000000..4051f15be --- /dev/null +++ b/extensions/suspend/src/Event/Unsuspended.php @@ -0,0 +1,32 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Flarum\Suspend\Event; + +use Flarum\User\User; + +class Unsuspended +{ + /** + * @var User + */ + public $user; + /** + * @var User + */ + public $actor; + + public function __construct(User $user, User $actor) + { + $this->user = $user; + $this->actor = $actor; + } +} diff --git a/extensions/suspend/src/Event/UserWasSuspended.php b/extensions/suspend/src/Event/UserWasSuspended.php index 0f6904ea6..459f21606 100644 --- a/extensions/suspend/src/Event/UserWasSuspended.php +++ b/extensions/suspend/src/Event/UserWasSuspended.php @@ -11,7 +11,7 @@ namespace Flarum\Suspend\Event; -use Flarum\Core\User; +use Flarum\User\User; class UserWasSuspended { diff --git a/extensions/suspend/src/Event/UserWasUnsuspended.php b/extensions/suspend/src/Event/UserWasUnsuspended.php index 90983f413..c766647d8 100644 --- a/extensions/suspend/src/Event/UserWasUnsuspended.php +++ b/extensions/suspend/src/Event/UserWasUnsuspended.php @@ -11,7 +11,7 @@ namespace Flarum\Suspend\Event; -use Flarum\Core\User; +use Flarum\User\User; class UserWasUnsuspended { diff --git a/extensions/suspend/src/Listener/SaveSuspensionToDatabase.php b/extensions/suspend/src/Listener/SaveSuspensionToDatabase.php index 24c56d8a6..c9961defb 100755 --- a/extensions/suspend/src/Listener/SaveSuspensionToDatabase.php +++ b/extensions/suspend/src/Listener/SaveSuspensionToDatabase.php @@ -12,9 +12,9 @@ namespace Flarum\Suspend\Listener; use DateTime; +use Flarum\Suspend\Event\Suspended; +use Flarum\Suspend\Event\Unsuspended; use Flarum\Suspend\SuspendValidator; -use Flarum\Suspend\Event\UserWasSuspended; -use Flarum\Suspend\Event\UserWasUnsuspended; use Flarum\User\AssertPermissionTrait; use Flarum\User\Event\Saving; use Illuminate\Contracts\Events\Dispatcher; @@ -29,13 +29,19 @@ class SaveSuspensionToDatabase * @var SuspendValidator */ protected $validator; + /** + * @var Dispatcher + */ + protected $events; /** * @param SuspendValidator $validator + * @param Dispatcher $events */ - public function __construct(SuspendValidator $validator) + public function __construct(SuspendValidator $validator, Dispatcher $events) { $this->validator = $validator; + $this->events = $events; } /** @@ -65,10 +71,12 @@ class SaveSuspensionToDatabase ? new DateTime($attributes['suspendUntil']) : null; - if (isset($attributes['suspendUntil'])) { - $user->raise(new UserWasSuspended($user, $actor)); - } else { - $user->raise(new UserWasUnsuspended($user, $actor)); + if ($user->isDirty('suspend_until')) { + $this->events->dispatch( + $user->suspend_until === null ? + new Unsuspended($user, $actor) : + new Suspended($user, $actor) + ); } } } diff --git a/extensions/suspend/src/Listener/SendNotificationWhenUserIsSuspended.php b/extensions/suspend/src/Listener/SendNotificationWhenUserIsSuspended.php index 869c33938..1f925c033 100644 --- a/extensions/suspend/src/Listener/SendNotificationWhenUserIsSuspended.php +++ b/extensions/suspend/src/Listener/SendNotificationWhenUserIsSuspended.php @@ -11,15 +11,16 @@ namespace Flarum\Suspend\Listener; -use DateTime; -use Flarum\Api\Serializer\UserBasicSerializer; -use Flarum\Core\Notification\NotificationSyncer; -use Flarum\Core\User; +use Flarum\Api\Serializer\BasicUserSerializer; use Flarum\Event\ConfigureNotificationTypes; +use Flarum\Notification\NotificationSyncer; +use Flarum\Suspend\Event\Suspended; +use Flarum\Suspend\Event\Unsuspended; use Flarum\Suspend\Event\UserWasSuspended; use Flarum\Suspend\Event\UserWasUnsuspended; use Flarum\Suspend\Notification\UserSuspendedBlueprint; use Flarum\Suspend\Notification\UserUnsuspendedBlueprint; +use Flarum\User\User; use Illuminate\Contracts\Events\Dispatcher; class SendNotificationWhenUserIsSuspended @@ -43,8 +44,8 @@ class SendNotificationWhenUserIsSuspended public function subscribe(Dispatcher $events) { $events->listen(ConfigureNotificationTypes::class, [$this, 'registerNotificationType']); - $events->listen(UserWasSuspended::class, [$this, 'whenUserWasSuspended']); - $events->listen(UserWasUnsuspended::class, [$this, 'whenUserWasUnsuspended']); + $events->listen(Suspended::class, [$this, 'whenSuspended']); + $events->listen(Unsuspended::class, [$this, 'whenUnsuspended']); } /** @@ -52,43 +53,29 @@ class SendNotificationWhenUserIsSuspended */ public function registerNotificationType(ConfigureNotificationTypes $event) { - $event->add(UserSuspendedBlueprint::class, UserBasicSerializer::class, ['alert', 'email']); - $event->add(UserUnsuspendedBlueprint::class, UserBasicSerializer::class, ['alert', 'email']); + $event->add(UserSuspendedBlueprint::class, BasicUserSerializer::class, ['alert', 'email']); + $event->add(UserUnsuspendedBlueprint::class, BasicUserSerializer::class, ['alert', 'email']); } /** - * @param UserWasSuspended $event + * @param Suspended $event */ - public function whenUserWasSuspended(UserWasSuspended $event) + public function whenSuspended(Suspended $event) { - $this->sync($event->user, $event->actor, [$event->user]); + $this->notifications->sync( + new UserSuspendedBlueprint($event->user, $event->actor), + [$event->user] + ); } /** - * @param UserWasUnsuspended $event + * @param Unsuspended $event */ - public function whenUserWasUnsuspended(UserWasUnsuspended $event) + public function whenUnsuspended(Unsuspended $event) { - $this->sync($event->user, $event->actor, [$event->user]); - } - - /** - * @param User $user - * @param User $actor - * @param array $recipients - */ - public function sync(User $user, User $actor, array $recipients) - { - if (isset($user->suspend_until) && $user->suspend_until > new DateTime()) { - $this->notifications->sync( - new UserSuspendedBlueprint($user, $actor), - $recipients - ); - } else { - $this->notifications->sync( - new UserUnsuspendedBlueprint($user, $actor), - $recipients - ); - } + $this->notifications->sync( + new UserUnsuspendedBlueprint($event->user, $event->actor), + [$event->user] + ); } } diff --git a/extensions/suspend/src/Notification/UserSuspendedBlueprint.php b/extensions/suspend/src/Notification/UserSuspendedBlueprint.php index d27e811f2..52ac92d4a 100644 --- a/extensions/suspend/src/Notification/UserSuspendedBlueprint.php +++ b/extensions/suspend/src/Notification/UserSuspendedBlueprint.php @@ -11,8 +11,8 @@ namespace Flarum\Suspend\Notification; -use Flarum\Core\Notification\BlueprintInterface; -use Flarum\Core\User; +use Flarum\Notification\Blueprint\BlueprintInterface; +use Flarum\User\User; class UserSuspendedBlueprint implements BlueprintInterface { diff --git a/extensions/suspend/src/Notification/UserUnsuspendedBlueprint.php b/extensions/suspend/src/Notification/UserUnsuspendedBlueprint.php index adf79df32..d9e1806a8 100644 --- a/extensions/suspend/src/Notification/UserUnsuspendedBlueprint.php +++ b/extensions/suspend/src/Notification/UserUnsuspendedBlueprint.php @@ -11,8 +11,8 @@ namespace Flarum\Suspend\Notification; -use Flarum\Core\Notification\BlueprintInterface; -use Flarum\Core\User; +use Flarum\Notification\Blueprint\BlueprintInterface; +use Flarum\User\User; class UserUnsuspendedBlueprint implements BlueprintInterface {