You are here

protected function SearchApiMultiViewsHandlerFilterOptions::get_wrapper in Search API Multi-Index Searches 7

Retrieves a wrapper for this filter's field.

Return value

EntityMetadataWrapper|null A wrapper for the field which this filter uses.

Overrides SearchApiViewsHandlerFilterOptions::get_wrapper

File

views/handler_filter_options.inc, line 16
Contains the SearchApiMultiViewsHandlerFilterOptions class.

Class

SearchApiMultiViewsHandlerFilterOptions
Views filter handler for fields with a limited set of possible values.

Code

protected function get_wrapper() {
  list($index_id, $property) = explode(':', $this->real_field, 2);
  $index = search_api_index_load($index_id);
  if (!$index) {
    return NULL;
  }
  $wrapper = $index
    ->entityWrapper(NULL, TRUE);
  $parts = explode(':', $property);
  foreach ($parts as $i => $part) {
    if (!isset($wrapper->{$part})) {
      return NULL;
    }
    $wrapper = $wrapper->{$part};
    $info = $wrapper
      ->info();
    if ($i < count($parts) - 1) {

      // Unwrap lists.
      $level = search_api_list_nesting_level($info['type']);
      for ($j = 0; $j < $level; ++$j) {
        $wrapper = $wrapper[0];
      }
    }
  }
  return $wrapper;
}