Fix consideration of the search query when generating message excerpts in search...
authorMarcel Werk <burntime@woltlab.com>
Mon, 12 Sep 2022 15:22:24 +0000 (17:22 +0200)
committerMarcel Werk <burntime@woltlab.com>
Mon, 12 Sep 2022 15:22:24 +0000 (17:22 +0200)
Since the rebuild of the search function the results are loaded via AJAX. This accidentally broke the generation of the message excerpt, since the highlight parameter is no longer present at this point.

wcfsetup/install/files/lib/data/search/SearchAction.class.php
wcfsetup/install/files/lib/system/search/SearchResultTextParser.class.php

index 4016205ae2cdb56b1448f19c73a06c8e9cb365ed..1250415c97ec2e433a5340cee2e065e3f3840b6d 100644 (file)
@@ -10,6 +10,7 @@ use wcf\system\flood\FloodControl;
 use wcf\system\search\SearchEngine;
 use wcf\system\search\SearchHandler;
 use wcf\system\search\SearchResultHandler;
+use wcf\system\search\SearchResultTextParser;
 use wcf\system\WCF;
 
 /**
@@ -120,6 +121,7 @@ class SearchAction extends AbstractDatabaseObjectAction
         $resultHandler = new SearchResultHandler($search, $startIndex);
         $resultHandler->loadSearchResults();
         $templateName = $resultHandler->getTemplateName();
+        SearchResultTextParser::getInstance()->setSearchQuery($resultHandler->getQuery());
 
         WCF::getTPL()->assign([
             'objects' => $resultHandler->getSearchResults(),
@@ -166,6 +168,7 @@ class SearchAction extends AbstractDatabaseObjectAction
         $resultHandler = new SearchResultHandler($search, SEARCH_RESULTS_PER_PAGE * ($this->parameters['pageNo'] - 1));
         $resultHandler->loadSearchResults();
         $templateName = $resultHandler->getTemplateName();
+        SearchResultTextParser::getInstance()->setSearchQuery($resultHandler->getQuery());
 
         WCF::getTPL()->assign([
             'objects' => $resultHandler->getSearchResults(),
index d355d686231db79579c26532d2fe1177c6bcba88..1c3a0c1744efaed1e37132b36dc647e748e1a48e 100644 (file)
@@ -218,4 +218,12 @@ class SearchResultTextParser extends SingletonFactory
         // do highlighting
         return KeywordHighlighter::getInstance()->doHighlight($text);
     }
+
+    /**
+     * @since 5.5
+     */
+    public function setSearchQuery(string $searchQuery): void
+    {
+        $this->searchQuery = $searchQuery;
+    }
 }