Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 namespace Drupal\Core\Routing;
|
Chris@0
|
4
|
Chris@0
|
5 use Symfony\Cmf\Component\Routing\PagedRouteProviderInterface;
|
Chris@0
|
6 use Symfony\Component\HttpFoundation\Request;
|
Chris@0
|
7
|
Chris@0
|
8 /**
|
Chris@0
|
9 * A Route Provider front-end for all Drupal-stored routes.
|
Chris@0
|
10 */
|
Chris@0
|
11 class RouteProviderLazyBuilder implements PreloadableRouteProviderInterface, PagedRouteProviderInterface {
|
Chris@0
|
12
|
Chris@0
|
13 /**
|
Chris@0
|
14 * The route provider service.
|
Chris@0
|
15 *
|
Chris@0
|
16 * @var \Drupal\Core\Routing\RouteProviderInterface
|
Chris@0
|
17 */
|
Chris@0
|
18 protected $routeProvider;
|
Chris@0
|
19
|
Chris@0
|
20 /**
|
Chris@0
|
21 * The route building service.
|
Chris@0
|
22 *
|
Chris@0
|
23 * @var \Drupal\Core\Routing\RouteBuilderInterface
|
Chris@0
|
24 */
|
Chris@0
|
25 protected $routeBuilder;
|
Chris@0
|
26
|
Chris@0
|
27 /**
|
Chris@0
|
28 * Flag to determine if the router has been rebuilt.
|
Chris@0
|
29 *
|
Chris@0
|
30 * @var bool
|
Chris@0
|
31 */
|
Chris@0
|
32 protected $rebuilt = FALSE;
|
Chris@0
|
33
|
Chris@0
|
34 /**
|
Chris@0
|
35 * RouteProviderLazyBuilder constructor.
|
Chris@0
|
36 *
|
Chris@0
|
37 * @param \Drupal\Core\Routing\RouteProviderInterface $route_provider
|
Chris@0
|
38 * The route provider service.
|
Chris@0
|
39 * @param \Drupal\Core\Routing\RouteBuilderInterface $route_builder
|
Chris@0
|
40 * The route building service.
|
Chris@0
|
41 */
|
Chris@0
|
42 public function __construct(RouteProviderInterface $route_provider, RouteBuilderInterface $route_builder) {
|
Chris@0
|
43 $this->routeProvider = $route_provider;
|
Chris@0
|
44 $this->routeBuilder = $route_builder;
|
Chris@0
|
45 }
|
Chris@0
|
46
|
Chris@0
|
47 /**
|
Chris@0
|
48 * Gets the real route provider service and rebuilds the router id necessary.
|
Chris@0
|
49 *
|
Chris@0
|
50 * @return \Drupal\Core\Routing\RouteProviderInterface
|
Chris@0
|
51 * The route provider service.
|
Chris@0
|
52 */
|
Chris@0
|
53 protected function getRouteProvider() {
|
Chris@0
|
54 if (!$this->rebuilt) {
|
Chris@0
|
55 $this->routeBuilder->rebuild();
|
Chris@0
|
56 $this->rebuilt = TRUE;
|
Chris@0
|
57 }
|
Chris@0
|
58 return $this->routeProvider;
|
Chris@0
|
59 }
|
Chris@0
|
60
|
Chris@0
|
61 /**
|
Chris@0
|
62 * {@inheritdoc}
|
Chris@0
|
63 */
|
Chris@0
|
64 public function getRouteCollectionForRequest(Request $request) {
|
Chris@0
|
65 return $this->getRouteProvider()->getRouteCollectionForRequest($request);
|
Chris@0
|
66 }
|
Chris@0
|
67
|
Chris@0
|
68 /**
|
Chris@0
|
69 * {@inheritdoc}
|
Chris@0
|
70 */
|
Chris@0
|
71 public function getRouteByName($name) {
|
Chris@0
|
72 return $this->getRouteProvider()->getRouteByName($name);
|
Chris@0
|
73 }
|
Chris@0
|
74
|
Chris@0
|
75 /**
|
Chris@0
|
76 * {@inheritdoc}
|
Chris@0
|
77 */
|
Chris@0
|
78 public function preLoadRoutes($names) {
|
Chris@0
|
79 return $this->getRouteProvider()->preLoadRoutes($names);
|
Chris@0
|
80 }
|
Chris@0
|
81
|
Chris@0
|
82 /**
|
Chris@0
|
83 * {@inheritdoc}
|
Chris@0
|
84 */
|
Chris@0
|
85 public function getRoutesByNames($names) {
|
Chris@0
|
86 return $this->getRouteProvider()->getRoutesByNames($names);
|
Chris@0
|
87 }
|
Chris@0
|
88
|
Chris@0
|
89 /**
|
Chris@0
|
90 * {@inheritdoc}
|
Chris@0
|
91 */
|
Chris@0
|
92 public function getRoutesByPattern($pattern) {
|
Chris@0
|
93 return $this->getRouteProvider()->getRoutesByPattern($pattern);
|
Chris@0
|
94 }
|
Chris@0
|
95
|
Chris@0
|
96 /**
|
Chris@0
|
97 * {@inheritdoc}
|
Chris@0
|
98 */
|
Chris@0
|
99 public function getAllRoutes() {
|
Chris@0
|
100 return $this->getRouteProvider()->getAllRoutes();
|
Chris@0
|
101 }
|
Chris@0
|
102
|
Chris@0
|
103 /**
|
Chris@0
|
104 * {@inheritdoc}
|
Chris@0
|
105 */
|
Chris@0
|
106 public function reset() {
|
Chris@0
|
107 // Don't call getRouteProvider as this is results in recursive rebuilds.
|
Chris@0
|
108 return $this->routeProvider->reset();
|
Chris@0
|
109 }
|
Chris@0
|
110
|
Chris@0
|
111 /**
|
Chris@0
|
112 * {@inheritdoc}
|
Chris@0
|
113 */
|
Chris@0
|
114 public function getRoutesPaged($offset, $length = NULL) {
|
Chris@0
|
115 return $this->getRouteProvider()->getRoutesPaged($offset, $length);
|
Chris@0
|
116 }
|
Chris@0
|
117
|
Chris@0
|
118 /**
|
Chris@0
|
119 * {@inheritdoc}
|
Chris@0
|
120 */
|
Chris@0
|
121 public function getRoutesCount() {
|
Chris@0
|
122 return $this->getRouteProvider()->getRoutesCount();
|
Chris@0
|
123 }
|
Chris@0
|
124
|
Chris@0
|
125 /**
|
Chris@0
|
126 * Determines if the router has been rebuilt.
|
Chris@0
|
127 *
|
Chris@0
|
128 * @return bool
|
Chris@0
|
129 * TRUE is the router has been rebuilt, FALSE if not.
|
Chris@0
|
130 */
|
Chris@0
|
131 public function hasRebuilt() {
|
Chris@0
|
132 return $this->rebuilt;
|
Chris@0
|
133 }
|
Chris@0
|
134
|
Chris@0
|
135 }
|