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 }