From 8c593bb9e83f1c335837deba7f7778c3bbd1c325 Mon Sep 17 00:00:00 2001 From: Cyril Vazquez <cyril.vazquez@maarch.org> Date: Fri, 4 Oct 2024 13:41:25 +0200 Subject: [PATCH] Add configuration of depth and length --- .../maarchRM/Presenter/seda2/message.php | 29 ++++++++++--------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/presentation/maarchRM/Presenter/seda2/message.php b/presentation/maarchRM/Presenter/seda2/message.php index 5603f9f..79b8027 100644 --- a/presentation/maarchRM/Presenter/seda2/message.php +++ b/presentation/maarchRM/Presenter/seda2/message.php @@ -115,10 +115,12 @@ class message } } - $maxDepth = 3; - $maxCount = 10; + $conf = \laabs::Configuration('presentation.maarchRM'); + + $maxDepth = isset($conf['seda2.displayMaxDepth'])? $conf['seda2.displayMaxDepth'] :10; + $maxCount = isset($conf['seda2.displayMaxLength'])? $conf['seda2.displayMaxLength'] :1000; - $this->simplifyTree($message->object->dataObjectPackage->descriptiveMetadata); + $this->simplifyTree($message->object->dataObjectPackage->descriptiveMetadata, 1, $maxDepth, $maxCount); } } @@ -133,31 +135,32 @@ class message return $this->view->saveHtml(); } - protected function simplifyTree($archiveUnitContainer, $depth=1) + protected function simplifyTree($archiveUnitContainer, $depth=1, $maxDepth, $maxCount) { // No child node if (!is_array($archiveUnitContainer->archiveUnit)) { return; } - // Keep only 10 child nodes $childNodeCount = count($archiveUnitContainer->archiveUnit); - if ($childNodeCount > 10) { - $archiveUnitContainer->archiveUnit = array_slice($archiveUnitContainer->archiveUnit, 0, 10); - $archiveUnitContainer->siblingArchiveUnits = $childNodeCount - 10; - } - - // Keep only 4 levels - if ($depth > 3) { + + // Keep only allowed depth levels + if ($depth > $maxDepth) { $archiveUnitContainer->archiveUnit = null; $archiveUnitContainer->otherArchiveUnits = $childNodeCount; return; } + + // Keep only allowed child nodes length + if ($childNodeCount > $maxCount) { + $archiveUnitContainer->archiveUnit = array_slice($archiveUnitContainer->archiveUnit, 0, $maxCount); + $archiveUnitContainer->siblingArchiveUnits = $childNodeCount - $maxCount; + } // recursively apply procedure $depth++; foreach ($archiveUnitContainer->archiveUnit as $key => $archiveUnit) { - $this->simplifyTree($archiveUnit, $depth); + $this->simplifyTree($archiveUnit, $depth, $maxDepth, $maxCount); } } } -- GitLab