N°9564 - fix extension mgt flow from 1st to 2nd screen

This commit is contained in:
odain
2026-05-21 13:54:16 +02:00
parent a5b5d22e2f
commit 3aa59ae0b7
2 changed files with 9 additions and 37 deletions

View File

@@ -24,7 +24,6 @@ use ContextTag;
use CoreException; use CoreException;
use Dict; use Dict;
use Exception; use Exception;
use IssueLog;
use MetaModel; use MetaModel;
use MissingDependencyException; use MissingDependencyException;
use SetupUtils; use SetupUtils;
@@ -32,7 +31,6 @@ use utils;
class DataFeatureRemovalController extends Controller class DataFeatureRemovalController extends Controller
{ {
private array $aRemovedExtensionsForCheck = [];
private ?array $aExtensionsToCheck = null; private ?array $aExtensionsToCheck = null;
private bool $bForcedUninstallation = false; private bool $bForcedUninstallation = false;
private array $aCountClassesToCleanup = []; private array $aCountClassesToCleanup = [];
@@ -80,35 +78,6 @@ class DataFeatureRemovalController extends Controller
$this->aAnalysisDataTable = $this->GetTableData('Analysis', $aColumns, $aData); $this->aAnalysisDataTable = $this->GetTableData('Analysis', $aColumns, $aData);
} }
/*
public function OperationAnalyze(): void
{
$iCount = $this->ReadExtensionsDiff();
$this->m_sOperation = 'Main';
try {
if ($iCount > 0) {
$this->Analyze();
}
$this->OperationMain();
} catch (Exception $e) {
IssueLog::Error(__METHOD__, null, ['stack' => $e->getTraceAsString(), 'exception' => $e->getMessage()]);
$this->OperationMain($e->getMessage());
}
}
private function Analyze(): void
{
//TODO : Run data audit with added extension too, not just removed ones
$this->Compile($this->aExtensionsToCheck['to_be_removed']);
$sSourceEnv = MetaModel::GetEnvironment();
$oSetupAudit = new SetupAudit($sSourceEnv);
$aGetRemovedClasses = $oSetupAudit->RunDataAudit();
IssueLog::Debug(__METHOD__, null, ['aGetRemovedClasses' => $aGetRemovedClasses]);
$this->aCountClassesToCleanup = $aGetRemovedClasses;
}
*/
public function OperationAnalysisResult(): void public function OperationAnalysisResult(): void
{ {
$aParams = []; $aParams = [];
@@ -142,7 +111,10 @@ class DataFeatureRemovalController extends Controller
$aRemovedExtensions = json_decode($aHiddenInputs['removed_extensions'], true); $aRemovedExtensions = json_decode($aHiddenInputs['removed_extensions'], true);
if (count($aRemovedExtensions) == 0) { if (count($aRemovedExtensions) == 0) {
$this->ReadExtensionsDiff(); $this->ReadExtensionsDiff();
$aRemovedExtensions = $this->aRemovedExtensionsForCheck; $aAddedExtensions = $this->aExtensionsToCheck['to_be_installed'];
$aHiddenInputs['added_extensions'] = utils::HtmlEntities(json_encode($aAddedExtensions));
$aRemovedExtensions = $this->aExtensionsToCheck['to_be_removed'];
$aHiddenInputs['removed_extensions'] = utils::HtmlEntities(json_encode($aRemovedExtensions));
} }
$aRemoveExtensionCodes = array_keys($aRemovedExtensions); $aRemoveExtensionCodes = array_keys($aRemovedExtensions);
@@ -150,7 +122,7 @@ class DataFeatureRemovalController extends Controller
$aParams['aAddedExtensions'] = $aAddedExtensions; $aParams['aAddedExtensions'] = $aAddedExtensions;
$aParams['aRemovedExtensions'] = $aRemovedExtensions; $aParams['aRemovedExtensions'] = $aRemovedExtensions;
IssueLog::Debug(__METHOD__.' Extensions given in parameter', null, [ DataFeatureRemovalLog::Debug(__METHOD__.' Extensions given in parameter', null, [
'added_extensions' => $aAddedExtensions, 'added_extensions' => $aAddedExtensions,
'removed_extensions' => $aRemovedExtensions]); 'removed_extensions' => $aRemovedExtensions]);
@@ -174,7 +146,7 @@ class DataFeatureRemovalController extends Controller
$sSourceEnv = MetaModel::GetEnvironment(); $sSourceEnv = MetaModel::GetEnvironment();
$oSetupAudit = new SetupAudit($sSourceEnv); $oSetupAudit = new SetupAudit($sSourceEnv);
$aGetRemovedClasses = array_keys($oSetupAudit->RunDataAudit()); $aGetRemovedClasses = array_keys($oSetupAudit->RunDataAudit());
IssueLog::Debug(__METHOD__, null, ['aGetRemovedClasses' => $aGetRemovedClasses]); DataFeatureRemovalLog::Debug(__METHOD__, null, ['aGetRemovedClasses' => $aGetRemovedClasses]);
$aParams['aClasses'] = $aGetRemovedClasses; $aParams['aClasses'] = $aGetRemovedClasses;
@@ -377,7 +349,7 @@ class DataFeatureRemovalController extends Controller
} }
$sTransactionId = utils::ReadPostedParam('transaction_id', null, utils::ENUM_SANITIZATION_FILTER_TRANSACTION_ID); $sTransactionId = utils::ReadPostedParam('transaction_id', null, utils::ENUM_SANITIZATION_FILTER_TRANSACTION_ID);
IssueLog::Debug(__FUNCTION__.": Transaction [$sTransactionId]"); DataFeatureRemovalLog::Debug(__FUNCTION__.": Transaction [$sTransactionId]");
if (empty($sTransactionId) || !utils::IsTransactionValid($sTransactionId, false)) { if (empty($sTransactionId) || !utils::IsTransactionValid($sTransactionId, false)) {
throw new DataFeatureRemovalException(Dict::S("iTopUpdate:Error:InvalidToken")); throw new DataFeatureRemovalException(Dict::S("iTopUpdate:Error:InvalidToken"));
} }
@@ -406,13 +378,13 @@ class DataFeatureRemovalController extends Controller
if ($aExtensionData['installed'] && $aSelectedExtensionsFromUI[$sCode] !== 'on') { if ($aExtensionData['installed'] && $aSelectedExtensionsFromUI[$sCode] !== 'on') {
$aExtensionData['extra_flags']['selected'] = false; $aExtensionData['extra_flags']['selected'] = false;
$this->aExtensionsToCheck['to_be_removed'][] = $sCode; $this->aExtensionsToCheck['to_be_removed'][$sCode] = $sCode;
if (!$aExtensionData['extra_flags']['uninstallable'] || $aExtensionData['extra_flags']['remote']) { if (!$aExtensionData['extra_flags']['uninstallable'] || $aExtensionData['extra_flags']['remote']) {
$this->bForcedUninstallation = true; $this->bForcedUninstallation = true;
} }
} elseif (!$aExtensionData['installed'] && $aSelectedExtensionsFromUI[$sCode] === 'on') { } elseif (!$aExtensionData['installed'] && $aSelectedExtensionsFromUI[$sCode] === 'on') {
$aExtensionData['extra_flags']['selected'] = true; $aExtensionData['extra_flags']['selected'] = true;
$this->aExtensionsToCheck['to_be_installed'][] = $sCode; $this->aExtensionsToCheck['to_be_installed'][$sCode] = $sCode;
} }
} }
return count($this->aExtensionsToCheck['to_be_installed']) + count($this->aExtensionsToCheck['to_be_removed']); return count($this->aExtensionsToCheck['to_be_installed']) + count($this->aExtensionsToCheck['to_be_removed']);