remove history

This commit is contained in:
Eric Espie
2026-03-09 17:03:01 +01:00
parent 74e430bdba
commit 9fb06bc00a

View File

@@ -4,7 +4,9 @@ namespace Combodo\iTop\DataFeatureRemoval\Service;
use Combodo\iTop\DataFeatureRemoval\Entity\DeletionPlanSummaryEntity; use Combodo\iTop\DataFeatureRemoval\Entity\DeletionPlanSummaryEntity;
use Combodo\iTop\DataFeatureRemoval\Helper\DataFeatureRemovalException; use Combodo\iTop\DataFeatureRemoval\Helper\DataFeatureRemovalException;
use DBObjectSearch;
use DeletionPlan; use DeletionPlan;
use MetaModel;
class DeletionPlanService class DeletionPlanService
{ {
@@ -80,7 +82,7 @@ class DeletionPlanService
*/ */
private function GetAllObjects(string $sClass): array private function GetAllObjects(string $sClass): array
{ {
$oFilter = new \DBObjectSearch($sClass); $oFilter = new DBObjectSearch($sClass);
$oFilter->AllowAllData(); $oFilter->AllowAllData();
$oSet = new \DBObjectSet($oFilter); $oSet = new \DBObjectSet($oFilter);
return $oSet->ToArray(); return $oSet->ToArray();
@@ -149,11 +151,17 @@ class DeletionPlanService
$oDeletionPlanSummaryEntity = $aSummary[$sClass] ?? new DeletionPlanSummaryEntity($sClass); $oDeletionPlanSummaryEntity = $aSummary[$sClass] ?? new DeletionPlanSummaryEntity($sClass);
foreach ($aDeletes as $sId => $aDelete) { foreach ($aDeletes as $sId => $aDelete) {
// Delete any existing change tracking about the current object
$oFilter = new DBObjectSearch('CMDBChangeOp');
$oFilter->AddCondition('objclass', $sClass, '=');
$oFilter->AddCondition('objkey', $sId, '=');
MetaModel::PurgeData($oFilter);
// Delete the entry
foreach (\MetaModel::EnumParentClasses($sClass, ENUM_PARENT_CLASSES_ALL, false) as $sParentClass) { foreach (\MetaModel::EnumParentClasses($sClass, ENUM_PARENT_CLASSES_ALL, false) as $sParentClass) {
$oFilter = \DBObjectSearch::FromOQL_AllData("SELECT $sParentClass WHERE id=:id"); $oFilter = \DBObjectSearch::FromOQL_AllData("SELECT $sParentClass WHERE id=:id");
$sQuery = $oFilter->MakeDeleteQuery(['id' => $sId]); $sQuery = $oFilter->MakeDeleteQuery(['id' => $sId]);
\CMDBSource::DeleteFrom($sQuery); \CMDBSource::DeleteFrom($sQuery);
\IssueLog::Info($sQuery);
} }
$oDeletionPlanSummaryEntity->iDeleteCount++; $oDeletionPlanSummaryEntity->iDeleteCount++;