protected function expandGenericPathPattern($pattern, array $patternReplacementVariables, $bubbleControllerAndSubpackage, $formatIsOptional)
{
$paths = [$pattern];
$paths = $this->expandPatterns($paths, '@templateRoot', isset($patternReplacementVariables['templateRoot']) ? [$patternReplacementVariables['templateRoot']] : $this->getTemplateRootPaths());
$paths = $this->expandPatterns($paths, '@partialRoot', isset($patternReplacementVariables['partialRoot']) ? [$patternReplacementVariables['partialRoot']] : $this->getPartialRootPaths());
$paths = $this->expandPatterns($paths, '@layoutRoot', isset($patternReplacementVariables['layoutRoot']) ? [$patternReplacementVariables['layoutRoot']] : $this->getLayoutRootPaths());
$subPackageKey = isset($patternReplacementVariables['subPackageKey']) ? $patternReplacementVariables['subPackageKey'] : '';
$controllerName = isset($patternReplacementVariables['controllerName']) ? $patternReplacementVariables['controllerName'] : '';
$format = isset($patternReplacementVariables['format']) ? $patternReplacementVariables['format'] : '';
unset($patternReplacementVariables['subPackageKey']);
unset($patternReplacementVariables['controllerName']);
unset($patternReplacementVariables['format']);
$paths = $this->expandSubPackageAndController($paths, $controllerName, $subPackageKey, $bubbleControllerAndSubpackage);
if ($formatIsOptional) {
$paths = $this->expandPatterns($paths, '.@format', ['.' . $format, '']);
$paths = $this->expandPatterns($paths, '@format', [$format, '']);
} else {
$paths = $this->expandPatterns($paths, '.@format', ['.' . $format]);
$paths = $this->expandPatterns($paths, '@format', [$format]);
}
foreach ($patternReplacementVariables as $variableName => $variableValue) {
$paths = $this->replacePatternVariable($paths, $variableName, $variableValue);
}
return array_values(array_unique($paths));
}