class User

Same name in this branch
  1. 9 core/modules/user/src/Entity/User.php \Drupal\user\Entity\User
  2. 9 core/modules/user/src/Plugin/views/argument_default/User.php \Drupal\user\Plugin\views\argument_default\User
  3. 9 core/modules/user/src/Plugin/migrate/source/d6/User.php \Drupal\user\Plugin\migrate\source\d6\User
  4. 9 core/modules/user/src/Plugin/migrate/source/d7/User.php \Drupal\user\Plugin\migrate\source\d7\User
  5. 9 core/modules/user/src/Plugin/migrate/User.php \Drupal\user\Plugin\migrate\User
Same name and namespace in other branches
  1. 11.x core/modules/user/src/Entity/User.php \Drupal\user\Entity\User
  2. 11.x core/modules/user/src/Plugin/views/argument_validator/User.php \Drupal\user\Plugin\views\argument_validator\User
  3. 11.x core/modules/user/src/Plugin/views/argument_default/User.php \Drupal\user\Plugin\views\argument_default\User
  4. 11.x core/modules/user/src/Plugin/migrate/source/d6/User.php \Drupal\user\Plugin\migrate\source\d6\User
  5. 11.x core/modules/user/src/Plugin/migrate/source/d7/User.php \Drupal\user\Plugin\migrate\source\d7\User
  6. 11.x core/modules/user/src/Plugin/migrate/User.php \Drupal\user\Plugin\migrate\User
  7. 10 core/modules/user/src/Entity/User.php \Drupal\user\Entity\User
  8. 10 core/modules/user/src/Plugin/views/argument_validator/User.php \Drupal\user\Plugin\views\argument_validator\User
  9. 10 core/modules/user/src/Plugin/views/argument_default/User.php \Drupal\user\Plugin\views\argument_default\User
  10. 10 core/modules/user/src/Plugin/migrate/source/d6/User.php \Drupal\user\Plugin\migrate\source\d6\User
  11. 10 core/modules/user/src/Plugin/migrate/source/d7/User.php \Drupal\user\Plugin\migrate\source\d7\User
  12. 10 core/modules/user/src/Plugin/migrate/User.php \Drupal\user\Plugin\migrate\User
  13. 8.9.x core/modules/user/src/Entity/User.php \Drupal\user\Entity\User
  14. 8.9.x core/modules/user/src/Plugin/views/argument_validator/User.php \Drupal\user\Plugin\views\argument_validator\User
  15. 8.9.x core/modules/user/src/Plugin/views/argument_default/User.php \Drupal\user\Plugin\views\argument_default\User
  16. 8.9.x core/modules/user/src/Plugin/migrate/source/d6/User.php \Drupal\user\Plugin\migrate\source\d6\User
  17. 8.9.x core/modules/user/src/Plugin/migrate/source/d7/User.php \Drupal\user\Plugin\migrate\source\d7\User
  18. 8.9.x core/modules/user/src/Plugin/migrate/User.php \Drupal\user\Plugin\migrate\User

Validate whether an argument is a valid user.

This supports either numeric arguments (UID) or strings (username) and converts either one into the user's UID. This validator also sets the argument's title to the username.

Hierarchy

Expanded class hierarchy of User

927 string references to 'User'
AccessPermissionTest::setUp in core/modules/user/tests/src/Kernel/Views/AccessPermissionTest.php
AccessResult::cachePerUser in core/lib/Drupal/Core/Access/AccessResult.php
Convenience method, adds the "user" cache context.
AccessResultTest::testCacheContexts in core/tests/Drupal/Tests/Core/Access/AccessResultTest.php
@covers ::addCacheContexts[[api-linebreak]] @covers ::resetCacheContexts[[api-linebreak]] @covers ::getCacheContexts[[api-linebreak]] @covers ::cachePerPermissions[[api-linebreak]] @covers ::cachePerUser[[api-linebreak]] @covers…
AccessResultTest::testCacheTags in core/tests/Drupal/Tests/Core/Access/AccessResultTest.php
@covers ::addCacheTags[[api-linebreak]] @covers ::addCacheableDependency[[api-linebreak]] @covers ::getCacheTags[[api-linebreak]] @covers ::resetCacheTags[[api-linebreak]]
AccessResultTest::testInheritCacheability in core/tests/Drupal/Tests/Core/Access/AccessResultTest.php
@covers ::inheritCacheability[[api-linebreak]]

