Mercurial > hg > isophonics-drupal-site
diff core/lib/Drupal/Core/Routing/RouteProviderLazyBuilder.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children | 7a779792577d |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/lib/Drupal/Core/Routing/RouteProviderLazyBuilder.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,135 @@ +<?php + +namespace Drupal\Core\Routing; + +use Symfony\Cmf\Component\Routing\PagedRouteProviderInterface; +use Symfony\Component\HttpFoundation\Request; + +/** + * A Route Provider front-end for all Drupal-stored routes. + */ +class RouteProviderLazyBuilder implements PreloadableRouteProviderInterface, PagedRouteProviderInterface { + + /** + * The route provider service. + * + * @var \Drupal\Core\Routing\RouteProviderInterface + */ + protected $routeProvider; + + /** + * The route building service. + * + * @var \Drupal\Core\Routing\RouteBuilderInterface + */ + protected $routeBuilder; + + /** + * Flag to determine if the router has been rebuilt. + * + * @var bool + */ + protected $rebuilt = FALSE; + + /** + * RouteProviderLazyBuilder constructor. + * + * @param \Drupal\Core\Routing\RouteProviderInterface $route_provider + * The route provider service. + * @param \Drupal\Core\Routing\RouteBuilderInterface $route_builder + * The route building service. + */ + public function __construct(RouteProviderInterface $route_provider, RouteBuilderInterface $route_builder) { + $this->routeProvider = $route_provider; + $this->routeBuilder = $route_builder; + } + + /** + * Gets the real route provider service and rebuilds the router id necessary. + * + * @return \Drupal\Core\Routing\RouteProviderInterface + * The route provider service. + */ + protected function getRouteProvider() { + if (!$this->rebuilt) { + $this->routeBuilder->rebuild(); + $this->rebuilt = TRUE; + } + return $this->routeProvider; + } + + /** + * {@inheritdoc} + */ + public function getRouteCollectionForRequest(Request $request) { + return $this->getRouteProvider()->getRouteCollectionForRequest($request); + } + + /** + * {@inheritdoc} + */ + public function getRouteByName($name) { + return $this->getRouteProvider()->getRouteByName($name); + } + + /** + * {@inheritdoc} + */ + public function preLoadRoutes($names) { + return $this->getRouteProvider()->preLoadRoutes($names); + } + + /** + * {@inheritdoc} + */ + public function getRoutesByNames($names) { + return $this->getRouteProvider()->getRoutesByNames($names); + } + + /** + * {@inheritdoc} + */ + public function getRoutesByPattern($pattern) { + return $this->getRouteProvider()->getRoutesByPattern($pattern); + } + + /** + * {@inheritdoc} + */ + public function getAllRoutes() { + return $this->getRouteProvider()->getAllRoutes(); + } + + /** + * {@inheritdoc} + */ + public function reset() { + // Don't call getRouteProvider as this is results in recursive rebuilds. + return $this->routeProvider->reset(); + } + + /** + * {@inheritdoc} + */ + public function getRoutesPaged($offset, $length = NULL) { + return $this->getRouteProvider()->getRoutesPaged($offset, $length); + } + + /** + * {@inheritdoc} + */ + public function getRoutesCount() { + return $this->getRouteProvider()->getRoutesCount(); + } + + /** + * Determines if the router has been rebuilt. + * + * @return bool + * TRUE is the router has been rebuilt, FALSE if not. + */ + public function hasRebuilt() { + return $this->rebuilt; + } + +}