TeamAppListByTeam.php in Apigee Edge 8
File
modules/apigee_edge_teams/src/Entity/ListBuilder/TeamAppListByTeam.php
View source
<?php
namespace Drupal\apigee_edge_teams\Entity\ListBuilder;
use Drupal\apigee_edge\Entity\ListBuilder\AppListBuilder;
use Drupal\Component\Datetime\TimeInterface;
use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\DependencyInjection\ContainerInjectionInterface;
use Drupal\Core\Entity\EntityTypeInterface;
use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\Core\Entity\Query\QueryInterface;
use Drupal\Core\Render\RendererInterface;
use Drupal\Core\Routing\RouteMatchInterface;
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpFoundation\RequestStack;
class TeamAppListByTeam extends AppListBuilder implements ContainerInjectionInterface {
protected $routeMatch;
public function __construct(EntityTypeInterface $entity_type, EntityTypeManagerInterface $entity_type_manager, RendererInterface $render, RequestStack $request_stack, TimeInterface $time, RouteMatchInterface $route_match, ConfigFactoryInterface $config_factory = NULL) {
if (!$config_factory) {
$config_factory = \Drupal::service('config.factory');
}
parent::__construct($entity_type, $entity_type_manager, $render, $request_stack, $time, $config_factory);
$this->routeMatch = $route_match;
}
public static function createInstance(ContainerInterface $container, EntityTypeInterface $entity_type) {
return new static($entity_type, $container
->get('entity_type.manager'), $container
->get('renderer'), $container
->get('request_stack'), $container
->get('datetime.time'), $container
->get('current_route_match'), $container
->get('config.factory'));
}
public static function create(ContainerInterface $container) {
return static::createInstance($container, $container
->get('entity_type.manager')
->getDefinition('team_app'));
}
protected function buildEntityIdQuery() : QueryInterface {
$query = parent::buildEntityIdQuery();
$team = $this->routeMatch
->getParameter('team');
$query
->condition('companyName', $team
->id());
return $query;
}
public function render() {
$build = parent::render();
if (!empty($build['table'])) {
$build['table']['#empty'] = t('There are no @label yet.', [
'@label' => $this->entityType
->getPluralLabel(),
]);
}
return $build;
}
public function pageTitle() : TranslatableMarkup {
return $this
->t('@team_apps', [
'@team_apps' => $this->entityType
->getCollectionLabel(),
]);
}
protected function getCacheMaxAge() {
return $this->configFactory
->get('apigee_edge_teams.team_app_settings')
->get('cache_expiration');
}
}