From 7844c9ffd0f42b279ec36807b0706b4d1c93f332 Mon Sep 17 00:00:00 2001 From: Timothee Date: Tue, 6 Jan 2026 14:29:23 +0100 Subject: [PATCH] =?UTF-8?q?N=C2=B08864=20Passing=20array=20instead=20of=20?= =?UTF-8?q?html?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- setup/wizardsteps.class.inc.php | 68 ++++++++++--------- .../setup/WizStepModulesChoiceTest.php | 44 +++++------- 2 files changed, 53 insertions(+), 59 deletions(-) diff --git a/setup/wizardsteps.class.inc.php b/setup/wizardsteps.class.inc.php index 88ce73756..c2f9860f4 100644 --- a/setup/wizardsteps.class.inc.php +++ b/setup/wizardsteps.class.inc.php @@ -1386,32 +1386,7 @@ class WizStepModulesChoice extends WizardStep } } - $sExtensionsAdded = ''; - if (count($aExtensionsAdded) > 0) { - $sExtensionsAdded = ''; - } else { - $sExtensionsAdded = ''; - } - - $sExtensionsRemoved = ''; - if (count($aExtensionsRemoved) > 0) { - $sExtensionsRemoved = ''; - } else { - $sExtensionsRemoved = ''; - } - return [$sExtensionsAdded, $sExtensionsRemoved]; + return [$aExtensionsAdded, $aExtensionsRemoved, $aExtensionsNotUninstallable]; } public function ProcessParams($bMoveForward = true) @@ -1444,13 +1419,13 @@ class WizStepModulesChoice extends WizardStep $this->oWizard->SetParameter('old_addon', true); } - [$sExtensionsAdded, $sExtensionsRemoved] = $this->GetAddedAndRemovedExtensions($aExtensions); - + [$aExtensionsAdded, $aExtensionsRemoved, $aExtensionsNotUninstallable] = $this->GetAddedAndRemovedExtensions($aExtensions); $this->oWizard->SetParameter('selected_modules', json_encode(array_keys($aModules))); $this->oWizard->SetParameter('selected_extensions', json_encode($aExtensions)); $this->oWizard->SetParameter('display_choices', $sDisplayChoices); - $this->oWizard->SetParameter('extensions_added', $sExtensionsAdded); - $this->oWizard->SetParameter('extensions_removed', $sExtensionsRemoved); + $this->oWizard->SetParameter('extensions_added', json_encode($aExtensionsAdded)); + $this->oWizard->SetParameter('extensions_removed', json_encode($aExtensionsRemoved)); + $this->oWizard->SetParameter('extensions_not_uninstallable', json_encode(array_keys($aExtensionsNotUninstallable))); return ['class' => 'WizStepSummary', 'state' => '']; } @@ -2270,10 +2245,39 @@ class WizStepSummary extends WizardStep $oPage->add('
'); $oPage->add('
Extensions to be installed'); - $oPage->add($this->oWizard->GetParameter('extensions_added')); + $aExtensionsAdded = json_decode($this->oWizard->GetParameter('extensions_added'), true); + + $sExtensionsAdded = ''; + if (count($aExtensionsAdded)) { + $sExtensionsAdded = '
    '; + foreach ($aExtensionsAdded as $sExtensionCode => $sLabel) { + $sExtensionsAdded .= '
  • '.$sLabel.'
  • '; + } + $sExtensionsAdded .= '
'; + } else { + $sExtensionsAdded = '
  • No extension added.
'; + } + $oPage->add($sExtensionsAdded); $oPage->add('
'); $oPage->add('
Extensions to be uninstalled'); - $oPage->add($this->oWizard->GetParameter('extensions_removed')); + + $aExtensionsRemoved = json_decode($this->oWizard->GetParameter('extensions_removed'), true); + $aExtensionsNotUninstallable = json_decode($this->oWizard->GetParameter('extensions_not_uninstallable')); + $sExtensionsRemoved = ''; + if (count($aExtensionsRemoved) > 0) { + $sExtensionsRemoved = '
    '; + foreach ($aExtensionsRemoved as $sExtensionCode => $sLabel) { + $sForcedUninstall = ''; + if (in_array($sExtensionCode, $aExtensionsNotUninstallable)) { + $sForcedUninstall = ' (forced uninstallation)'; + } + $sExtensionsRemoved .= '
  • '.$sLabel.$sForcedUninstall.'
  • '; + } + $sExtensionsRemoved .= '
'; + } else { + $sExtensionsRemoved = '
  • No extension removed.
'; + } + $oPage->add($sExtensionsRemoved); $oPage->add('
'); $oPage->add('
Database Parameters
    '); diff --git a/tests/php-unit-tests/unitary-tests/setup/WizStepModulesChoiceTest.php b/tests/php-unit-tests/unitary-tests/setup/WizStepModulesChoiceTest.php index bfff85779..5f30de425 100644 --- a/tests/php-unit-tests/unitary-tests/setup/WizStepModulesChoiceTest.php +++ b/tests/php-unit-tests/unitary-tests/setup/WizStepModulesChoiceTest.php @@ -272,28 +272,18 @@ class WizStepModulesChoiceTest extends ItopTestCase 'aExtensionsOnDiskOrDb' => [], 'aSelected' => [], - 'sExpectedAddedList' => '
    • No extension added.
    ', - 'sExpectedRemovedList' => '
    • No extension removed.
    ', + 'aExpectedAddedList' => [], + 'aExpectedRemovedList' => [], ], - 'no extensions selected' => [ + 'no extensions added nor removed' => [ 'aExtensionsOnDiskOrDb' => [ 'itop-ext1' => [ 'installed' => false, ], ], 'aSelected' => [], - 'sExpectedAddedList' => '
    • No extension added.
    ', - 'sExpectedRemovedList' => '
    • No extension removed.
    ', - ], - 'no extensions removed' => [ - 'aExtensionsOnDiskOrDb' => [ - 'itop-ext1' => [ - 'installed' => true, - ], - ], - 'aSelected' => ['itop-ext1'], - 'sExpectedAddedList' => '
    • No extension added.
    ', - 'sExpectedRemovedList' => '
    • No extension removed.
    ', + 'aExpectedAddedList' => [], + 'aExpectedRemovedList' => [], ], 'One added extension' => [ 'aExtensionsOnDiskOrDb' => [ @@ -302,8 +292,8 @@ class WizStepModulesChoiceTest extends ItopTestCase ], ], 'aSelected' => ['itop-ext1'], - 'sExpectedAddedList' => '
    • itop-ext1
    ', - 'sExpectedRemovedList' => '
    • No extension removed.
    ', + 'aExpectedAddedList' => ['itop-ext1' => 'itop-ext1'], + 'aExpectedRemovedList' => [], ], 'One removed extension' => [ 'aExtensionsOnDiskOrDb' => [ @@ -312,8 +302,8 @@ class WizStepModulesChoiceTest extends ItopTestCase ], ], 'aSelected' => [], - 'sExpectedAddedList' => '
    • No extension added.
    ', - 'sExpectedRemovedList' => '
    • itop-ext1
    ', + 'aExpectedAddedList' => [], + 'aExpectedRemovedList' => ['itop-ext1' => 'itop-ext1'], ], 'Forced removed extension' => [ 'aExtensionsOnDiskOrDb' => [ @@ -323,8 +313,8 @@ class WizStepModulesChoiceTest extends ItopTestCase ], ], 'aSelected' => [], - 'sExpectedAddedList' => '
    • No extension added.
    ', - 'sExpectedRemovedList' => '
    • itop-ext1 (forced uninstallation)
    ', + 'aExpectedAddedList' => [], + 'aExpectedRemovedList' => ['itop-ext1' => 'itop-ext1'], ], 'added and removed extensions' => [ 'aExtensionsOnDiskOrDb' => [ @@ -342,8 +332,8 @@ class WizStepModulesChoiceTest extends ItopTestCase ], ], 'aSelected' => ['itop-ext-added1', 'itop-ext-added2'], - 'sExpectedAddedList' => '
    • itop-ext-added1
    • itop-ext-added2
    ', - 'sExpectedRemovedList' => '
    • itop-ext-removed1
    • itop-ext-removed2
    ', + 'aExpectedAddedList' => ['itop-ext-added1' => 'itop-ext-added1', 'itop-ext-added2' => 'itop-ext-added2'], + 'aExpectedRemovedList' => ['itop-ext-removed1' => 'itop-ext-removed1', 'itop-ext-removed2' => 'itop-ext-removed2'], ], ]; @@ -352,12 +342,12 @@ class WizStepModulesChoiceTest extends ItopTestCase /** * @dataProvider ProviderGetAddedAndRemovedExtensions */ - public function testGetAddedAndRemovedExtensions($aExtensionsOnDiskOrDb, $aSelectedExtensions, $sExpectedAddedList, $sExpectedRemovedList) + public function testGetAddedAndRemovedExtensions($aExtensionsOnDiskOrDb, $aSelectedExtensions, $aExpectedAddedList, $aExpectedRemovedList) { $this->oStep->setExtensionMap(iTopExtensionsMapFake::createFromArray($aExtensionsOnDiskOrDb)); - [$sAddedList, $sRemovedList] = $this->oStep->GetAddedAndRemovedExtensions($aSelectedExtensions); - $this->assertEquals($sExpectedAddedList, $sAddedList); - $this->assertEquals($sExpectedRemovedList, $sRemovedList); + [$aAddedList, $aRemovedList, $aNotUninstallableList] = $this->oStep->GetAddedAndRemovedExtensions($aSelectedExtensions); + $this->assertEquals($aExpectedAddedList, $aAddedList); + $this->assertEquals($aExpectedRemovedList, $aRemovedList); } }