l10n_server-2.x-dev/l10n_packager/src/Entity/ListBuilder/L10nPackagerReleaseListBuilder.php
l10n_packager/src/Entity/ListBuilder/L10nPackagerReleaseListBuilder.php
<?php declare(strict_types=1); namespace Drupal\l10n_packager\Entity\ListBuilder; 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 Symfony\Component\DependencyInjection\ContainerInterface; /** * Provides a list controller for the packager release entity type. */ class L10nPackagerReleaseListBuilder extends EntityListBuilder { /** * The date formatter service. * * @var \Drupal\Core\Datetime\DateFormatterInterface */ protected DateFormatterInterface $dateFormatter; /** * Constructs a new L10nPackagerReleaseListBuilder 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\Datetime\DateFormatterInterface $date_formatter * The date formatter service. */ public function __construct( EntityTypeInterface $entity_type, EntityStorageInterface $storage, DateFormatterInterface $date_formatter ) { parent::__construct($entity_type, $storage); $this->dateFormatter = $date_formatter; } /** * {@inheritdoc} */ public static function createInstance( ContainerInterface $container, EntityTypeInterface $entity_type ) { return new static( $entity_type, $container->get('entity_type.manager')->getStorage($entity_type->id()), $container->get('date.formatter') ); } /** * {@inheritdoc} */ public function render() { $build['table'] = parent::render(); $total = $this->getStorage() ->getQuery() ->accessCheck(FALSE) ->count() ->execute(); $build['summary']['#markup'] = $this->t('Total packager releases: @total', ['@total' => $total]); return $build; } /** * {@inheritdoc} */ public function buildHeader() { $header['id'] = $this->t('ID'); $header['label'] = $this->t('Label'); $header['status'] = $this->t('Status'); $header['checked'] = $this->t('Checked'); $header['changed'] = $this->t('Changed'); return $header + parent::buildHeader(); } /** * {@inheritdoc} */ public function buildRow(EntityInterface $entity) { /** @var \Drupal\l10n_packager\L10nPackagerReleaseInterface $entity */ $row['id'] = $entity->id(); $row['label'] = $entity->label(); $row['status'] = $entity->get('status')->value ? $this->t('Enabled') : $this->t('Disabled'); $row['checked'] = $this->dateFormatter->format($entity->getCheckedTime()); $row['changed'] = $this->dateFormatter->format($entity->getChangedTime()); return $row + parent::buildRow($entity); } }