commerce-8.x-2.8/modules/order/src/OrderListBuilder.php
modules/order/src/OrderListBuilder.php
<?php
namespace Drupal\commerce_order;
use Drupal\commerce_order\Entity\OrderType;
use Drupal\Core\Datetime\DateFormatter;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Entity\EntityListBuilder;
use Drupal\Core\Entity\EntityTypeInterface;
use Drupal\Core\Entity\EntityTypeManagerInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
* Defines the list builder for orders.
*/
class OrderListBuilder extends EntityListBuilder {
/**
* The date service.
*
* @var \Drupal\Core\Datetime\DateFormatter
*/
protected $dateFormatter;
/**
* Constructs a new OrderListBuilder object.
*
* @param \Drupal\Core\Entity\EntityTypeInterface $entity_type
* The entity type definition.
* @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
* The entity type manager.
* @param \Drupal\Core\Datetime\DateFormatter $date_formatter
* The date service.
*/
public function __construct(EntityTypeInterface $entity_type, EntityTypeManagerInterface $entity_type_manager, DateFormatter $date_formatter) {
parent::__construct($entity_type, $entity_type_manager->getStorage($entity_type->id()));
$this->dateFormatter = $date_formatter;
}
/**
* {@inheritdoc}
*/
public static function createInstance(ContainerInterface $container, EntityTypeInterface $entity_type) {
return new static(
$entity_type,
$container->get('entity_type.manager'),
$container->get('date.formatter')
);
}
/**
* {@inheritdoc}
*/
public function buildHeader() {
$header = [
'order_id' => [
'data' => $this->t('Order ID'),
'class' => [RESPONSIVE_PRIORITY_LOW],
],
'type' => [
'data' => $this->t('Type'),
'class' => [RESPONSIVE_PRIORITY_MEDIUM],
],
'customer' => [
'data' => $this->t('Customer'),
'class' => [RESPONSIVE_PRIORITY_LOW],
],
'state' => [
'data' => $this->t('State'),
'class' => [RESPONSIVE_PRIORITY_LOW],
],
'created' => [
'data' => $this->t('Created'),
'class' => [RESPONSIVE_PRIORITY_LOW],
],
];
return $header + parent::buildHeader();
}
/**
* {@inheritdoc}
*/
public function buildRow(EntityInterface $entity) {
/* @var $entity \Drupal\commerce_order\Entity\Order */
$orderType = OrderType::load($entity->bundle());
$row = [
'order_id' => $entity->id(),
'type' => $orderType->label(),
'customer' => [
'data' => [
'#theme' => 'username',
'#account' => $entity->getCustomer(),
],
],
'state' => $entity->getState()->getLabel(),
'created' => $this->dateFormatter->format($entity->getCreatedTime(), 'short'),
];
return $row + parent::buildRow($entity);
}
/**
* {@inheritdoc}
*/
protected function getDefaultOperations(EntityInterface $entity) {
$operations = parent::getDefaultOperations($entity);
/** @var \Drupal\commerce_order\Entity\OrderInterface $entity */
if ($entity->access('update') && $entity->hasLinkTemplate('reassign-form')) {
$operations['reassign'] = [
'title' => $this->t('Reassign'),
'weight' => 20,
'url' => $entity->toUrl('reassign-form'),
];
}
if ($entity->access('unlock')) {
$operations['unlock'] = [
'title' => $this->t('Unlock'),
'weight' => 25,
'url' => $entity->toUrl('unlock-form'),
];
}
return $operations;
}
}
