public function GlossaryAZPadItemsProcessor::build in Search API AZ Glossary 8.3
Same name and namespace in other branches
- 8.4 src/Plugin/facets/processor/GlossaryAZPadItemsProcessor.php \Drupal\search_api_glossary\Plugin\facets\processor\GlossaryAZPadItemsProcessor::build()
- 8 src/Plugin/facets/processor/GlossaryAZPadItemsProcessor.php \Drupal\search_api_glossary\Plugin\facets\processor\GlossaryAZPadItemsProcessor::build()
- 8.2 src/Plugin/facets/processor/GlossaryAZPadItemsProcessor.php \Drupal\search_api_glossary\Plugin\facets\processor\GlossaryAZPadItemsProcessor::build()
Runs before the renderable array is created.
Parameters
\Drupal\facets\FacetInterface $facet: The facet being changed.
\Drupal\facets\Result\ResultInterface[] $results: The results being changed.
Return value
\Drupal\facets\Result\ResultInterface[] The changed results.
Overrides BuildProcessorInterface::build
File
- src/
Plugin/ facets/ processor/ GlossaryAZPadItemsProcessor.php, line 27
Class
- GlossaryAZPadItemsProcessor
- Provides a processor to rewrite facet results to pad out missing alpha.
Namespace
Drupal\search_api_glossary\Plugin\facets\processorCode
public function build(FacetInterface $facet, array $results) {
// All good?
// Load up the search index and processor.
$glossary_processor = $facet
->getFacetSource()
->getIndex()
->getProcessor('glossary');
$glossary_processor_config_fields = $glossary_processor
->getConfig();
// Resolve fields.
$glossary_field_id = $facet
->getFieldIdentifier();
$parent_field_id = $glossary_processor
->getFieldName($glossary_field_id);
// Finally get group values.
$glossary_az_grouping = array_values($glossary_processor_config_fields[$parent_field_id]['grouping']);
$glossary_array = [];
// TODO Dependency Inject.
$glossary_helper = \Drupal::service('search_api_glossary.helper');
$group_prefix = $glossary_helper
->glossaryGetGroupNamePrefix();
// If Alpha grouping is not set, pad alpha.
if (!in_array('grouping_az', $glossary_az_grouping, TRUE)) {
// TODO Figure out how to get AZ equivalent in native language.
$glossary_array = array_merge($glossary_array, range('A', 'Z'));
}
else {
$glossary_array[] = $group_prefix['alpha'];
}
// If Numeric grouping is not set, pad alpha.
if (!in_array('grouping_09', $glossary_az_grouping, TRUE)) {
// TODO Figure out how to get 09 equivalent in native language.
$glossary_array = array_merge($glossary_array, array_map('strval', range('0', '9')));
}
else {
$glossary_array[] = $group_prefix['numeric'];
}
// Do we have Non Alpha Numeric grouping?
if (in_array('grouping_other', $glossary_az_grouping, TRUE)) {
// To get # equivalent in native language, change the settings YAML.
$glossary_array[] = $group_prefix['special'];
}
// Generate keys from values.
$glossary_missing = array_combine($glossary_array, $glossary_array);
/** @var \Drupal\facets\Result\ResultInterface $result */
foreach ($results as $result) {
$result_glossary = $result
->getDisplayValue();
// Items that exist in result, remove them from sample array.
if (in_array($result_glossary, $glossary_missing)) {
unset($glossary_missing[$result_glossary]);
}
}
// Loop over the missing items and add them.
foreach ($glossary_missing as $glossary) {
$results[] = new Result($facet, $glossary, $glossary, 0);
}
return $results;
}