class SearchApiString in Facets 8
Provides support for string facets within the Search API scope.
This is the default implementation that works with all backends and data types. While you could use this query type for every data type, other query types will usually be better suited for their specific data type.
For example, the SearchApiDate query type will handle its input as a DateTime value, while this class would only be able to work with it as a string.
Plugin annotation
@FacetsQueryType(
id = "search_api_string",
label = @Translation("String"),
)
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
- class \Drupal\facets\QueryType\QueryTypePluginBase implements ConfigurableInterface, DependentPluginInterface, QueryTypeInterface uses DependencyTrait
- class \Drupal\facets\Plugin\facets\query_type\SearchApiString
- class \Drupal\facets\QueryType\QueryTypePluginBase implements ConfigurableInterface, DependentPluginInterface, QueryTypeInterface uses DependencyTrait
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
Expanded class hierarchy of SearchApiString
1 file declares its use of SearchApiString
- SearchApiStringTest.php in tests/
src/ Unit/ Plugin/ query_type/ SearchApiStringTest.php
File
- src/
Plugin/ facets/ query_type/ SearchApiString.php, line 24
Namespace
Drupal\facets\Plugin\facets\query_typeView source
class SearchApiString extends QueryTypePluginBase {
/**
* {@inheritdoc}
*/
public function execute() {
$query = $this->query;
// Only alter the query when there's an actual query object to alter.
if (!empty($query)) {
$operator = $this->facet
->getQueryOperator();
$field_identifier = $this->facet
->getFieldIdentifier();
$exclude = $this->facet
->getExclude();
if ($query
->getProcessingLevel() === QueryInterface::PROCESSING_FULL) {
// Set the options for the actual query.
$options =& $query
->getOptions();
$options['search_api_facets'][$field_identifier] = $this
->getFacetOptions();
}
// Add the filter to the query if there are active values.
$active_items = $this->facet
->getActiveItems();
if (count($active_items)) {
$filter = $query
->createConditionGroup($operator, [
'facet:' . $field_identifier,
]);
foreach ($active_items as $value) {
$filter
->addCondition($this->facet
->getFieldIdentifier(), $value, $exclude ? '<>' : '=');
}
$query
->addConditionGroup($filter);
}
}
}
/**
* {@inheritdoc}
*/
public function build() {
$query_operator = $this->facet
->getQueryOperator();
if (!empty($this->results)) {
$facet_results = [];
foreach ($this->results as $result) {
if ($result['count'] || $query_operator == 'or') {
$result_filter = $result['filter'];
if ($result_filter[0] === '"') {
$result_filter = substr($result_filter, 1);
}
if ($result_filter[strlen($result_filter) - 1] === '"') {
$result_filter = substr($result_filter, 0, -1);
}
$count = $result['count'];
$result = new Result($this->facet, $result_filter, $result_filter, $count);
$facet_results[] = $result;
}
}
$this->facet
->setResults($facet_results);
}
return $this->facet;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
DependencySerializationTrait:: |
protected | property | An array of entity type IDs keyed by the property name of their storages. | |
DependencySerializationTrait:: |
protected | property | An array of service IDs keyed by property name used for serialization. | |
DependencySerializationTrait:: |
public | function | 1 | |
DependencySerializationTrait:: |
public | function | 2 | |
DependencyTrait:: |
protected | property | The object's dependencies. | |
DependencyTrait:: |
protected | function | Adds multiple dependencies. | |
DependencyTrait:: |
protected | function | Adds a dependency. | |
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
PluginBase:: |
protected | property | Configuration information passed into the plugin. | 1 |
PluginBase:: |
protected | property | The plugin implementation definition. | 1 |
PluginBase:: |
protected | property | The plugin_id. | |
PluginBase:: |
constant | A string which is used to separate base plugin IDs from the derivative ID. | ||
PluginBase:: |
public | function |
Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the definition of the plugin implementation. Overrides PluginInspectionInterface:: |
3 |
PluginBase:: |
public | function |
Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: |
|
PluginBase:: |
public | function | Determines if the plugin is configurable. | |
QueryTypePluginBase:: |
protected | property | The facet that needs the query type. | |
QueryTypePluginBase:: |
protected | property | The injected link generator. | |
QueryTypePluginBase:: |
protected | property | The backend native query object. | |
QueryTypePluginBase:: |
protected | property | The results for the facet. | |
QueryTypePluginBase:: |
public | function |
Calculates dependencies for the configured plugin. Overrides DependentPluginInterface:: |
|
QueryTypePluginBase:: |
public | function |
Gets default configuration for this plugin. Overrides ConfigurableInterface:: |
|
QueryTypePluginBase:: |
public | function |
Gets this plugin's configuration. Overrides ConfigurableInterface:: |
|
QueryTypePluginBase:: |
protected | function | Builds facet options that will be send to the backend. | 1 |
QueryTypePluginBase:: |
public | function |
Sets the configuration for this plugin instance. Overrides ConfigurableInterface:: |
|
QueryTypePluginBase:: |
public | function |
Constructs a \Drupal\Component\Plugin\PluginBase object. Overrides PluginBase:: |
1 |
SearchApiString:: |
public | function |
Builds the facet information, so it can be rendered. Overrides QueryTypeInterface:: |
|
SearchApiString:: |
public | function |
Adds facet info to the query using the backend native query object. Overrides QueryTypeInterface:: |
|
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. |