Version 1
[yaffs-website] / web / modules / contrib / devel / webprofiler / src / DataCollector / RoutingDataCollector.php
1 <?php
2
3 namespace Drupal\webprofiler\DataCollector;
4
5 use Drupal\webprofiler\DrupalDataCollectorInterface;
6 use Drupal\Core\Routing\RouteProviderInterface;
7 use Drupal\Core\StringTranslation\StringTranslationTrait;
8 use Symfony\Component\HttpFoundation\Request;
9 use Symfony\Component\HttpFoundation\Response;
10 use Symfony\Component\HttpKernel\DataCollector\DataCollector;
11
12 /**
13  * Provides a data collector which shows all available routes.
14  */
15 class RoutingDataCollector extends DataCollector implements DrupalDataCollectorInterface {
16
17   use StringTranslationTrait, DrupalDataCollectorTrait;
18
19   /**
20    * The route profiler.
21    *
22    * @var \Drupal\Core\Routing\RouteProviderInterface
23    */
24   protected $routeProvider;
25
26   /**
27    * Constructs a new RoutingDataCollector.
28    *
29    * @param \Drupal\Core\Routing\RouteProviderInterface $routeProvider
30    *   The route provider.
31    */
32   public function __construct(RouteProviderInterface $routeProvider) {
33     $this->routeProvider = $routeProvider;
34   }
35
36   /**
37    * {@inheritdoc}
38    */
39   public function collect(Request $request, Response $response, \Exception $exception = NULL) {
40     $this->data['routing'] = [];
41     foreach ($this->routeProvider->getAllRoutes() as $route_name => $route) {
42       // @TODO Find a better visual representation.
43       $this->data['routing'][] = [
44         'name' => $route_name,
45         'path' => $route->getPath(),
46       ];
47     }
48   }
49
50   /**
51    * @return int
52    */
53   public function getRoutesCount() {
54     return count($this->routing());
55   }
56
57   /**
58    * Twig callback for displaying the routes.
59    */
60   public function routing() {
61     return $this->data['routing'];
62   }
63
64   /**
65    * {@inheritdoc}
66    */
67   public function getTitle() {
68     return $this->t('Routing');
69   }
70
71   /**
72    * {@inheritdoc}
73    */
74   public function getName() {
75     return 'routing';
76   }
77
78   /**
79    * {@inheritdoc}
80    */
81   public function getPanelSummary() {
82     return $this->t('Defined routes: @route', ['@route' => $this->getRoutesCount()]);
83   }
84
85   /**
86    * {@inheritdoc}
87    */
88   public function getIcon() {
89     return 'iVBORw0KGgoAAAANSUhEUgAAABUAAAAcCAYAAACOGPReAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAPxJREFUeNrkVsERREAQ7D0koXwlIAISkIGXvwAkoJSfHITg5SMUVR4eMuCxZ1xxV+5uuTL30lV8bPX09PSuFVJKcOOGP+DipLrrusoFdV1Lz/NgmiaKosC0XrAopYT0fc/f/jAMa41Pj23bkrpi9bRpGmRZ9lRKFSzLkl9UHMI4jijLcuaaSZMkQdd1fNMn5r0EHIFhGEjTlDenYRjCcZyHUnqRwXEcz77sYepM+Z1yTOEXZEFVVYcUba2iItsNcbr9IAiw5HMd1CJZtU1VpG3bIooi3gPF933keY43pb9gb1Bskdrap58luMjvRNO04wcK18RfIa59mbgLMAASuWsKAyoEhgAAAABJRU5ErkJggg==';
90   }
91 }