Mercurial > hg > isophonics-drupal-site
comparison core/lib/Drupal/Core/Routing/RouteProviderLazyBuilder.php @ 12:7a779792577d
Update Drupal core to v8.4.5 (via Composer)
author | Chris Cannam |
---|---|
date | Fri, 23 Feb 2018 15:52:07 +0000 |
parents | 4c8ae668cc8c |
children |
comparison
equal
deleted
inserted
replaced
11:bfffd8d7479a | 12:7a779792577d |
---|---|
1 <?php | 1 <?php |
2 | 2 |
3 namespace Drupal\Core\Routing; | 3 namespace Drupal\Core\Routing; |
4 | 4 |
5 use Symfony\Cmf\Component\Routing\PagedRouteProviderInterface; | 5 use Symfony\Cmf\Component\Routing\PagedRouteProviderInterface; |
6 use Symfony\Component\EventDispatcher\EventSubscriberInterface; | |
6 use Symfony\Component\HttpFoundation\Request; | 7 use Symfony\Component\HttpFoundation\Request; |
7 | 8 |
8 /** | 9 /** |
9 * A Route Provider front-end for all Drupal-stored routes. | 10 * A Route Provider front-end for all Drupal-stored routes. |
10 */ | 11 */ |
11 class RouteProviderLazyBuilder implements PreloadableRouteProviderInterface, PagedRouteProviderInterface { | 12 class RouteProviderLazyBuilder implements PreloadableRouteProviderInterface, PagedRouteProviderInterface, EventSubscriberInterface { |
12 | 13 |
13 /** | 14 /** |
14 * The route provider service. | 15 * The route provider service. |
15 * | 16 * |
16 * @var \Drupal\Core\Routing\RouteProviderInterface | 17 * @var \Drupal\Core\Routing\RouteProviderInterface |
30 * @var bool | 31 * @var bool |
31 */ | 32 */ |
32 protected $rebuilt = FALSE; | 33 protected $rebuilt = FALSE; |
33 | 34 |
34 /** | 35 /** |
36 * Flag to determine if router is currently being rebuilt. | |
37 * | |
38 * Used to prevent recursive router rebuilds during module installation. | |
39 * Recursive rebuilds can occur when route information is required by alter | |
40 * hooks that are triggered during a rebuild, for example, | |
41 * hook_menu_links_discovered_alter(). | |
42 * | |
43 * @var bool | |
44 */ | |
45 protected $rebuilding = FALSE; | |
46 | |
47 /** | |
35 * RouteProviderLazyBuilder constructor. | 48 * RouteProviderLazyBuilder constructor. |
36 * | 49 * |
37 * @param \Drupal\Core\Routing\RouteProviderInterface $route_provider | 50 * @param \Drupal\Core\Routing\RouteProviderInterface $route_provider |
38 * The route provider service. | 51 * The route provider service. |
39 * @param \Drupal\Core\Routing\RouteBuilderInterface $route_builder | 52 * @param \Drupal\Core\Routing\RouteBuilderInterface $route_builder |
49 * | 62 * |
50 * @return \Drupal\Core\Routing\RouteProviderInterface | 63 * @return \Drupal\Core\Routing\RouteProviderInterface |
51 * The route provider service. | 64 * The route provider service. |
52 */ | 65 */ |
53 protected function getRouteProvider() { | 66 protected function getRouteProvider() { |
54 if (!$this->rebuilt) { | 67 if (!$this->rebuilt && !$this->rebuilding) { |
55 $this->routeBuilder->rebuild(); | 68 $this->routeBuilder->rebuild(); |
56 $this->rebuilt = TRUE; | 69 $this->rebuilt = TRUE; |
57 } | 70 } |
58 return $this->routeProvider; | 71 return $this->routeProvider; |
59 } | 72 } |
130 */ | 143 */ |
131 public function hasRebuilt() { | 144 public function hasRebuilt() { |
132 return $this->rebuilt; | 145 return $this->rebuilt; |
133 } | 146 } |
134 | 147 |
148 /** | |
149 * {@inheritdoc} | |
150 */ | |
151 public static function getSubscribedEvents() { | |
152 $events[RoutingEvents::DYNAMIC][] = ['routerRebuilding', 3000]; | |
153 $events[RoutingEvents::FINISHED][] = ['routerRebuildFinished', -3000]; | |
154 return $events; | |
155 } | |
156 | |
157 /** | |
158 * Sets the router rebuilding flag to TRUE. | |
159 */ | |
160 public function routerRebuilding() { | |
161 $this->rebuilding = TRUE; | |
162 } | |
163 | |
164 /** | |
165 * Sets the router rebuilding flag to FALSE. | |
166 */ | |
167 public function routerRebuildFinished() { | |
168 $this->rebuilding = FALSE; | |
169 } | |
170 | |
135 } | 171 } |