... See full list

File

core/modules/user/src/Plugin/views/argument_validator/User.php, line 19

Namespace

Drupal\user\Plugin\views\argument_validator
View source
class User extends Entity {
  
  /**
   * The user storage.
   *
   * @var \Drupal\Core\Entity\EntityStorageInterface
   */
  protected $userStorage;
  
  /**
   * {@inheritdoc}
   */
  public function __construct(array $configuration, $plugin_id, $plugin_definition, EntityTypeManagerInterface $entity_type_manager, EntityTypeBundleInfoInterface $entity_type_bundle_info = NULL) {
    parent::__construct($configuration, $plugin_id, $plugin_definition, $entity_type_manager, $entity_type_bundle_info);
    $this->userStorage = $entity_type_manager->getStorage('user');
  }
  
  /**
   * {@inheritdoc}
   */
  protected function defineOptions() {
    $options = parent::defineOptions();
    $options['restrict_roles'] = [
      'default' => FALSE,
    ];
    $options['roles'] = [
      'default' => [],
    ];
    return $options;
  }
  
  /**
   * {@inheritdoc}
   */
  public function buildOptionsForm(&$form, FormStateInterface $form_state) {
    parent::buildOptionsForm($form, $form_state);
    $sanitized_id = ArgumentPluginBase::encodeValidatorId($this->definition['id']);
    $form['restrict_roles'] = [
      '#type' => 'checkbox',
      '#title' => $this->t('Restrict user based on role'),
      '#default_value' => $this->options['restrict_roles'],
    ];
    $form['roles'] = [
      '#type' => 'checkboxes',
      '#title' => $this->t('Restrict to the selected roles'),
      '#options' => array_map([
        '\\Drupal\\Component\\Utility\\Html',
        'escape',
      ], user_role_names(TRUE)),
      '#default_value' => $this->options['roles'],
      '#description' => $this->t('If no roles are selected, users from any role will be allowed.'),
      '#states' => [
        'visible' => [
          ':input[name="options[validate][options][' . $sanitized_id . '][restrict_roles]"]' => [
            'checked' => TRUE,
          ],
        ],
      ],
    ];
  }
  
  /**
   * {@inheritdoc}
   */
  public function submitOptionsForm(&$form, FormStateInterface $form_state, &$options = []) {
    // filter trash out of the options so we don't store giant unnecessary arrays
    $options['roles'] = array_filter($options['roles']);
  }
  
  /**
   * {@inheritdoc}
   */
  protected function validateEntity(EntityInterface $entity) {
    /** @var \Drupal\user\UserInterface $entity */
    $role_check_success = TRUE;
    // See if we're filtering users based on roles.
    if (!empty($this->options['restrict_roles']) && !empty($this->options['roles'])) {
      $roles = $this->options['roles'];
      if (!(bool) array_intersect($entity->getRoles(), $roles)) {
        $role_check_success = FALSE;
      }
    }
    return $role_check_success && parent::validateEntity($entity);
  }
  
  /**
   * {@inheritdoc}
   */
  public function calculateDependencies() {
    $dependencies = parent::calculateDependencies();
    foreach ($this->entityTypeManager
      ->getStorage('user_role')
      ->loadMultiple(array_keys($this->options['roles'])) as $role) {
      $dependencies[$role->getConfigDependencyKey()][] = $role->getConfigDependencyName();
    }
    return $dependencies;
  }

}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.