123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\PageCache\Model\Varnish;
- use Magento\Framework\App\Config\ScopeConfigInterface;
- use Magento\Framework\Module\Dir;
- use Magento\Framework\Module\Dir\Reader;
- use Magento\Framework\Filesystem\Directory\ReadFactory;
- use Magento\PageCache\Model\VclTemplateLocatorInterface;
- use Magento\PageCache\Exception\UnsupportedVarnishVersion;
- class VclTemplateLocator implements VclTemplateLocatorInterface
- {
- /**
- * XML path to Varnish 5 config template path
- */
- const VARNISH_5_CONFIGURATION_PATH = 'system/full_page_cache/varnish5/path';
- /**
- * XML path to Varnish 4 config template path
- */
- const VARNISH_4_CONFIGURATION_PATH = 'system/full_page_cache/varnish4/path';
- /**
- *
- */
- const VARNISH_SUPPORTED_VERSION_4 = '4';
- /**
- *
- */
- const VARNISH_SUPPORTED_VERSION_5 = '5';
- /**
- * @var array
- */
- private $supportedVarnishVersions = [
- self::VARNISH_SUPPORTED_VERSION_4 => self::VARNISH_4_CONFIGURATION_PATH,
- self::VARNISH_SUPPORTED_VERSION_5 => self::VARNISH_5_CONFIGURATION_PATH,
- ];
- /**
- * @var Reader
- */
- private $reader;
- /**
- * @var ReadFactory
- */
- private $readFactory;
- /**
- * @var ScopeConfigInterface
- */
- private $scopeConfig;
- /**
- * VclTemplateLocator constructor.
- *
- * @param Reader $reader
- * @param ReadFactory $readFactory
- * @param ScopeConfigInterface $scopeConfig
- */
- public function __construct(Reader $reader, ReadFactory $readFactory, ScopeConfigInterface $scopeConfig)
- {
- $this->reader = $reader;
- $this->readFactory = $readFactory;
- $this->scopeConfig = $scopeConfig;
- }
- /**
- * {@inheritdoc}
- */
- public function getTemplate($version)
- {
- $moduleEtcPath = $this->reader->getModuleDir(Dir::MODULE_ETC_DIR, 'Magento_PageCache');
- $configFilePath = $moduleEtcPath . '/' . $this->scopeConfig->getValue($this->getVclTemplatePath($version));
- $directoryRead = $this->readFactory->create($moduleEtcPath);
- $configFilePath = $directoryRead->getRelativePath($configFilePath);
- $template = $directoryRead->readFile($configFilePath);
- return $template;
- }
- /**
- * Get Vcl template path
- *
- * @param int $version Varnish version
- * @return string
- * @throws UnsupportedVarnishVersion
- */
- private function getVclTemplatePath($version)
- {
- if (!isset($this->supportedVarnishVersions[$version])) {
- throw new UnsupportedVarnishVersion(__('Unsupported varnish version'));
- }
- return $this->supportedVarnishVersions[$version];
- }
- }
|