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