QueryHelper.php in Search API 8
File
src/Utility/QueryHelper.php
View source
<?php
namespace Drupal\search_api\Utility;
use Drupal\Core\Extension\ModuleHandlerInterface;
use Drupal\search_api\IndexInterface;
use Drupal\search_api\ParseMode\ParseModePluginManager;
use Drupal\search_api\Query\Query;
use Drupal\search_api\Query\ResultSetInterface;
use Symfony\Component\HttpFoundation\RequestStack;
class QueryHelper implements QueryHelperInterface {
protected $requestStack;
protected $moduleHandler;
protected $parseModeManager;
protected $results;
protected $null;
public function __construct(RequestStack $requestStack, ModuleHandlerInterface $moduleHandler, ParseModePluginManager $parseModeManager) {
$this->requestStack = $requestStack;
$this->moduleHandler = $moduleHandler;
$this->parseModeManager = $parseModeManager;
$this->results = new \SplObjectStorage();
$this->null = (object) [];
}
public function createQuery(IndexInterface $index, array $options = []) {
$query = Query::create($index, $options);
$query
->setModuleHandler($this->moduleHandler);
$query
->setParseModeManager($this->parseModeManager);
$query
->setQueryHelper($this);
return $query;
}
public function addResults(ResultSetInterface $results) {
$search_id = $results
->getQuery()
->getSearchId();
$request = $this
->getCurrentRequest();
if (!isset($this->results[$request])) {
$this->results[$request] = [
$search_id => $results,
];
}
else {
$cache = $this->results[$request];
$cache[$search_id] = $results;
$this->results[$request] = $cache;
}
}
public function getResults($search_id) {
return $this->results[$this
->getCurrentRequest()][$search_id] ?? NULL;
}
public function getAllResults() {
return $this->results[$this
->getCurrentRequest()] ?? [];
}
public function removeResults($search_id) {
$results = $this->results[$this
->getCurrentRequest()];
unset($results[$search_id]);
$this->results[$this
->getCurrentRequest()] = $results;
}
protected function getCurrentRequest() {
return $this->requestStack
->getCurrentRequest() ?: $this->null;
}
}
Classes
Name |
Description |
QueryHelper |
Provides methods for creating search queries and statically caching results. |