diff --git a/datamodels/2.x/combodo-data-feature-removal/src/Controller/DataFeatureRemovalController.php b/datamodels/2.x/combodo-data-feature-removal/src/Controller/DataFeatureRemovalController.php index e597be60a..c81ca034a 100644 --- a/datamodels/2.x/combodo-data-feature-removal/src/Controller/DataFeatureRemovalController.php +++ b/datamodels/2.x/combodo-data-feature-removal/src/Controller/DataFeatureRemovalController.php @@ -16,6 +16,7 @@ use Combodo\iTop\DataFeatureRemoval\Helper\DataFeatureRemovalException; use Combodo\iTop\DataFeatureRemoval\Helper\DataFeatureRemovalHelper; use Combodo\iTop\DataFeatureRemoval\Model\DataFeatureRemoverAuditRuleService; use Combodo\iTop\DataFeatureRemoval\Model\DataFeatureRemoverExtensionService; +use Combodo\iTop\DataFeatureRemoval\Service\DeletionPlanService; use Combodo\iTop\Setup\FeatureRemoval\DryRemovalRuntimeEnvironment; use Combodo\iTop\Setup\FeatureRemoval\SetupAudit; use Dict; @@ -156,7 +157,7 @@ HTML, return [ 'Type' => 'Table', 'Columns' => [['label' => '']], - 'Data' => [[ Dict::S('DbCleaner:Table:Empty')]], + 'Data' => [[ Dict::S('DataFeatureRemoval:Table:Empty')]], ]; } @@ -199,6 +200,19 @@ HTML, $aClasses = utils::ReadPostedParam('classes', null, utils::ENUM_SANITIZATION_FILTER_CLASS); $aParams ['sClasses']= var_export($aClasses, true); + + $oDeletionPlanSummaryEntities = DeletionPlanService::GetInstance()->GetDeletionPlanSummary($aClasses); + $aColumns = ['Class', 'DeleteCount' , 'UpdateCount', 'Issue']; + $aRows = []; + foreach ($oDeletionPlanSummaryEntities as $oDeletionPlanSummaryEntity){ + $aRows[]= [ + $oDeletionPlanSummaryEntity->sClass, + $oDeletionPlanSummaryEntity->iDeleteCount, + $oDeletionPlanSummaryEntity->iUpdateCount, + $oDeletionPlanSummaryEntity->sIssue + ]; + } + $aParams['aDeletionPlanSummary'] = $this->GetTableData('Extensions', $aColumns, $aRows); $this->DisplayPage($aParams); } diff --git a/datamodels/2.x/combodo-data-feature-removal/src/Entity/DeletionPlanSummaryEntity.php b/datamodels/2.x/combodo-data-feature-removal/src/Entity/DeletionPlanSummaryEntity.php new file mode 100644 index 000000000..76e0a468b --- /dev/null +++ b/datamodels/2.x/combodo-data-feature-removal/src/Entity/DeletionPlanSummaryEntity.php @@ -0,0 +1,25 @@ +sClass = $sClass; + } +} diff --git a/datamodels/2.x/combodo-data-feature-removal/src/Service/DeletionPlanService.php b/datamodels/2.x/combodo-data-feature-removal/src/Service/DeletionPlanService.php new file mode 100644 index 000000000..4e0a6624c --- /dev/null +++ b/datamodels/2.x/combodo-data-feature-removal/src/Service/DeletionPlanService.php @@ -0,0 +1,76 @@ + + */ + public function GetDeletionPlanSummary(array $aClasses): array + { + $aSummary = []; + + $oDeletionPlan = new \DeletionPlan(); + foreach ($aClasses as $sClass) { + $aObjects = $this->GetAllObjects($sClass); + foreach ($aObjects as $oObject) { + $oObject->CheckToDelete($oDeletionPlan); + } + } + + foreach ($oDeletionPlan->ListUpdates() as $sClass => $aUpdates){ + $oDeletionPlanSummaryEntity = new DeletionPlanSummaryEntity($sClass); + $oDeletionPlanSummaryEntity->iUpdateCount = count($aUpdates); + $aSummary[$sClass] = $oDeletionPlanSummaryEntity; + } + + foreach ($oDeletionPlan->ListDeletes() as $sClass => $aDeletes){ + $oDeletionPlanSummaryEntity = $aSummary[$sClass] ?? new DeletionPlanSummaryEntity($sClass); + $oDeletionPlanSummaryEntity->iDeleteCount = count($aDeletes); + + $aDelete = array_shift($aDeletes); + $oDeletionPlanSummaryEntity->iMode = $aDelete['mode']; + $oDeletionPlanSummaryEntity->sIssue = $aDelete['issue']; + + $aSummary[$sClass] = $oDeletionPlanSummaryEntity; + } + + return $aSummary; + } + + /** + * @return \DBObject[] + */ + private function GetAllObjects(string $sClass): array + { + $oFilter = new \DBObjectSearch($sClass); + $oFilter->AllowAllData(); + $oSet = new \DBObjectSet($oFilter); + return $oSet->ToArray(); + } +} diff --git a/datamodels/2.x/combodo-data-feature-removal/templates/DeletionPlan.html.twig b/datamodels/2.x/combodo-data-feature-removal/templates/DeletionPlan.html.twig index ab0f7d6d7..8565fbf93 100644 --- a/datamodels/2.x/combodo-data-feature-removal/templates/DeletionPlan.html.twig +++ b/datamodels/2.x/combodo-data-feature-removal/templates/DeletionPlan.html.twig @@ -1,4 +1,6 @@ {# @copyright Copyright (C) 2010-2026 Combodo SARL #} {# @license http://opensource.org/licenses/AGPL-3.0 #} -{{ sClasses}} \ No newline at end of file +{% UIPanel ForInformation { sTitle:'DataFeatureRemoval:DeletionPlan:Title'|dict_s, sSubTitle: 'DataFeatureRemoval:DeletionPlan:SubTitle'|dict_s } %} + {% UIDataTable ForForm { sRef:'aDeletionPlanSummary', aColumns:aDeletionPlanSummary.Columns, aData:aDeletionPlanSummary.Data} %}{% EndUIDataTable %} +{% EndUIPanel %} \ No newline at end of file diff --git a/datamodels/2.x/combodo-data-feature-removal/templates/Main.html.twig b/datamodels/2.x/combodo-data-feature-removal/templates/Main.html.twig index d63dbfc87..97abd4923 100644 --- a/datamodels/2.x/combodo-data-feature-removal/templates/Main.html.twig +++ b/datamodels/2.x/combodo-data-feature-removal/templates/Main.html.twig @@ -8,7 +8,7 @@ {# DataFeatureRemoval #} -{% UIPanel Neutral { sTitle:'DataFeatureRemoval:Main:Title'|dict_s, sSubTitle: 'DataFeatureRemoval:Main:SubTitle'|dict_s } %} +{% UIPanel ForInformation { sTitle:'DataFeatureRemoval:Main:Title'|dict_s, sSubTitle: 'DataFeatureRemoval:Main:SubTitle'|dict_s } %} {% UIAlert ForInformation { sTitle:'DataFeatureRemoval:Helper:Title'|dict_s } %} {{ 'DataFeatureRemoval:Helper:Desc1'|dict_s }}
diff --git a/datamodels/2.x/combodo-data-feature-removal/vendor/composer/autoload_classmap.php b/datamodels/2.x/combodo-data-feature-removal/vendor/composer/autoload_classmap.php index a3e67ca36..ab40fa4f8 100644 --- a/datamodels/2.x/combodo-data-feature-removal/vendor/composer/autoload_classmap.php +++ b/datamodels/2.x/combodo-data-feature-removal/vendor/composer/autoload_classmap.php @@ -7,11 +7,12 @@ $baseDir = dirname($vendorDir); return array( 'Combodo\\iTop\\DataFeatureRemoval\\Controller\\DataFeatureRemovalController' => $baseDir . '/src/Controller/DataFeatureRemovalController.php', + 'Combodo\\iTop\\DataFeatureRemoval\\Entity\\DeletionPlanSummaryEntity' => $baseDir . '/src/Entity/DeletionPlanSummaryEntity.php', 'Combodo\\iTop\\DataFeatureRemoval\\Helper\\DataFeatureRemovalException' => $baseDir . '/src/Helper/DataFeatureRemovalException.php', 'Combodo\\iTop\\DataFeatureRemoval\\Helper\\DataFeatureRemovalHelper' => $baseDir . '/src/Helper/DataFeatureRemovalHelper.php', 'Combodo\\iTop\\DataFeatureRemoval\\Helper\\DataFeatureRemovalLog' => $baseDir . '/src/Helper/DataFeatureRemovalLog.php', 'Combodo\\iTop\\DataFeatureRemoval\\Model\\DataFeatureRemoverAuditRuleService' => $baseDir . '/src/Model/DataFeatureRemoverAuditRuleService.php', 'Combodo\\iTop\\DataFeatureRemoval\\Model\\DataFeatureRemoverExtensionService' => $baseDir . '/src/Model/DataFeatureRemoverExtensionService.php', - 'Combodo\\iTop\\DataFeatureRemoval\\Service\\SetupAudit' => $baseDir . '/src/Service/SetupAudit.php', + 'Combodo\\iTop\\DataFeatureRemoval\\Service\\DeletionPlanService' => $baseDir . '/src/Service/DeletionPlanService.php', 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php', ); diff --git a/datamodels/2.x/combodo-data-feature-removal/vendor/composer/autoload_static.php b/datamodels/2.x/combodo-data-feature-removal/vendor/composer/autoload_static.php index 046440b0f..8c537693d 100644 --- a/datamodels/2.x/combodo-data-feature-removal/vendor/composer/autoload_static.php +++ b/datamodels/2.x/combodo-data-feature-removal/vendor/composer/autoload_static.php @@ -26,12 +26,13 @@ class ComposerStaticInit4f96a7199e2c0d90e547333758b26464 public static $classMap = array ( 'Combodo\\iTop\\DataFeatureRemoval\\Controller\\DataFeatureRemovalController' => __DIR__ . '/../..' . '/src/Controller/DataFeatureRemovalController.php', + 'Combodo\\iTop\\DataFeatureRemoval\\Entity\\DeletionPlanSummaryEntity' => __DIR__ . '/../..' . '/src/Entity/DeletionPlanSummaryEntity.php', 'Combodo\\iTop\\DataFeatureRemoval\\Helper\\DataFeatureRemovalException' => __DIR__ . '/../..' . '/src/Helper/DataFeatureRemovalException.php', 'Combodo\\iTop\\DataFeatureRemoval\\Helper\\DataFeatureRemovalHelper' => __DIR__ . '/../..' . '/src/Helper/DataFeatureRemovalHelper.php', 'Combodo\\iTop\\DataFeatureRemoval\\Helper\\DataFeatureRemovalLog' => __DIR__ . '/../..' . '/src/Helper/DataFeatureRemovalLog.php', 'Combodo\\iTop\\DataFeatureRemoval\\Model\\DataFeatureRemoverAuditRuleService' => __DIR__ . '/../..' . '/src/Model/DataFeatureRemoverAuditRuleService.php', 'Combodo\\iTop\\DataFeatureRemoval\\Model\\DataFeatureRemoverExtensionService' => __DIR__ . '/../..' . '/src/Model/DataFeatureRemoverExtensionService.php', - 'Combodo\\iTop\\DataFeatureRemoval\\Service\\SetupAudit' => __DIR__ . '/../..' . '/src/Service/SetupAudit.php', + 'Combodo\\iTop\\DataFeatureRemoval\\Service\\DeletionPlanService' => __DIR__ . '/../..' . '/src/Service/DeletionPlanService.php', 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', );