Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion setup/runtimeenv.class.inc.php
Original file line number Diff line number Diff line change
Expand Up @@ -1029,4 +1029,4 @@ public function CheckMetaModel()

return sprintf("Checked %d classes in %.1f ms. No error found.\n", $iCount, $fDuration * 1000.0);
}
} // End of class
} // End of class
59 changes: 59 additions & 0 deletions setup/wizardsteps.class.inc.php
Original file line number Diff line number Diff line change
Expand Up @@ -1368,6 +1368,52 @@ public function GetPossibleSteps()
return ['WizStepModulesChoice', 'WizStepSummary'];
}

public function GetAddedAndRemovedExtensions($aSelectedExtensions)
{
$aExtensionsAdded = [];
$aExtensionsRemoved = [];
$aExtensionsNotUninstallable = [];
foreach ($this->oExtensionsMap->GetAllExtensionsWithPreviouslyInstalled() as $oExtension) {
/* @var \iTopExtension $oExtension */
$bSelected = in_array($oExtension->sCode, $aSelectedExtensions);
if ($oExtension->bInstalled && !$bSelected) {
$aExtensionsRemoved[$oExtension->sCode] = $oExtension->sLabel;
if (!$oExtension->CanBeUninstalled()) {
$aExtensionsNotUninstallable[$oExtension->sCode] = true;
}
} elseif (!$oExtension->bInstalled && $bSelected) {
$aExtensionsAdded[$oExtension->sCode] = $oExtension->sLabel;
}
}

$sExtensionsAdded = '';
if (count($aExtensionsAdded) > 0) {
$sExtensionsAdded = '<ul>';
foreach ($aExtensionsAdded as $sExtensionCode) {
$sExtensionsAdded .= '<li>'.$sExtensionCode.'</li>';
}
$sExtensionsAdded .= '</ul>';
} else {
$sExtensionsAdded = '<ul><li>No extension added.</li></ul>';
}

$sExtensionsRemoved = '';
if (count($aExtensionsRemoved) > 0) {
$sExtensionsRemoved = '<ul>';
foreach ($aExtensionsRemoved as $sCode => $sExtensionCode) {
$sForcedUninstall = '';
if (isset($aExtensionsNotUninstallable[$sCode])) {
$sForcedUninstall = ' (forced uninstallation)';
}
$sExtensionsRemoved .= '<li>'.$sExtensionCode.$sForcedUninstall.'</li>';
}
$sExtensionsRemoved .= '</ul>';
} else {
$sExtensionsRemoved = '<ul><li>No extension removed.</li></ul>';
}
return [$sExtensionsAdded, $sExtensionsRemoved];
}

public function ProcessParams($bMoveForward = true)
{
// Accumulates the selected modules:
Expand Down Expand Up @@ -1397,9 +1443,14 @@ public function ProcessParams($bMoveForward = true)
if (class_exists('CreateITILProfilesInstaller')) {
$this->oWizard->SetParameter('old_addon', true);
}

[$sExtensionsAdded, $sExtensionsRemoved] = $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);
return ['class' => 'WizStepSummary', 'state' => ''];
}

Expand Down Expand Up @@ -2217,6 +2268,14 @@ public function Display(WebPage $oPage)

$oPage->add('<fieldset id="summary"><legend>Installation Parameters</legend>');
$oPage->add('<div id="params_summary">');

$oPage->add('<div class="closed"><span class="title ibo-setup-summary-title">Extensions to be installed</span>');
$oPage->add($this->oWizard->GetParameter('extensions_added'));
$oPage->add('</div>');
$oPage->add('<div class="closed"><span class="title ibo-setup-summary-title">Extensions to be uninstalled</span>');
$oPage->add($this->oWizard->GetParameter('extensions_removed'));
$oPage->add('</div>');

$oPage->add('<div class="closed"><span class="title ibo-setup-summary-title">Database Parameters</span><ul>');
$oPage->add('<li>Server Name: '.$aInstallParams['database']['server'].'</li>');
$oPage->add('<li>DB User Name: '.$aInstallParams['database']['user'].'</li>');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,30 +7,26 @@
*
*
*/
$MySettings = array(


$MySettings = [

// app_root_url: Root URL used for navigating within the application, or from an email to the application (you can put $SERVER_NAME$ as a placeholder for the server's name)
// default: ''
'app_root_url' => 'http://%server(SERVER_NAME)?:localhost%/itop/iTop/',


);
];

/**
*
* Modules specific settings
*
*/
$MyModuleSettings = array(
);
$MyModuleSettings = [
];

