search_api-8.x-1.15/src/Plugin/search_api/processor/IgnoreCase.php
src/Plugin/search_api/processor/IgnoreCase.php
<?php
namespace Drupal\search_api\Plugin\search_api\processor;
use Drupal\search_api\Item\FieldInterface;
use Drupal\search_api\Plugin\search_api\data_type\value\TextValueInterface;
use Drupal\search_api\Processor\FieldsProcessorPluginBase;
/**
* Makes searches case-insensitive on selected fields.
*
* @SearchApiProcessor(
* id = "ignorecase",
* label = @Translation("Ignore case"),
* description = @Translation("Makes searches case-insensitive on selected fields."),
* stages = {
* "pre_index_save" = 0,
* "preprocess_index" = -20,
* "preprocess_query" = -20
* }
* )
*/
class IgnoreCase extends FieldsProcessorPluginBase {
/**
* {@inheritdoc}
*/
protected function processField(FieldInterface $field) {
parent::processField($field);
foreach ($field->getValues() as $value) {
if ($value instanceof TextValueInterface) {
$value->setProperty('lowercase');
}
}
}
/**
* {@inheritdoc}
*/
protected function process(&$value) {
// We don't touch integers, NULL values or the like.
if (is_string($value)) {
$value = mb_strtolower($value);
}
}
}
