You are here

public function UserListBuilder::buildRow in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/user/src/UserListBuilder.php \Drupal\user\UserListBuilder::buildRow()

Builds a row for an entity in the entity listing.

Parameters

\Drupal\Core\Entity\EntityInterface $entity: The entity for this row of the list.

Return value

array A render array structure of fields for this entity.

Overrides EntityListBuilder::buildRow

See also

\Drupal\Core\Entity\EntityListBuilder::render()

File

core/modules/user/src/UserListBuilder.php, line 119

Class

UserListBuilder
Defines a class to build a listing of user entities.

Namespace

Drupal\user

Code

public function buildRow(EntityInterface $entity) {
  $row['username']['data'] = [
    '#theme' => 'username',
    '#account' => $entity,
  ];
  $row['status'] = $entity
    ->isActive() ? $this
    ->t('active') : $this
    ->t('blocked');
  $roles = user_role_names(TRUE);
  unset($roles[RoleInterface::AUTHENTICATED_ID]);
  $users_roles = [];
  foreach ($entity
    ->getRoles() as $role) {
    if (isset($roles[$role])) {
      $users_roles[] = $roles[$role];
    }
  }
  asort($users_roles);
  $row['roles']['data'] = [
    '#theme' => 'item_list',
    '#items' => $users_roles,
  ];
  $options = [
    'return_as_object' => TRUE,
  ];
  $row['member_for']['data'] = $this->dateFormatter
    ->formatTimeDiffSince($entity
    ->getCreatedTime(), $options)
    ->toRenderable();
  $last_access = $this->dateFormatter
    ->formatTimeDiffSince($entity
    ->getLastAccessedTime(), $options);
  if ($entity
    ->getLastAccessedTime()) {
    $row['access']['data']['#markup'] = $last_access
      ->getString();
    CacheableMetadata::createFromObject($last_access)
      ->applyTo($row['access']['data']);
  }
  else {
    $row['access']['data']['#markup'] = t('never');
  }
  return $row + parent::buildRow($entity);
}