From bf223071f2c5f25f3bc4294e6ce7fbba4178206e Mon Sep 17 00:00:00 2001 From: Clark Winkelmann Date: Sun, 16 Aug 2020 22:33:41 +0200 Subject: [PATCH] Fixes flarum/core#2168 negated tags not working (#88) orWhereIn doesn't have the $not parameter and the argument was ignored by PHP --- extensions/tags/src/Gambit/TagGambit.php | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/extensions/tags/src/Gambit/TagGambit.php b/extensions/tags/src/Gambit/TagGambit.php index 8dd5a1728..45542db5f 100644 --- a/extensions/tags/src/Gambit/TagGambit.php +++ b/extensions/tags/src/Gambit/TagGambit.php @@ -12,6 +12,7 @@ namespace Flarum\Tags\Gambit; use Flarum\Search\AbstractRegexGambit; use Flarum\Search\AbstractSearch; use Flarum\Tags\TagRepository; +use Illuminate\Database\Query\Builder; class TagGambit extends AbstractRegexGambit { @@ -40,21 +41,21 @@ class TagGambit extends AbstractRegexGambit { $slugs = explode(',', trim($matches[1], '"')); - $search->getQuery()->where(function ($query) use ($slugs, $negate) { + $search->getQuery()->where(function (Builder $query) use ($slugs, $negate) { foreach ($slugs as $slug) { if ($slug === 'untagged') { - $query->orWhereIn('discussions.id', function ($query) { + $query->whereIn('discussions.id', function (Builder $query) { $query->select('discussion_id') ->from('discussion_tag'); - }, ! $negate); + }, 'or', ! $negate); } else { $id = $this->tags->getIdForSlug($slug); - $query->orWhereIn('discussions.id', function ($query) use ($id) { + $query->whereIn('discussions.id', function (Builder $query) use ($id) { $query->select('discussion_id') ->from('discussion_tag') ->where('tag_id', $id); - }, $negate); + }, 'or', $negate); } } });