34 private $alternatives;
39 private $objectManager;
44 private $alternativesSorted;
49 private $lockerProcess;
59 private $assetBuilder;
64 private $filenameResolver;
81 Helper\SortInterface $sorter,
84 array $alternatives = []
87 $this->lockerProcess = $lockerProcess;
88 $this->sorter = $sorter;
89 $this->alternatives = $alternatives;
90 $this->lockName = $lockName;
91 $this->assetBuilder = $assetBuilder;
92 $this->filenameResolver = $filenameResolver;
108 $this->lockerProcess->lockProcess($this->lockName);
113 $context = $chain->
getAsset()->getContext();
116 $this->lockerProcess->unlockProcess();
132 if ($this->alternativesSorted ===
null) {
133 $this->alternativesSorted = $this->sorter->sort($this->alternatives);
136 $path = $this->filenameResolver->resolve(
$path);
137 foreach ($this->alternativesSorted as
$name => $alternative) {
138 $asset = $this->assetBuilder->setArea($context->getAreaCode())
139 ->setTheme($context->getThemePath())
140 ->setLocale($context->getLocale())
142 ->setPath(preg_replace(
143 '#\.' . preg_quote(pathinfo(
$path, PATHINFO_EXTENSION)) .
'$#',
148 $processor = $this->objectManager->get($alternative[self::PROCESSOR_CLASS]);
149 if (!
$processor instanceof ContentProcessorInterface) {
150 throw new \UnexpectedValueException(
151 '"' . $alternative[self::PROCESSOR_CLASS] .
'" has to implement the ContentProcessorInterface.' 169 return array_keys($this->alternatives);
getAlternativesExtensionsNames()
process(PreProcessor\Chain $chain)
__construct(FilenameResolverInterface $filenameResolver, ObjectManagerInterface $objectManager, LockerProcessInterface $lockerProcess, Helper\SortInterface $sorter, AssetBuilder $assetBuilder, $lockName, array $alternatives=[])
if(!isset($_GET['name'])) $name