Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
PublicationDecorator.php
Go to the documentation of this file.
1 <?php
7 
17 
22 {
26  private $assetPublisher;
27 
31  private $scopeConfig;
32 
36  private $hasRelatedPublishing;
37 
41  private $state;
42 
52  public function __construct(
53  Repository $assetRepository,
54  Temporary $temporaryFile,
55  Publisher $assetPublisher,
56  ScopeConfigInterface $scopeConfig,
57  $hasRelatedPublishing = false
58  ) {
59  parent::__construct($assetRepository, $temporaryFile);
60  $this->assetPublisher = $assetPublisher;
61  $this->scopeConfig = $scopeConfig;
62  $this->hasRelatedPublishing = $hasRelatedPublishing;
63  }
64 
68  protected function generateRelatedFile($relatedFileId, LocalInterface $asset)
69  {
70  $relatedAsset = parent::generateRelatedFile($relatedFileId, $asset);
71  $isClientSideCompilation =
72  $this->getState()->getMode() !== State::MODE_PRODUCTION
73  && WorkflowType::CLIENT_SIDE_COMPILATION === $this->scopeConfig->getValue(WorkflowType::CONFIG_NAME_PATH);
74 
75  if ($this->hasRelatedPublishing || $isClientSideCompilation) {
76  $this->assetPublisher->publish($relatedAsset);
77  }
78 
79  return $relatedAsset;
80  }
81 
86  private function getState()
87  {
88  if (null === $this->state) {
89  $this->state = ObjectManager::getInstance()->get(State::class);
90  }
91 
92  return $this->state;
93  }
94 }
__construct(Repository $assetRepository, Temporary $temporaryFile, Publisher $assetPublisher, ScopeConfigInterface $scopeConfig, $hasRelatedPublishing=false)