From 7f10a5a1b5d73c2fe236f7f3ae3efa1ea899ea51 Mon Sep 17 00:00:00 2001 From: Yixuan Qiu Date: Sat, 17 Apr 2021 21:26:49 +0800 Subject: [PATCH] workaround for flarum/core#2712 --- extend.php | 10 ++++++++-- src/Provider/SearchServiceProvider.php | 20 ++++++++++++++++++++ src/Search/FulltextGambit.php | 2 +- 3 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 src/Provider/SearchServiceProvider.php diff --git a/extend.php b/extend.php index 6d4534c..7c2939f 100644 --- a/extend.php +++ b/extend.php @@ -3,11 +3,17 @@ use Flarum\Extend; use Flarum\Discussion\Search\DiscussionSearcher; use Cosname\Search; +use Cosname\Provider; return [ // Change full-text searcher // // See https://github.com/flarum/core/blob/master/tests/integration/extenders/SimpleFlarumSearchTest.php - (new Extend\SimpleFlarumSearch(DiscussionSearcher::class)) - ->setFullTextGambit(Search\FulltextGambit::class) + // (new Extend\SimpleFlarumSearch(DiscussionSearcher::class)) + // ->setFullTextGambit(Search\FulltextGambit::class) + // + // Right now the method above does not work, see https://discuss.flarum.org/d/26503 + // Below is a workaround + (new Extend\ServiceProvider) + ->register(Provider\SearchServiceProvider::class) ]; diff --git a/src/Provider/SearchServiceProvider.php b/src/Provider/SearchServiceProvider.php new file mode 100644 index 0000000..9506ac0 --- /dev/null +++ b/src/Provider/SearchServiceProvider.php @@ -0,0 +1,20 @@ +container->extend('flarum.simple_search.fulltext_gambits', function ($oldFulltextGambits) { + $oldFulltextGambits[DiscussionSearcher::class] = FulltextGambit::class; + + return $oldFulltextGambits; + }); + } +} diff --git a/src/Search/FulltextGambit.php b/src/Search/FulltextGambit.php index 002f0f2..eb1d9df 100644 --- a/src/Search/FulltextGambit.php +++ b/src/Search/FulltextGambit.php @@ -63,7 +63,7 @@ public function apply(SearchState $search, $bit) $query ->addSelect('posts_ft.most_relevant_post_id') ->join( - new Expression('('.$subquery->toSql().') '.$grammar->wrap('posts_ft')), + new Expression('('.$subquery->toSql().') '.$grammar->wrapTable('posts_ft')), 'posts_ft.discussion_id', '=', 'discussions.id' ) ->addBinding($subquery->getBindings(), 'join')