mirror of
https://github.com/flarum/core.git
synced 2025-08-06 08:27:42 +02:00
Update for search filter split
This commit is contained in:
@@ -11,16 +11,16 @@ use Flarum\Api\Serializer\BasicDiscussionSerializer;
|
|||||||
use Flarum\Api\Serializer\DiscussionSerializer;
|
use Flarum\Api\Serializer\DiscussionSerializer;
|
||||||
use Flarum\Discussion\Discussion;
|
use Flarum\Discussion\Discussion;
|
||||||
use Flarum\Discussion\Event\Saving;
|
use Flarum\Discussion\Event\Saving;
|
||||||
use Flarum\Event\ConfigureDiscussionGambits;
|
use Flarum\Discussion\Filter\DiscussionFilterer;
|
||||||
|
use Flarum\Discussion\Search\DiscussionSearcher;
|
||||||
use Flarum\Extend;
|
use Flarum\Extend;
|
||||||
use Flarum\Lock\Access;
|
use Flarum\Lock\Access;
|
||||||
use Flarum\Lock\Event\DiscussionWasLocked;
|
use Flarum\Lock\Event\DiscussionWasLocked;
|
||||||
use Flarum\Lock\Event\DiscussionWasUnlocked;
|
use Flarum\Lock\Event\DiscussionWasUnlocked;
|
||||||
use Flarum\Lock\Gambit\LockedGambit;
|
use Flarum\Lock\Query\LockedFilterGambit;
|
||||||
use Flarum\Lock\Listener;
|
use Flarum\Lock\Listener;
|
||||||
use Flarum\Lock\Notification\DiscussionLockedBlueprint;
|
use Flarum\Lock\Notification\DiscussionLockedBlueprint;
|
||||||
use Flarum\Lock\Post\DiscussionLockedPost;
|
use Flarum\Lock\Post\DiscussionLockedPost;
|
||||||
use Illuminate\Contracts\Events\Dispatcher;
|
|
||||||
|
|
||||||
return [
|
return [
|
||||||
(new Extend\Frontend('forum'))
|
(new Extend\Frontend('forum'))
|
||||||
@@ -54,9 +54,9 @@ return [
|
|||||||
(new Extend\Policy())
|
(new Extend\Policy())
|
||||||
->modelPolicy(Discussion::class, Access\DiscussionPolicy::class),
|
->modelPolicy(Discussion::class, Access\DiscussionPolicy::class),
|
||||||
|
|
||||||
function (Dispatcher $events) {
|
(new Extend\Filter(DiscussionFilterer::class))
|
||||||
$events->listen(ConfigureDiscussionGambits::class, function (ConfigureDiscussionGambits $event) {
|
->addFilter(LockedFilterGambit::class),
|
||||||
$event->gambits->add(LockedGambit::class);
|
|
||||||
});
|
(new Extend\SimpleFlarumSearch(DiscussionSearcher::class))
|
||||||
},
|
->addGambit(LockedFilterGambit::class),
|
||||||
];
|
];
|
||||||
|
@@ -1,29 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This file is part of Flarum.
|
|
||||||
*
|
|
||||||
* For detailed copyright and license information, please view the
|
|
||||||
* LICENSE file that was distributed with this source code.
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace Flarum\Lock\Gambit;
|
|
||||||
|
|
||||||
use Flarum\Search\AbstractRegexGambit;
|
|
||||||
use Flarum\Search\AbstractSearch;
|
|
||||||
|
|
||||||
class LockedGambit extends AbstractRegexGambit
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* {@inheritdoc}
|
|
||||||
*/
|
|
||||||
protected $pattern = 'is:locked';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritdoc}
|
|
||||||
*/
|
|
||||||
protected function conditions(AbstractSearch $search, array $matches, $negate)
|
|
||||||
{
|
|
||||||
$search->getQuery()->where('is_locked', ! $negate);
|
|
||||||
}
|
|
||||||
}
|
|
42
extensions/lock/src/Query/LockedFilterGambit.php
Normal file
42
extensions/lock/src/Query/LockedFilterGambit.php
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of Flarum.
|
||||||
|
*
|
||||||
|
* For detailed copyright and license information, please view the
|
||||||
|
* LICENSE file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Flarum\Lock\Query;
|
||||||
|
|
||||||
|
use Flarum\Filter\FilterInterface;
|
||||||
|
use Flarum\Filter\FilterState;
|
||||||
|
use Flarum\Search\AbstractRegexGambit;
|
||||||
|
use Flarum\Search\SearchState;
|
||||||
|
use Illuminate\Database\Query\Builder;
|
||||||
|
|
||||||
|
class LockedFilterGambit extends AbstractRegexGambit implements FilterInterface
|
||||||
|
{
|
||||||
|
protected function getGambitPattern() {
|
||||||
|
return 'is:locked';
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function conditions(SearchState $searchState, array $matches, $negate)
|
||||||
|
{
|
||||||
|
$this->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);
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user