View source
<?php
namespace Drupal\uc_wishlist;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Entity\EntityListBuilder;
use Drupal\Core\Datetime\DateFormatterInterface;
use Drupal\Core\Entity\EntityStorageInterface;
use Drupal\Core\Entity\EntityTypeInterface;
use Drupal\Core\Entity\Query\QueryFactory;
use Drupal\Core\Routing\RedirectDestinationInterface;
class UcWishlistListBuilder extends EntityListBuilder {
protected $queryFactory;
protected $dateFormatter;
protected $redirectDestination;
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;
}
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'));
}
public function load() {
$entity_query = $this->queryFactory
->get('uc_wishlist');
$entity_query
->pager(50);
$header = $this
->buildHeader();
$entity_query
->tableSort($header);
$uids = $entity_query
->execute();
return $this->storage
->loadMultiple($uids);
}
public function buildHeader() {
$header = [
'title' => [
'data' => $this
->t('Title'),
'field' => 'title',
'specifier' => 'title',
],
'expiration' => [
'data' => $this
->t('Expiration date'),
'field' => 'expiration',
'specifier' => 'expiration',
'class' => [
RESPONSIVE_PRIORITY_LOW,
],
],
'address' => [
'data' => $this
->t('Address'),
'field' => 'address',
'specifier' => 'address',
'class' => [
RESPONSIVE_PRIORITY_LOW,
],
],
'private' => [
'data' => $this
->t('Private'),
'field' => 'private',
'specifier' => 'private',
'class' => [
RESPONSIVE_PRIORITY_LOW,
],
],
'description' => [
'data' => $this
->t('Description'),
'field' => 'description',
'specifier' => 'description',
'class' => [
RESPONSIVE_PRIORITY_LOW,
],
],
];
return $header + parent::buildHeader();
}
public function buildRow(EntityInterface $entity) {
$row['title'] = $entity
->getTitle();
$row['expiration'] = $entity
->getExpirationTime();
$row['address'] = $entity
->getAddress();
$row['private'] = $entity
->getPrivate();
$row['description'] = $entity
->getDescription();
return $row + parent::buildRow($entity);
}
public function getOperations(EntityInterface $entity) {
$operations = parent::getOperations($entity);
if (isset($operations['edit'])) {
$destination = $this->redirectDestination
->getAsArray();
$operations['edit']['query'] = $destination;
}
return $operations;
}
public function render() {
$build = parent::render();
$build['table']['#empty'] = $this
->t('No wish lists found.');
return $build;
}
}