public function UserSelection::entityQueryAlter in Drupal 10
Same name and namespace in other branches
- 8 core/modules/user/src/Plugin/EntityReferenceSelection/UserSelection.php \Drupal\user\Plugin\EntityReferenceSelection\UserSelection::entityQueryAlter()
- 9 core/modules/user/src/Plugin/EntityReferenceSelection/UserSelection.php \Drupal\user\Plugin\EntityReferenceSelection\UserSelection::entityQueryAlter()
File
- core/modules/user/src/Plugin/EntityReferenceSelection/UserSelection.php, line 216
Class
- UserSelection
- Provides specific access control for the user entity type.
Namespace
Drupal\user\Plugin\EntityReferenceSelection
Code
public function entityQueryAlter(SelectInterface $query) {
parent::entityQueryAlter($query);
if (!$this
->getConfiguration()['include_anonymous']) {
return;
}
if ($this->currentUser
->hasPermission('administer users')) {
$conditions =& $query
->conditions();
foreach ($conditions as $key => $condition) {
if ($key !== '#conjunction' && is_string($condition['field']) && $condition['field'] === 'users_field_data.name') {
unset($conditions[$key]);
$or = $this->connection
->condition('OR');
$or
->condition($condition['field'], $condition['value'], $condition['operator']);
$value_part = $this->connection
->condition('AND');
$value_part
->condition('anonymous_name', $condition['value'], $condition['operator']);
$value_part
->compile($this->connection, $query);
$or
->condition($this->connection
->condition('AND')
->where(str_replace($query
->escapeField('anonymous_name'), ':anonymous_name', (string) $value_part), $value_part
->arguments() + [
':anonymous_name' => \Drupal::config('user.settings')
->get('anonymous'),
])
->condition('base_table.uid', 0));
$query
->condition($or);
}
}
}
}