1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Deploy\Model\DeploymentConfig;
- use Magento\Deploy\Model\DeploymentConfig\Hash\Generator as HashGenerator;
- /**
- * Configuration data changes detector.
- *
- * Detects changes in specific sections of the deployment configuration files.
- * This detector checks that configuration data from sections was not changed.
- */
- class ChangeDetector
- {
- /**
- * Hash storage.
- *
- * @var Hash
- */
- private $configHash;
- /**
- * Hash generator of config data.
- *
- * @var HashGenerator
- */
- private $hashGenerator;
- /**
- * Config data collector of specific sections.
- *
- * @var DataCollector
- */
- private $dataConfigCollector;
- /**
- * @param Hash $configHash The hash storage
- * @param HashGenerator $hashGenerator The hash generator of config data
- * @param DataCollector $dataConfigCollector The config data collector of specific sections
- */
- public function __construct(
- Hash $configHash,
- HashGenerator $hashGenerator,
- DataCollector $dataConfigCollector
- ) {
- $this->configHash = $configHash;
- $this->hashGenerator = $hashGenerator;
- $this->dataConfigCollector = $dataConfigCollector;
- }
- /**
- * Checks if config data in the deployment configuration files was changed.
- *
- * Checks if config data was changed based on its hash.
- * If the new hash of config data and the saved hash are different returns true.
- * If config data is empty always returns false.
- * In the other cases returns false.
- *
- * @param string $sectionName The section name for check data of the specific section
- * @return bool
- */
- public function hasChanges($sectionName = null)
- {
- $configs = $this->dataConfigCollector->getConfig($sectionName);
- $hashes = $this->configHash->get();
- foreach ($configs as $section => $config) {
- if (null === $config) {
- continue;
- }
- $savedHash = isset($hashes[$section]) ? $hashes[$section] : null;
- $generatedHash = empty($config) && !$savedHash ? null : $this->hashGenerator->generate($config);
- if ($generatedHash !== $savedHash) {
- return true;
- }
- }
- return false;
- }
- }
|