From 668de470956b343acc34053fcfb0cb6adee92cf5 Mon Sep 17 00:00:00 2001 From: Alexander Skvortsov Date: Sat, 13 Mar 2021 15:35:53 -0500 Subject: [PATCH] Update for search filter split --- extensions/lock/extend.php | 16 +++---- extensions/lock/src/Gambit/LockedGambit.php | 29 ------------- .../lock/src/Query/LockedFilterGambit.php | 42 +++++++++++++++++++ 3 files changed, 50 insertions(+), 37 deletions(-) delete mode 100644 extensions/lock/src/Gambit/LockedGambit.php create mode 100644 extensions/lock/src/Query/LockedFilterGambit.php diff --git a/extensions/lock/extend.php b/extensions/lock/extend.php index beff8eae8..c9b81a3c3 100644 --- a/extensions/lock/extend.php +++ b/extensions/lock/extend.php @@ -11,16 +11,16 @@ use Flarum\Api\Serializer\BasicDiscussionSerializer; use Flarum\Api\Serializer\DiscussionSerializer; use Flarum\Discussion\Discussion; use Flarum\Discussion\Event\Saving; -use Flarum\Event\ConfigureDiscussionGambits; +use Flarum\Discussion\Filter\DiscussionFilterer; +use Flarum\Discussion\Search\DiscussionSearcher; use Flarum\Extend; use Flarum\Lock\Access; use Flarum\Lock\Event\DiscussionWasLocked; use Flarum\Lock\Event\DiscussionWasUnlocked; -use Flarum\Lock\Gambit\LockedGambit; +use Flarum\Lock\Query\LockedFilterGambit; use Flarum\Lock\Listener; use Flarum\Lock\Notification\DiscussionLockedBlueprint; use Flarum\Lock\Post\DiscussionLockedPost; -use Illuminate\Contracts\Events\Dispatcher; return [ (new Extend\Frontend('forum')) @@ -54,9 +54,9 @@ return [ (new Extend\Policy()) ->modelPolicy(Discussion::class, Access\DiscussionPolicy::class), - function (Dispatcher $events) { - $events->listen(ConfigureDiscussionGambits::class, function (ConfigureDiscussionGambits $event) { - $event->gambits->add(LockedGambit::class); - }); - }, + (new Extend\Filter(DiscussionFilterer::class)) + ->addFilter(LockedFilterGambit::class), + + (new Extend\SimpleFlarumSearch(DiscussionSearcher::class)) + ->addGambit(LockedFilterGambit::class), ]; diff --git a/extensions/lock/src/Gambit/LockedGambit.php b/extensions/lock/src/Gambit/LockedGambit.php deleted file mode 100644 index 6012779dc..000000000 --- a/extensions/lock/src/Gambit/LockedGambit.php +++ /dev/null @@ -1,29 +0,0 @@ -getQuery()->where('is_locked', ! $negate); - } -} diff --git a/extensions/lock/src/Query/LockedFilterGambit.php b/extensions/lock/src/Query/LockedFilterGambit.php new file mode 100644 index 000000000..e2910ad8e --- /dev/null +++ b/extensions/lock/src/Query/LockedFilterGambit.php @@ -0,0 +1,42 @@ +constrain($searchState->getQuery(), $negate); + } + + public function getFilterKey(): string { + return 'locked'; + } + + public function filter(FilterState $filterState, string $filterValue, bool $negate) + { + $this->constrain($filterState->getQuery(), $negate); + } + + protected function constrain(Builder $query, bool $negate) + { + $query->where('is_locked', ! $negate); + } +}