GlossaryAZPadItemsProcessor.php in Search API AZ Glossary 8
File
src/Plugin/facets/processor/GlossaryAZPadItemsProcessor.php
View source
<?php
namespace Drupal\search_api_glossary\Plugin\facets\processor;
use Drupal\facets\FacetInterface;
use Drupal\facets\Processor\BuildProcessorInterface;
use Drupal\facets\Processor\ProcessorPluginBase;
use Drupal\facets\Result\Result;
class GlossaryAZPadItemsProcessor extends ProcessorPluginBase implements BuildProcessorInterface {
public function build(FacetInterface $facet, array $results) {
$glossary_field_id = $facet
->getFieldIdentifier();
$config = \Drupal::config('search_api_glossary.settings');
$glossary_field_settings = $config
->get($glossary_field_id);
if ($glossary_field_settings == NULL) {
return $results;
}
$glossary_az_grouping = array_values($glossary_field_settings['glossary_az_grouping']);
$glossary_array = array();
if (!in_array('glossary_az_grouping_az', $glossary_az_grouping, TRUE)) {
$glossary_array = array_merge($glossary_array, range('A', 'Z'));
}
else {
$glossary_array[] = "A-Z";
}
if (!in_array('glossary_az_grouping_09', $glossary_az_grouping, TRUE)) {
$glossary_array = array_merge($glossary_array, array_map('strval', range('0', '9')));
}
else {
$glossary_array[] = "0-9";
}
if (in_array('glossary_az_grouping_other', $glossary_az_grouping, TRUE)) {
$glossary_array[] = "#";
}
$glossary_missing = array_combine($glossary_array, $glossary_array);
foreach ($results as $result) {
$result_glossary = $result
->getDisplayValue();
if (in_array($result_glossary, $glossary_missing)) {
unset($glossary_missing[$result_glossary]);
}
}
foreach ($glossary_missing as $glossary) {
$results[] = new Result($glossary, $glossary, 0);
}
return $results;
}
}