search_api-8.x-1.15/src/Plugin/views/filter/SearchApiString.php
src/Plugin/views/filter/SearchApiString.php
<?php
namespace Drupal\search_api\Plugin\views\filter;
/**
* Defines a filter for adding conditions on string fields to the query.
*
* Due to the way the Search API works, this inherits from the numeric handler,
* since the operators most closely resemble those from Views' own numeric
* filter. (The Search API doesn't have operators for "contains", "starts
* with", etc. as used by Views' string filter.)
*
* @ingroup views_filter_handlers
*
* @ViewsFilter("search_api_string")
*/
class SearchApiString extends SearchApiNumeric {
/**
* {@inheritdoc}
*/
protected function opBetween($field) {
// The parent implementation in NumericFilter uses is_numeric() checks now,
// so we need to override it to check for any values.
if ($this->value['min'] != '' && $this->value['max'] != '') {
$operator = $this->operator == 'between' ? 'BETWEEN' : 'NOT BETWEEN';
$this->getQuery()->addWhere($this->options['group'], $field, [
$this->value['min'],
$this->value['max']
], $operator);
}
elseif ($this->value['min'] != '') {
$operator = $this->operator == 'between' ? '>=' : '<';
$this->getQuery()->addWhere($this->options['group'], $field, $this->value['min'], $operator);
}
elseif ($this->value['max'] != '') {
$operator = $this->operator == 'between' ? '<=' : '>';
$this->getQuery()->addWhere($this->options['group'], $field, $this->value['max'], $operator);
}
}
}