/**
*
* Data model modules to be loaded. Names are specified as relative paths
*
*/
$MyModules = array(
);
?>
$MyModules = [
];
Original file line number Diff line number Diff line change
Expand Up @@ -7,30 +7,26 @@
*
*
*/
$MySettings = array(


$MySettings = [

// app_root_url: Root URL used for navigating within the application, or from an email to the application (you can put $SERVER_NAME$ as a placeholder for the server's name)
// default: ''
'app_root_url' => 'http://' . (isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : 'localhost') . '/itop/iTop/',

'app_root_url' => 'http://'.(isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : 'localhost').'/itop/iTop/',

);
];

/**
*
* Modules specific settings
*
*/
$MyModuleSettings = array(
);
$MyModuleSettings = [
];

/**
*
* Data model modules to be loaded. Names are specified as relative paths
*
*/
$MyModules = array(
);
?>
$MyModules = [
];
Original file line number Diff line number Diff line change
Expand Up @@ -257,4 +257,99 @@ public function testComputeChoiceFlags($aExtensions, $bUpgrade, $bDisableUninsta
$this->assertEquals($aExpectedFlags, $aFlags);
}

public function ProviderGetAddedAndRemovedExtensions()
{
return [
'no extensions' => [
'aExtensions' => [],

'aSelected' => [],
'sExpectedAddedList' => '<ul><li>No extension added.</li></ul>',
'sExpectedRemovedList' => '<ul><li>No extension removed.</li></ul>',
],
'no extensions selected' => [
'aExtensions' => [
'itop-ext1' => [
'installed' => false,
],
],
'aSelected' => [],
'sExpectedAddedList' => '<ul><li>No extension added.</li></ul>',
'sExpectedRemovedList' => '<ul><li>No extension removed.</li></ul>',
],
'no extensions removed' => [
'aExtensions' => [
'itop-ext1' => [
'installed' => true,
],
],
'aSelected' => ['itop-ext1'],
'sExpectedAddedList' => '<ul><li>No extension added.</li></ul>',
'sExpectedRemovedList' => '<ul><li>No extension removed.</li></ul>',
],
'One added extension' => [
'aExtensions' => [
'itop-ext1' => [
'installed' => false,
],
],
'aSelected' => ['itop-ext1'],
'sExpectedAddedList' => '<ul><li>itop-ext1</li></ul>',
'sExpectedRemovedList' => '<ul><li>No extension removed.</li></ul>',
],
'One removed extension' => [
'aExtensions' => [
'itop-ext1' => [
'installed' => true,
],
],
'aSelected' => [],
'sExpectedAddedList' => '<ul><li>No extension added.</li></ul>',
'sExpectedRemovedList' => '<ul><li>itop-ext1</li></ul>',
],
'Forced removed extension' => [
'aExtensions' => [
'itop-ext1' => [
'installed' => true,
'uninstallable' => false,
],
],
'aSelected' => [],
'sExpectedAddedList' => '<ul><li>No extension added.</li></ul>',
'sExpectedRemovedList' => '<ul><li>itop-ext1 (forced uninstallation)</li></ul>',
],
'added and removed extensions' => [
'aExtensions' => [
'itop-ext-added1' => [
'installed' => false,
],
'itop-ext-added2' => [
'installed' => false,
],
'itop-ext-removed1' => [
'installed' => true,
],
'itop-ext-removed2' => [
'installed' => true,
],
],
'aSelected' => ['itop-ext-added1', 'itop-ext-added2'],
'sExpectedAddedList' => '<ul><li>itop-ext-added1</li><li>itop-ext-added2</li></ul>',
'sExpectedRemovedList' => '<ul><li>itop-ext-removed1</li><li>itop-ext-removed2</li></ul>',
],

];
}

/**
* @dataProvider ProviderGetAddedAndRemovedExtensions
*/
public function testGetAddedAndRemovedExtensions($aExtensions, $aSelectedExtensions, $sExpectedAddedList, $sExpectedRemovedList)
{
$this->oStep->setExtensionMap(iTopExtensionsMapFake::createFromArray($aExtensions));
[$sAddedList, $sRemovedList] = $this->oStep->GetAddedAndRemovedExtensions($aSelectedExtensions);
$this->assertEquals($sExpectedAddedList, $sAddedList);
$this->assertEquals($sExpectedRemovedList, $sRemovedList);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,11 @@ public function __construct($sFromEnvironment = 'production', $aExtraDirs = [])
public static function createFromArray($aExtensions)
{
$oMap = new static();

foreach ($aExtensions as $sCode => $aExtension) {
$oExtension = new iTopExtension();
$oExtension->sCode = $sCode;
$oExtension->sLabel = $sCode;
$oExtension->bInstalled = $aExtension['installed'];
$oExtension->aModules = $aExtension['modules'] ?? [];
$oExtension->bCanBeUninstalled = $aExtension['uninstallable'] ?? null;
Expand Down