|
Apache/2.4.41 (Ubuntu) Linux vmi616275.contaboserver.net 5.4.0-84-generic #94-Ubuntu SMP Thu Aug 26 20:27:37 UTC 2021 x86_64 uid=33(www-data) gid=33(www-data) groups=33(www-data) server ip : 62.171.164.128 | your ip : 127.0.0.1 safemode OFF > / home / dev2.destoffenstraat.com / setup / src / Magento / Setup / Model / |
Filename | /home/dev2.destoffenstraat.com/setup/src/Magento/Setup/Model/ModuleUninstaller.php |
Size | 3.24 kb |
Permission | rw-r--r-- |
Owner | root : root |
Create time | 17-Aug-2025 10:26 |
Last modified | 28-Jan-2025 06:45 |
Last accessed | 23-Aug-2025 00:41 |
Actions | edit | rename | delete | download (gzip) |
View | text | code | image |
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Setup\Model;
use Magento\Framework\Setup\Patch\PatchApplier;
use Symfony\Component\Console\Output\OutputInterface;
/**
* Class to uninstall a module component
*/
class ModuleUninstaller
{
/**
* @var \Magento\Framework\ObjectManagerInterface
*/
private $objectManager;
/**
* @var \Magento\Framework\Composer\Remove
*/
private $remove;
/**
* @var UninstallCollector
*/
private $collector;
/**
* @var \Magento\Setup\Module\SetupFactory
*/
private $setupFactory;
/**
* @var PatchApplier
*/
private $patchApplier;
/**
* Constructor
*
* @param ObjectManagerProvider $objectManagerProvider
* @param \Magento\Framework\Composer\Remove $remove
* @param UninstallCollector $collector
* @param \Magento\Setup\Module\SetupFactory $setupFactory
* @param PatchApplier $patchApplier
*/
public function __construct(
ObjectManagerProvider $objectManagerProvider,
\Magento\Framework\Composer\Remove $remove,
UninstallCollector $collector,
\Magento\Setup\Module\SetupFactory $setupFactory
) {
$this->objectManager = $objectManagerProvider->get();
$this->remove = $remove;
$this->collector = $collector;
$this->setupFactory = $setupFactory;
}
/**
* @return PatchApplier
*/
private function getPatchApplier()
{
if (!$this->patchApplier) {
$this->patchApplier = $this->objectManager->get(PatchApplier::class);
}
return $this->patchApplier;
}
/**
* Invoke remove data routine in each specified module
*
* @param OutputInterface $output
* @param array $modules
* @return void
*/
public function uninstallData(OutputInterface $output, array $modules)
{
$uninstalls = $this->collector->collectUninstall($modules);
$setupModel = $this->setupFactory->create();
$resource = $this->objectManager->get(\Magento\Framework\Module\ModuleResource::class);
foreach ($modules as $module) {
if (isset($uninstalls[$module])) {
$output->writeln("<info>Removing data of $module</info>");
$uninstalls[$module]->uninstall(
$setupModel,
new ModuleContext($resource->getDbVersion($module) ?: '')
);
}
$this->getPatchApplier()->revertDataPatches($module);
}
}
/**
* Run 'composer remove' to remove code
*
* @param OutputInterface $output
* @param array $modules
* @return void
*/
public function uninstallCode(OutputInterface $output, array $modules)
{
$output->writeln('<info>Removing code from Magento codebase:</info>');
$packages = [];
/** @var \Magento\Framework\Module\PackageInfo $packageInfo */
$packageInfo = $this->objectManager->get(\Magento\Framework\Module\PackageInfoFactory::class)->create();
foreach ($modules as $module) {
$packages[] = $packageInfo->getPackageName($module);
}
$this->remove->remove($packages);
}
}
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Setup\Model;
use Magento\Framework\Setup\Patch\PatchApplier;
use Symfony\Component\Console\Output\OutputInterface;
/**
* Class to uninstall a module component
*/
class ModuleUninstaller
{
/**
* @var \Magento\Framework\ObjectManagerInterface
*/
private $objectManager;
/**
* @var \Magento\Framework\Composer\Remove
*/
private $remove;
/**
* @var UninstallCollector
*/
private $collector;
/**
* @var \Magento\Setup\Module\SetupFactory
*/
private $setupFactory;
/**
* @var PatchApplier
*/
private $patchApplier;
/**
* Constructor
*
* @param ObjectManagerProvider $objectManagerProvider
* @param \Magento\Framework\Composer\Remove $remove
* @param UninstallCollector $collector
* @param \Magento\Setup\Module\SetupFactory $setupFactory
* @param PatchApplier $patchApplier
*/
public function __construct(
ObjectManagerProvider $objectManagerProvider,
\Magento\Framework\Composer\Remove $remove,
UninstallCollector $collector,
\Magento\Setup\Module\SetupFactory $setupFactory
) {
$this->objectManager = $objectManagerProvider->get();
$this->remove = $remove;
$this->collector = $collector;
$this->setupFactory = $setupFactory;
}
/**
* @return PatchApplier
*/
private function getPatchApplier()
{
if (!$this->patchApplier) {
$this->patchApplier = $this->objectManager->get(PatchApplier::class);
}
return $this->patchApplier;
}
/**
* Invoke remove data routine in each specified module
*
* @param OutputInterface $output
* @param array $modules
* @return void
*/
public function uninstallData(OutputInterface $output, array $modules)
{
$uninstalls = $this->collector->collectUninstall($modules);
$setupModel = $this->setupFactory->create();
$resource = $this->objectManager->get(\Magento\Framework\Module\ModuleResource::class);
foreach ($modules as $module) {
if (isset($uninstalls[$module])) {
$output->writeln("<info>Removing data of $module</info>");
$uninstalls[$module]->uninstall(
$setupModel,
new ModuleContext($resource->getDbVersion($module) ?: '')
);
}
$this->getPatchApplier()->revertDataPatches($module);
}
}
/**
* Run 'composer remove' to remove code
*
* @param OutputInterface $output
* @param array $modules
* @return void
*/
public function uninstallCode(OutputInterface $output, array $modules)
{
$output->writeln('<info>Removing code from Magento codebase:</info>');
$packages = [];
/** @var \Magento\Framework\Module\PackageInfo $packageInfo */
$packageInfo = $this->objectManager->get(\Magento\Framework\Module\PackageInfoFactory::class)->create();
foreach ($modules as $module) {
$packages[] = $packageInfo->getPackageName($module);
}
$this->remove->remove($packages);
}
}