You are here

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);
      }
    }
  }
}