N°8981: review cleanup on module filtering due to extensoin removal

This commit is contained in:
odain
2026-01-07 19:48:34 +01:00
parent 5f2604c610
commit e55bbf728b
4 changed files with 20 additions and 19 deletions

View File

@@ -257,10 +257,7 @@ class ApplicationInstaller
$sSourceDir = $this->oParams->Get('source_dir', 'datamodels/latest');
$sExtensionDir = $this->oParams->Get('extensions_dir', 'extensions');
$aMiscOptions = $this->oParams->Get('options', []);
$aRemovedExtensionCodes = $this->oParams->Get('removed_extensions', null);
if (! is_array($aRemovedExtensionCodes)) {
$aRemovedExtensionCodes = [];
}
$aRemovedExtensionCodes = $this->oParams->Get('removed_extensions', []);
$bUseSymbolicLinks = null;
if ((isset($aMiscOptions['symlinks']) && $aMiscOptions['symlinks'])) {

View File

@@ -182,11 +182,6 @@ class iTopExtensionsMap
*/
public function DeclareExtensionAsRemoved(array $aExtensionCodes): void
{
if (count($aExtensionCodes) === 0) {
\ModuleDiscovery::DeclareRemovedExtensions([]);
return;
}
$aRemovedExtension = [];
foreach ($aExtensionCodes as $sCode) {
/** @var \iTopExtension $oExtension */

View File

@@ -252,7 +252,6 @@ class ModuleDiscovery
if (self::$m_aRemovedExtensions != $aRemovedExtension) {
self::ResetCache();
}
SetupLog::Info(__METHOD__, null, ['count' => count($aRemovedExtension)]);
self::$m_aRemovedExtensions = $aRemovedExtension;
}
@@ -262,6 +261,9 @@ class ModuleDiscovery
return false;
}
$aNonMatchingPaths = [];
$sModuleFilePath = $aModuleInfo[ModuleFileReader::MODULE_FILE_PATH];
/** @var \iTopExtension $oExtension */
foreach (self::$m_aRemovedExtensions as $oExtension) {
$sCurrentVersion = $oExtension->aModuleVersion[$sModuleName] ?? null;
@@ -274,17 +276,27 @@ class ModuleDiscovery
}
$aCurrentModuleInfo = $oExtension->aModuleInfo[$sModuleName] ?? null;
$sCurrentModuleFilePath = $aCurrentModuleInfo[ModuleFileReader::MODULE_FILE_PATH];
$sPath = $aModuleInfo[ModuleFileReader::MODULE_FILE_PATH];
if (realpath($sPath) !== realpath($sCurrentModuleFilePath)) {
if (is_null($aCurrentModuleInfo)) {
SetupLog::Warning("Missing $sModuleName in ".$oExtension->sLabel.". it should not happen");
continue;
}
SetupLog::Info("Module considered as removed", null, ['extension_code' => $oExtension->sCode, 'module_name' => $sModuleName, 'module_version' => $sModuleVersion, ]);
// use case: same module coming from 2 different extensions
// we remove only the one coming from removed extensions
$sCurrentModuleFilePath = $aCurrentModuleInfo[ModuleFileReader::MODULE_FILE_PATH];
if (realpath($sModuleFilePath) !== realpath($sCurrentModuleFilePath)) {
$aNonMatchingPaths[] = $sCurrentModuleFilePath;
continue;
}
SetupLog::Info("Module considered as removed", null, ['extension_code' => $oExtension->sCode, 'module_name' => $sModuleName, 'module_version' => $sModuleVersion, ModuleFileReader::MODULE_FILE_PATH => $sCurrentModuleFilePath]);
return true;
}
if (count($aNonMatchingPaths) > 0) {
//add log for support
SetupLog::Info("Module kept as it came from non removed extensions", null, ['module_name' => $sModuleName, 'module_version' => $sModuleVersion, ModuleFileReader::MODULE_FILE_PATH => $sModuleFilePath, 'non_matching_paths' => $aNonMatchingPaths]);
}
return false;
}

View File

@@ -1602,10 +1602,7 @@ JS
$aDirsToScan[] = $sExtraDir;
}
$oProductionEnv = new RunTimeEnvironment();
$aRemovedExtensionCodes = $oWizard->GetParameter('removed_extensions', null);
if (! is_array($aRemovedExtensionCodes)) {
$aRemovedExtensionCodes = [];
}
$aRemovedExtensionCodes = $oWizard->GetParameter('removed_extensions', []);
$oExtensionsMap = new iTopExtensionsMap('production', $aDirsToScan);
$oExtensionsMap->DeclareExtensionAsRemoved($aRemovedExtensionCodes);