function search_api_grouping_search_api_solr_field_mapping_alter in Search API Grouping 7.2
Implements hook_search_api_solr_field_mapping_alter().
File
- ./
search_api_grouping.module, line 32 - Module search_api_grouping.
Code
function search_api_grouping_search_api_solr_field_mapping_alter(SearchApiIndex $index, array &$fields) {
$entity_type = search_api_grouping_get_entity_from_type($index->item_type);
$entity_type_info = entity_get_property_info($entity_type);
if (!empty($entity_type_info)) {
// Ge configured fields for denormalization and grouping.
$grouping_fields = DenormalizedEntityIndexHijack::getGroupingProcessorFields($index);
$denormalize_fields = DenormalizedEntityIndexHijack::getDenormalizeProcessorFields($index);
// Adjust all field list types to non-list.
foreach ($fields as $field => $map) {
// Split field and property.
$field_name = $field;
$property = NULL;
if (stristr($field, ':')) {
list($field_name, $property) = explode(':', $field, 2);
}
// If denormalization based on this field is enabled we convert the field
// from multi-value (Xm) to single value (Xs).
if (isset($denormalize_fields[$field_name]) && strpos($map, 'm') === 1 && strpos($field, 'field_') === 0) {
$fields[$field] = substr_replace($map, 's', 1, 1);
}
// If grouping is enabled based on this field we've to convert integer
// fields to type string.
if (isset($grouping_fields[$field_name]) && substr($map, 0, 1) != 's') {
$fields[$field] = substr_replace($map, 's', 0, 1);
}
}
}
}