Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
FrontendCompilation.php
Go to the documentation of this file.
1 <?php
7 
15 
23 {
27  private $alternativeSource;
28 
32  private $assetBuilder;
33 
37  private $lockerProcess;
38 
42  private $lockName;
43 
47  private $assetSource;
48 
58  public function __construct(
59  Source $assetSource,
60  AssetBuilder $assetBuilder,
61  AlternativeSourceInterface $alternativeSource,
62  LockerProcessInterface $lockerProcess,
63  $lockName
64  ) {
65  $this->assetSource = $assetSource;
66  $this->alternativeSource = $alternativeSource;
67  $this->assetBuilder = $assetBuilder;
68  $this->lockerProcess = $lockerProcess;
69  $this->lockName = $lockName;
70  }
71 
78  public function process(PreProcessor\Chain $chain)
79  {
80 
81  try {
82  $this->lockerProcess->lockProcess($this->lockName);
83 
84  $path = $chain->getAsset()->getFilePath();
85  $module = $chain->getAsset()->getModule();
86 
88  $context = $chain->getAsset()->getContext();
89 
90  $result = $this->processContent($path, $chain->getContent(), $module, $context);
91  $chain->setContent($result['content']);
92  $chain->setContentType($result['sourceType']);
93  } finally {
94  $this->lockerProcess->unlockProcess();
95  }
96  }
97 
107  private function processContent($path, $content, $module, FallbackContext $context)
108  {
109  $sourceTypePattern = '#\.' . preg_quote(pathinfo($path, PATHINFO_EXTENSION), '#') . '$#';
110 
111  foreach ($this->alternativeSource->getAlternativesExtensionsNames() as $name) {
112  $asset = $this->assetBuilder->setArea($context->getAreaCode())
113  ->setTheme($context->getThemePath())
114  ->setLocale($context->getLocale())
115  ->setModule($module)
116  ->setPath(preg_replace($sourceTypePattern, '.' . $name, $path))
117  ->build();
118 
119  $processedContent = $this->assetSource->getContent($asset);
120 
121  if (trim($processedContent) !== '') {
122  return [
123  'content' => $processedContent,
124  'sourceType' => $name
125  ];
126  }
127  }
128 
129  return [
130  'content' => $content,
131  'sourceType' => pathinfo($path, PATHINFO_EXTENSION)
132  ];
133  }
134 }
__construct(Source $assetSource, AssetBuilder $assetBuilder, AlternativeSourceInterface $alternativeSource, LockerProcessInterface $lockerProcess, $lockName)
if(!isset($_GET['name'])) $name
Definition: log.php:14