* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ namespace PrestaShop\PrestaShop\Adapter\File; use PrestaShop\PrestaShop\Adapter\Tools; use PrestaShop\PrestaShop\Core\Cache\Clearer\CacheClearerInterface; /** * Class HtaccessFileGenerator is responsible for generating htaccess file with its default content. */ class HtaccessFileGenerator { /** * @var CacheClearerInterface */ private $cacheClearer; /** * @var Tools */ private $tools; /** * @var bool */ private $multipleViewsConfiguration; /** * HtaccessFileGenerator constructor. * * @param CacheClearerInterface $cacheClearer * @param Tools $tools * @param bool $multipleViewsConfiguration */ public function __construct(CacheClearerInterface $cacheClearer, Tools $tools, $multipleViewsConfiguration) { $this->cacheClearer = $cacheClearer; $this->tools = $tools; $this->multipleViewsConfiguration = $multipleViewsConfiguration; } /** * Generates htaccess file and its content. * * @param bool|null $disableMultiView if null, rely on the Shop configuration * * @return bool */ public function generateFile($disableMultiView = null) { if (null === $disableMultiView) { $disableMultiView = $this->multipleViewsConfiguration; } $isGenerated = $disableMultiView ? $this->tools->generateHtaccessWithMultiViews() : $this->tools->generateHtaccessWithoutMultiViews(); if ($isGenerated) { $this->cacheClearer->clear(); } return $isGenerated; } }