Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 3 |
CRAP | |
0.00% |
0 / 17 |
ModuleRouteSubscriber | |
0.00% |
0 / 1 |
|
0.00% |
0 / 3 |
110 | |
0.00% |
0 / 17 |
__construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
alterRoutes | |
0.00% |
0 / 1 |
72 | |
0.00% |
0 / 14 |
|||
explodeString | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\Core\EventSubscriber\ModuleRouteSubscriber. | |
*/ | |
namespace Drupal\Core\EventSubscriber; | |
use Drupal\Core\Extension\ModuleHandlerInterface; | |
use Drupal\Core\Routing\RouteSubscriberBase; | |
use Symfony\Component\Routing\RouteCollection; | |
/** | |
* A route subscriber to remove routes that depend on modules being enabled. | |
*/ | |
class ModuleRouteSubscriber extends RouteSubscriberBase { | |
/** | |
* The module handler. | |
* | |
* @var \Drupal\Core\Extension\ModuleHandlerInterface | |
*/ | |
protected $moduleHandler; | |
/** | |
* Constructs a ModuleRouteSubscriber object. | |
* | |
* @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler | |
* The module handler. | |
*/ | |
public function __construct(ModuleHandlerInterface $module_handler) { | |
$this->moduleHandler = $module_handler; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
protected function alterRoutes(RouteCollection $collection) { | |
foreach ($collection as $name => $route) { | |
if ($route->hasRequirement('_module_dependencies')) { | |
$modules = $route->getRequirement('_module_dependencies'); | |
$explode_and = $this->explodeString($modules, '+'); | |
if (count($explode_and) > 1) { | |
foreach ($explode_and as $module) { | |
// If any moduleExists() call returns FALSE, remove the route and | |
// move on to the next. | |
if (!$this->moduleHandler->moduleExists($module)) { | |
$collection->remove($name); | |
continue 2; | |
} | |
} | |
} | |
else { | |
// OR condition, exploding on ',' character. | |
foreach ($this->explodeString($modules, ',') as $module) { | |
if ($this->moduleHandler->moduleExists($module)) { | |
continue 2; | |
} | |
} | |
// If no modules are found, and we get this far, remove the route. | |
$collection->remove($name); | |
} | |
} | |
} | |
} | |
/** | |
* Explodes a string based on a separator. | |
* | |
* @param string $string | |
* The string to explode. | |
* @param string $separator | |
* The string separator to explode with. | |
* | |
* @return array | |
* An array of exploded (and trimmed) values. | |
*/ | |
protected function explodeString($string, $separator = ',') { | |
return array_filter(array_map('trim', explode($separator, $string))); | |
} | |
} |