N°9690 Removed and added modules/extensions are now read from GET parameters

This commit is contained in:
Timmy38
2026-06-15 11:49:52 +02:00
parent 6a20e36434
commit 65b58ec4e2

View File

@@ -6,12 +6,6 @@ require_once(dirname(__DIR__, 6).'/approot.inc.php');
require_once(APPROOT.'application/startup.inc.php');
require_once(APPROOT.'setup/setuputils.class.inc.php');
$aParams = [
"exec_module" => "combodo-data-feature-removal",
"exec_page" => "index.php",
'exec_env' => 'production',
];
new ContextTag(ContextTag::TAG_SETUP);
$sToken = SetupUtils::CreateSetupToken();
@@ -34,24 +28,45 @@ function GetLastestInstallFile(): ?string
return $sLastFilePath;
}
$aRemovedExtensions = [
'itop-container-mgmt' => 'Containerization',
];
$sPath = GetLastestInstallFile();
if (is_null($sPath)) {
throw new Exception("$sPath no installation XM. Launch a setup....");
throw new Exception("$sPath no installation XML. Launch a setup....");
}
$aParams = new XMLParameters($sPath);
$aSelectedModules = array_filter($aParams->Get('selected_modules', []), static function ($element) {
global $aRemovedExtensions;
return ! array_key_exists($element, $aRemovedExtensions);
});
$aSelectedModules = $aParams->Get('selected_modules', []);
$aSelectedExtensions = $aParams->Get('selected_extensions', []);
$aSelectedExtensions = array_filter($aParams->Get('selected_extensions', []), static function ($element) {
global $aRemovedExtensions;
return ! array_key_exists($element, $aRemovedExtensions);
});
$sAddedExtensions = utils::ReadParam('added_extensions', '');
$aAddedExtensions = [];
if (mb_strlen($sAddedExtensions) > 0) {
$aAddedExtensions = explode(',', $sAddedExtensions);
}
$oExtensionMap = new iTopExtensionsMap();
foreach ($aAddedExtensions as $sExtensionCode) {
if (mb_strlen($sExtensionCode) <= 0) {
continue;
}
$oExtension = $oExtensionMap->GetFromExtensionCode($sExtensionCode);
$aSelectedExtensions[] = $oExtension->sCode;
foreach ($oExtension->aModules as $sModuleCode) {
if (!in_array($sModuleCode, $aSelectedModules)) {
$aSelectedModules[] = $sModuleCode;
}
}
}
$sRemovedExtensions = utils::ReadParam('removed_modules', '',false, 'raw');
$aRemovedExtensionsAndModules = [];
if (mb_strlen($sRemovedExtensions) > 0) {
$aRemovedExtensionsAndModules = explode(',', $sRemovedExtensions);
}
$aSelectedModules = array_filter($aSelectedModules, fn($element) => !in_array($element, $aRemovedExtensionsAndModules));
$aSelectedExtensions = array_filter($aSelectedExtensions, fn($element) => !in_array($element, $aRemovedExtensionsAndModules));
$aRemovedExtensionsAndModules = array_filter($aRemovedExtensionsAndModules, fn($element) => !is_null($oExtensionMap->GetFromExtensionCode($element)));
$aRemovedExtensions = array_combine($aRemovedExtensionsAndModules, $aRemovedExtensionsAndModules);
$aAddedExtensions = array_combine($aAddedExtensions, $aAddedExtensions);
$aPostParams = [
"auth_user" => 'admin',
@@ -62,8 +77,9 @@ $aPostParams = [
'selected_modules' => utils::HtmlEntities(json_encode($aSelectedModules)),
'selected_extensions' => utils::HtmlEntities(json_encode($aSelectedExtensions)),
'removed_extensions' => utils::HtmlEntities(json_encode($aRemovedExtensions)),
'force-uninstall' => "on",
'use_symbolic_links' => "",
'added_extensions' => utils::HtmlEntities(json_encode($aAddedExtensions)),
'force-uninstall' => 'on',
'use_symbolic_links' => '',
];
$sHiddenPostedInput = "";