27 private $alternativeSource;
32 private $assetBuilder;
37 private $lockerProcess;
65 $this->assetSource = $assetSource;
66 $this->alternativeSource = $alternativeSource;
67 $this->assetBuilder = $assetBuilder;
68 $this->lockerProcess = $lockerProcess;
69 $this->lockName = $lockName;
82 $this->lockerProcess->lockProcess($this->lockName);
84 $path = $chain->getAsset()->getFilePath();
85 $module = $chain->getAsset()->getModule();
88 $context = $chain->getAsset()->getContext();
90 $result = $this->processContent(
$path, $chain->getContent(), $module, $context);
91 $chain->setContent(
$result[
'content']);
92 $chain->setContentType(
$result[
'sourceType']);
94 $this->lockerProcess->unlockProcess();
107 private function processContent(
$path,
$content, $module, FallbackContext $context)
109 $sourceTypePattern =
'#\.' . preg_quote(pathinfo(
$path, PATHINFO_EXTENSION),
'#') .
'$#';
111 foreach ($this->alternativeSource->getAlternativesExtensionsNames() as
$name) {
112 $asset = $this->assetBuilder->setArea($context->getAreaCode())
113 ->setTheme($context->getThemePath())
114 ->setLocale($context->getLocale())
116 ->setPath(preg_replace($sourceTypePattern,
'.' .
$name,
$path))
119 $processedContent = $this->assetSource->getContent($asset);
121 if (trim($processedContent) !==
'') {
123 'content' => $processedContent,
124 'sourceType' =>
$name 131 'sourceType' => pathinfo(
$path, PATHINFO_EXTENSION)
__construct(Source $assetSource, AssetBuilder $assetBuilder, AlternativeSourceInterface $alternativeSource, LockerProcessInterface $lockerProcess, $lockName)
process(PreProcessor\Chain $chain)
if(!isset($_GET['name'])) $name