Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 7 |
CRAP | |
0.00% |
0 / 86 |
| UserListBuilder | |
0.00% |
0 / 1 |
|
0.00% |
0 / 7 |
156 | |
0.00% |
0 / 86 |
| __construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 5 |
|||
| createInstance | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 8 |
|||
| load | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 8 |
|||
| buildHeader | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 32 |
|||
| buildRow | |
0.00% |
0 / 1 |
30 | |
0.00% |
0 / 22 |
|||
| getOperations | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 7 |
|||
| render | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\user\UserListBuilder. | |
| */ | |
| namespace Drupal\user; | |
| use Drupal\Core\Datetime\DateFormatterInterface; | |
| use Drupal\Core\Entity\EntityInterface; | |
| use Drupal\Core\Entity\EntityListBuilder; | |
| use Drupal\Core\Entity\EntityStorageInterface; | |
| use Drupal\Core\Entity\EntityTypeInterface; | |
| use Drupal\Core\Entity\Query\QueryFactory; | |
| use Drupal\Core\Routing\RedirectDestinationInterface; | |
| use Symfony\Component\DependencyInjection\ContainerInterface; | |
| /** | |
| * Defines a class to build a listing of user entities. | |
| * | |
| * @see \Drupal\user\Entity\User | |
| */ | |
| class UserListBuilder extends EntityListBuilder { | |
| /** | |
| * The entity query factory. | |
| * | |
| * @var \Drupal\Core\Entity\Query\QueryFactory | |
| */ | |
| protected $queryFactory; | |
| /** | |
| * The date formatter service. | |
| * | |
| * @var \Drupal\Core\Datetime\DateFormatterInterface | |
| */ | |
| protected $dateFormatter; | |
| /** | |
| * The redirect destination service. | |
| * | |
| * @var \Drupal\Core\Routing\RedirectDestinationInterface | |
| */ | |
| protected $redirectDestination; | |
| /** | |
| * Constructs a new UserListBuilder object. | |
| * | |
| * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type | |
| * The entity type definition. | |
| * @param \Drupal\Core\Entity\EntityStorageInterface $storage | |
| * The entity storage class. | |
| * @param \Drupal\Core\Entity\Query\QueryFactory $query_factory | |
| * The entity query factory. | |
| * @param \Drupal\Core\Datetime\DateFormatterInterface $date_formatter | |
| * The date formatter service. | |
| * @param \Drupal\Core\Routing\RedirectDestinationInterface $redirect_destination | |
| * The redirect destination service. | |
| */ | |
| public function __construct(EntityTypeInterface $entity_type, EntityStorageInterface $storage, QueryFactory $query_factory, DateFormatterInterface $date_formatter, RedirectDestinationInterface $redirect_destination) { | |
| parent::__construct($entity_type, $storage); | |
| $this->queryFactory = $query_factory; | |
| $this->dateFormatter = $date_formatter; | |
| $this->redirectDestination = $redirect_destination; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public static function createInstance(ContainerInterface $container, EntityTypeInterface $entity_type) { | |
| return new static( | |
| $entity_type, | |
| $container->get('entity.manager')->getStorage($entity_type->id()), | |
| $container->get('entity.query'), | |
| $container->get('date.formatter'), | |
| $container->get('redirect.destination') | |
| ); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function load() { | |
| $entity_query = $this->queryFactory->get('user'); | |
| $entity_query->condition('uid', 0, '<>'); | |
| $entity_query->pager(50); | |
| $header = $this->buildHeader(); | |
| $entity_query->tableSort($header); | |
| $uids = $entity_query->execute(); | |
| return $this->storage->loadMultiple($uids); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function buildHeader() { | |
| $header = array( | |
| 'username' => array( | |
| 'data' => $this->t('Username'), | |
| 'field' => 'name', | |
| 'specifier' => 'name', | |
| ), | |
| 'status' => array( | |
| 'data' => $this->t('Status'), | |
| 'field' => 'status', | |
| 'specifier' => 'status', | |
| 'class' => array(RESPONSIVE_PRIORITY_LOW), | |
| ), | |
| 'roles' => array( | |
| 'data' => $this->t('Roles'), | |
| 'class' => array(RESPONSIVE_PRIORITY_LOW), | |
| ), | |
| 'member_for' => array( | |
| 'data' => $this->t('Member for'), | |
| 'field' => 'created', | |
| 'specifier' => 'created', | |
| 'sort' => 'desc', | |
| 'class' => array(RESPONSIVE_PRIORITY_LOW), | |
| ), | |
| 'access' => array( | |
| 'data' => $this->t('Last access'), | |
| 'field' => 'access', | |
| 'specifier' => 'access', | |
| 'class' => array(RESPONSIVE_PRIORITY_LOW), | |
| ), | |
| ); | |
| return $header + parent::buildHeader(); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function buildRow(EntityInterface $entity) { | |
| $row['username']['data'] = array( | |
| '#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 = array(); | |
| foreach ($entity->getRoles() as $role) { | |
| if (isset($roles[$role])) { | |
| $users_roles[] = $roles[$role]; | |
| } | |
| } | |
| asort($users_roles); | |
| $row['roles']['data'] = array( | |
| '#theme' => 'item_list', | |
| '#items' => $users_roles, | |
| ); | |
| $row['member_for'] = $this->dateFormatter->formatTimeDiffSince($entity->getCreatedTime()); | |
| $row['access'] = $entity->getLastAccessedTime() ? $this->t('@time ago', array('@time' => $this->dateFormatter->formatTimeDiffSince($entity->getLastAccessedTime()))) : t('never'); | |
| return $row + parent::buildRow($entity); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getOperations(EntityInterface $entity) { | |
| $operations = parent::getOperations($entity); | |
| if (isset($operations['edit'])) { | |
| $destination = $this->redirectDestination->getAsArray(); | |
| $operations['edit']['query'] = $destination; | |
| } | |
| return $operations; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function render() { | |
| $build = parent::render(); | |
| $build['table']['#empty'] = $this->t('No people available.'); | |
| return $build; | |
| } | |
| } |