You are here

public function SearchApiAlterRoleFilter::alterItems in Search API 7

Implements SearchApiAlterCallbackInterface::alterItems().

Overrides SearchApiAlterCallbackInterface::alterItems

File

includes/callback_role_filter.inc, line 28
Contains the SearchApiAlterRoleFilter class.

Class

SearchApiAlterRoleFilter
Data alteration that filters out users based on their role.

Code

public function alterItems(array &$items) {
  $selected_roles = $this->options['roles'];
  $default = (bool) $this->options['default'];
  $multi_types = $this
    ->isMultiEntityIndex($this->index);
  foreach ($items as $id => $item) {
    if ($multi_types) {
      if ($item->item_type !== 'user') {
        continue;
      }
      $item_roles = $item->user->roles;
    }
    else {
      $item_roles = $item->roles;
    }
    $role_match = count(array_diff_key($item_roles, $selected_roles)) !== count($item_roles);
    if ($role_match === $default) {
      unset($items[$id]);
    }
  }
}