Skip to content
40 changes: 28 additions & 12 deletions setup/src/Magento/Setup/Model/Installer.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

use Magento\Backend\Setup\ConfigOptionsList as BackendConfigOptionsList;
use Magento\Framework\App\Cache\Manager;
use Magento\Framework\App\Cache\StateInterface;
use Magento\Framework\App\Cache\Type\Block as BlockCache;
use Magento\Framework\App\Cache\Type\Config as ConfigCache;
use Magento\Framework\App\Cache\Type\Layout as LayoutCache;
Expand All @@ -30,6 +31,7 @@
use Magento\Framework\Module\ModuleList\Loader as ModuleLoader;
use Magento\Framework\Module\ModuleListInterface;
use Magento\Framework\Mview\TriggerCleaner;
use Magento\Framework\Registry;
use Magento\Framework\Setup\Declaration\Schema\DryRunLogger;
use Magento\Framework\Setup\FilePermissions;
use Magento\Framework\Setup\InstallDataInterface;
Expand Down Expand Up @@ -878,8 +880,8 @@ private function cleanMemoryTables(SchemaSetupInterface $setup)
*/
public function installSchema(array $request)
{
/** @var \Magento\Framework\Registry $registry */
$registry = $this->objectManagerProvider->get()->get(\Magento\Framework\Registry::class);
/** @var Registry $registry */
$registry = $this->objectManagerProvider->get()->get(Registry::class);
//For backward compatibility in install and upgrade scripts with enabled parallelization.
$registry->register('setup-mode-enabled', true);

Expand Down Expand Up @@ -926,14 +928,16 @@ private function convertationOfOldScriptsIsAllowed(array $request)
*/
public function installDataFixtures(array $request = [])
{
/** @var StateInterface $cacheState */
$cacheState = $this->objectManagerProvider->get()->get(StateInterface::class);
$frontendCaches = [
PageCache::TYPE_IDENTIFIER,
BlockCache::TYPE_IDENTIFIER,
LayoutCache::TYPE_IDENTIFIER,
PageCache::TYPE_IDENTIFIER => $cacheState->isEnabled(PageCache::TYPE_IDENTIFIER),
BlockCache::TYPE_IDENTIFIER => $cacheState->isEnabled(BlockCache::TYPE_IDENTIFIER),
LayoutCache::TYPE_IDENTIFIER => $cacheState->isEnabled(LayoutCache::TYPE_IDENTIFIER)
];

/** @var \Magento\Framework\Registry $registry */
$registry = $this->objectManagerProvider->get()->get(\Magento\Framework\Registry::class);
/** @var Registry $registry */
$registry = $this->objectManagerProvider->get()->get(Registry::class);
//For backward compatibility in install and upgrade scripts with enabled parallelization.
$registry->register('setup-mode-enabled', true);

Expand Down Expand Up @@ -1355,23 +1359,35 @@ public function uninstall()
* @return void
* @throws Exception
*/
private function updateCaches($isEnabled, $types = [])
private function updateCaches(bool $isEnabled, array $types = []): void
{
/** @var Manager $cacheManager */
$cacheManager = $this->objectManagerProvider->get()->create(Manager::class);

$cacheTypes = array_keys($types);
$availableTypes = $cacheManager->getAvailableTypes();
$types = empty($types) ? $availableTypes : array_intersect($availableTypes, $types);
$enabledTypes = $cacheManager->setEnabled($types, $isEnabled);
$cacheTypes = empty($cacheTypes) ? $availableTypes : array_intersect($availableTypes, $cacheTypes);

if ($isEnabled) {
$enabledTypes = [];

foreach ($types as $type => $status) {
$enabledTypes[] = $cacheManager->setEnabled((array)$type, $status);
}

$enabledTypes = array_merge([], ...$enabledTypes);

$cacheManager->clean($enabledTypes);

} else {
$cacheManager->setEnabled($cacheTypes, $isEnabled);
}

// Only get statuses of specific cache types
$cacheStatus = array_filter(
$cacheManager->getStatus(),
function (string $key) use ($types) {
return in_array($key, $types);
function (string $key) use ($cacheTypes) {
return in_array($key, $cacheTypes);
},
ARRAY_FILTER_USE_KEY
);
Expand Down