- Affected version
- 2.3.7
XF\Repository\SearchRepository
PHP:
public function runSearch(KeywordQuery $query, array $constraints = [], $allowCached = true)
{
$user = \XF::visitor();
/** @var Search $search */
$search = $this->em->create(Search::class);
$search->setupFromQuery($query, $constraints);
$search->user_id = $user->user_id;
if ($allowCached && $this->allowUserUseCachedResults($user))
{
$previous = $this->getPreviousSearch($query, $user);
}
else
{
$previous = null;
}
if ($previous)
{
$search = $previous;
}
else
{
$results = $this->app()->search()->search($query);
if (!$results)
{
return null;
}
$search->search_results = $results;
$search->save();
}
return $search;
}
This does not catch warnings etc. that occur when the search is actually executed and should be changed so
setupFromQuery
is called after the search has been executed.
PHP:
public function runSearch(KeywordQuery $query, array $constraints = [], $allowCached = true)
{
$user = \XF::visitor();
if ($allowCached && $this->allowUserUseCachedResults($user))
{
$previous = $this->getPreviousSearch($query, $user);
if ($previous)
{
return $previous;
}
}
$results = $this->app()->search()->search($query);
if (!$results)
{
return null;
}
$search = $this->em->create(Search::class);
$search->setupFromQuery($query, $constraints);
$search->user_id = $user->user_id;
$search->search_results = $results;
$search->save();
return $search;
}
Last edited: