mirror of
https://github.com/Combodo/iTop.git
synced 2026-09-29 21:09:10 +02:00
N°9906 Code clean up
This commit is contained in:
@@ -364,10 +364,8 @@ class DataFeatureRemovalController extends Controller
|
||||
private function GetAvailableExtensions(bool $bIncludePackageExtensions = false): array
|
||||
{
|
||||
$aExtensionsData = [];
|
||||
$oExtensionMap = DataFeatureRemoverExtensionService::GetInstance()->GetExtensionMap();
|
||||
$aBasePackageModules = $this->GetBasePackageModules();
|
||||
if ($bIncludePackageExtensions) {
|
||||
$aExtensionsRef = $oExtensionMap->GetAllExtensionsWithPreviouslyInstalled();
|
||||
$aExtensionsRef = DataFeatureRemoverExtensionService::GetInstance()->GetExtensionMap()->GetAllExtensionsWithPreviouslyInstalled();
|
||||
} else {
|
||||
$aExtensionsRef = DataFeatureRemoverExtensionService::GetInstance()->ReadItopExtensions();
|
||||
}
|
||||
@@ -375,7 +373,7 @@ class DataFeatureRemovalController extends Controller
|
||||
foreach ($aExtensionsRef as $oExtension) {
|
||||
/** @var \iTopExtension $oExtension */
|
||||
$aMetaData = [$oExtension->sVersion, $oExtension->GetExtensionSourceLabel(), $oExtension->sCode];
|
||||
$bIsPackageExtension = SetupUtils::IsIncludedInPackage($oExtension, $aBasePackageModules);
|
||||
$bIsPackageExtension = $this->IsIncludedInPackage($oExtension);
|
||||
|
||||
$aExtensionsData[$oExtension->sCode] = [
|
||||
'version' => $oExtension->sVersion,
|
||||
@@ -399,6 +397,29 @@ class DataFeatureRemovalController extends Controller
|
||||
return $aExtensionsData;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true when all modules of a non-package extension are already included in base package modules.
|
||||
*/
|
||||
public function IsIncludedInPackage(iTopExtension $oExtension): bool
|
||||
{
|
||||
if ($oExtension->sSource === iTopExtension::SOURCE_WIZARD) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$aModules = $oExtension->aModules ?? [];
|
||||
if (!is_array($aModules) || empty($aModules)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$aBasePackageModules = $this->GetBasePackageModules();
|
||||
foreach ($aModules as $sModuleId) {
|
||||
if (!in_array($sModuleId, $aBasePackageModules)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private function GetBasePackageModules(): array
|
||||
{
|
||||
if ($this->aBasePackageModules !== null) {
|
||||
@@ -417,10 +438,9 @@ class DataFeatureRemovalController extends Controller
|
||||
|
||||
$sSourceEnv = MetaModel::GetEnvironment();
|
||||
$oRuntimeEnvironment = new RunTimeEnvironment($sSourceEnv, false);
|
||||
$aSelectedModules = $oRuntimeEnvironment->GetModulesToLoadFromSelectedExtensions($oConfig, $aSelectedExtensions);
|
||||
|
||||
$this->aBasePackageModules = $aSelectedModules;
|
||||
return $aSelectedModules;
|
||||
$this->aBasePackageModules = $oRuntimeEnvironment->GetModulesToLoadFromSelectedExtensions($oConfig, $aSelectedExtensions);
|
||||
return $this->aBasePackageModules;
|
||||
}
|
||||
|
||||
private function GetExtensionsDiff(array $aAddedExtensions, array $aRemovedExtensions): array
|
||||
|
||||
@@ -1705,68 +1705,6 @@ JS
|
||||
return array_key_exists('itsm-designer-connector', $aModules);
|
||||
}
|
||||
|
||||
/**
|
||||
* Build a map of module IDs that belong to the package base scope.
|
||||
*
|
||||
* @param array $aAnalyzeInstallationModules Output from AnalyzeInstallation method
|
||||
* @param string $sSourceDir Base directory used as package scope
|
||||
*
|
||||
* @return array<string, bool>
|
||||
*/
|
||||
public static function GetBasePackageModules(array $aAnalyzeInstallationModules, string $sSourceDir): array
|
||||
{
|
||||
$aBasePackageModules = [];
|
||||
$sNormalizedSourceDir = self::NormalizePathForComparison($sSourceDir);
|
||||
if ($sNormalizedSourceDir === '') {
|
||||
return $aBasePackageModules;
|
||||
}
|
||||
|
||||
foreach ($aAnalyzeInstallationModules as $sModuleId => $aModuleInfo) {
|
||||
if ($sModuleId === ROOT_MODULE) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$sRootDir = $aModuleInfo['root_dir'] ?? '';
|
||||
if ($sRootDir === '') {
|
||||
continue;
|
||||
}
|
||||
|
||||
$sModuleRootDir = self::NormalizePathForComparison($sRootDir);
|
||||
if (utils::StartsWith($sModuleRootDir, $sNormalizedSourceDir)) {
|
||||
$aBasePackageModules[$sModuleId] = true;
|
||||
}
|
||||
}
|
||||
|
||||
return $aBasePackageModules;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true when all modules of a non-package extension are already included in base package modules.
|
||||
*/
|
||||
public static function IsIncludedInPackage(?iTopExtension $oExtension, array $aBasePackageModules): bool
|
||||
{
|
||||
if (($oExtension === null) || ($oExtension->sSource === iTopExtension::SOURCE_WIZARD)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$aModules = $oExtension->aModules ?? [];
|
||||
if (!is_array($aModules) || empty($aModules)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
foreach ($aModules as $sModuleId) {
|
||||
if (!in_array($sModuleId, $aBasePackageModules)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private static function NormalizePathForComparison(string $sPath): string
|
||||
{
|
||||
return rtrim(str_replace('\\', '/', $sPath), '/');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $aModules List of available module codes
|
||||
*
|
||||
|
||||
@@ -1000,7 +1000,7 @@ EOF
|
||||
$sTooltip .= '<div id="badge--'.$sId.'--cannot-be-installed" class="ibo-badge ibo-block ibo-is-orange" title="This extension cannot be installed because one or more dependencies are not satisfied." >cannot be installed</div>';
|
||||
}
|
||||
if ($aFlags['already_included']) {
|
||||
$sTooltip .= '<div id="badge--'.$sId.'--already-part-of-itop" class="ibo-badge ibo-block ibo-is-yellow" title="All the modules included in this extension are already part of iTop package choices. To uninstall this extension, you have to delete its folder." >already part of iTop</div>';
|
||||
$sTooltip .= '<div id="badge--'.$sId.'--already-part-of-itop" class="ibo-badge ibo-block ibo-is-yellow" title="All modules in this extension are already part of the iTop package. To uninstall this extension, you have to delete its folder." >already part of iTop</div>';
|
||||
}
|
||||
|
||||
$sMetadata = '';
|
||||
|
||||
Reference in New Issue
Block a user