Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
100.00% |
1 / 1 |
|
100.00% |
7 / 7 |
CRAP | |
100.00% |
25 / 25 |
PathProcessorManager | |
100.00% |
1 / 1 |
|
100.00% |
7 / 7 |
12 | |
100.00% |
25 / 25 |
addInbound | |
100.00% |
1 / 1 |
1 | |
100.00% |
3 / 3 |
|||
processInbound | |
100.00% |
1 / 1 |
2 | |
100.00% |
4 / 4 |
|||
getInbound | |
100.00% |
1 / 1 |
2 | |
100.00% |
3 / 3 |
|||
addOutbound | |
100.00% |
1 / 1 |
1 | |
100.00% |
3 / 3 |
|||
processOutbound | |
100.00% |
1 / 1 |
2 | |
100.00% |
4 / 4 |
|||
getOutbound | |
100.00% |
1 / 1 |
2 | |
100.00% |
3 / 3 |
|||
sortProcessors | |
100.00% |
1 / 1 |
2 | |
100.00% |
5 / 5 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\Core\PathProcessor\PathProcessorManager. | |
*/ | |
namespace Drupal\Core\PathProcessor; | |
use Drupal\Core\Render\BubbleableMetadata; | |
use Symfony\Component\HttpFoundation\Request; | |
/** | |
* Path processor manager. | |
* | |
* Holds an array of path processor objects and uses them to sequentially process | |
* a path, in order of processor priority. | |
*/ | |
class PathProcessorManager implements InboundPathProcessorInterface, OutboundPathProcessorInterface { | |
/** | |
* Holds the array of inbound processors to cycle through. | |
* | |
* @var array | |
* An array whose keys are priorities and whose values are arrays of path | |
* processor objects. | |
*/ | |
protected $inboundProcessors = array(); | |
/** | |
* Holds the array of inbound processors, sorted by priority. | |
* | |
* @var array | |
* An array of path processor objects. | |
*/ | |
protected $sortedInbound = array(); | |
/** | |
* Holds the array of outbound processors to cycle through. | |
* | |
* @var array | |
* An array whose keys are priorities and whose values are arrays of path | |
* processor objects. | |
*/ | |
protected $outboundProcessors = array(); | |
/** | |
* Holds the array of outbound processors, sorted by priority. | |
* | |
* @var array | |
* An array of path processor objects. | |
*/ | |
protected $sortedOutbound = array(); | |
/** | |
* Adds an inbound processor object to the $inboundProcessors property. | |
* | |
* @param \Drupal\Core\PathProcessor\InboundPathProcessorInterface $processor | |
* The processor object to add. | |
* @param int $priority | |
* The priority of the processor being added. | |
*/ | |
public function addInbound(InboundPathProcessorInterface $processor, $priority = 0) { | |
$this->inboundProcessors[$priority][] = $processor; | |
$this->sortedInbound = array(); | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function processInbound($path, Request $request) { | |
$processors = $this->getInbound(); | |
foreach ($processors as $processor) { | |
$path = $processor->processInbound($path, $request); | |
} | |
return $path; | |
} | |
/** | |
* Returns the sorted array of inbound processors. | |
* | |
* @return array | |
* An array of processor objects. | |
*/ | |
protected function getInbound() { | |
if (empty($this->sortedInbound)) { | |
$this->sortedInbound = $this->sortProcessors('inboundProcessors'); | |
} | |
return $this->sortedInbound; | |
} | |
/** | |
* Adds an outbound processor object to the $outboundProcessors property. | |
* | |
* @param \Drupal\Core\PathProcessor\OutboundPathProcessorInterface $processor | |
* The processor object to add. | |
* @param int $priority | |
* The priority of the processor being added. | |
*/ | |
public function addOutbound(OutboundPathProcessorInterface $processor, $priority = 0) { | |
$this->outboundProcessors[$priority][] = $processor; | |
$this->sortedOutbound = array(); | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function processOutbound($path, &$options = array(), Request $request = NULL, BubbleableMetadata $bubbleable_metadata = NULL) { | |
$processors = $this->getOutbound(); | |
foreach ($processors as $processor) { | |
$path = $processor->processOutbound($path, $options, $request, $bubbleable_metadata); | |
} | |
return $path; | |
} | |
/** | |
* Returns the sorted array of outbound processors. | |
* | |
* @return array | |
* An array of processor objects. | |
*/ | |
protected function getOutbound() { | |
if (empty($this->sortedOutbound)) { | |
$this->sortedOutbound = $this->sortProcessors('outboundProcessors'); | |
} | |
return $this->sortedOutbound; | |
} | |
/** | |
* Sorts the processors according to priority. | |
* | |
* @param string $type | |
* The processor type to sort, e.g. 'inboundProcessors'. | |
*/ | |
protected function sortProcessors($type) { | |
$sorted = array(); | |
krsort($this->{$type}); | |
foreach ($this->{$type} as $processors) { | |
$sorted = array_merge($sorted, $processors); | |
} | |
return $sorted; | |
} | |
} |