Skip to content

Commit

Permalink
[BUGFIX] Tiny refactoring of metadata handling with subentries (#1478)
Browse files Browse the repository at this point in the history
Co-authored-by: Sebastian Meyer <[email protected]>
  • Loading branch information
markusweigelt and sebastian-meyer authored Feb 10, 2025
1 parent 4629cf2 commit da70a47
Showing 1 changed file with 32 additions and 27 deletions.
59 changes: 32 additions & 27 deletions Classes/Controller/MetadataController.php
Original file line number Diff line number Diff line change
Expand Up @@ -163,34 +163,14 @@ protected function printMetadata(array $metadata): void
]
);

foreach ($metadata as $i => $section) {

foreach ($section as $name => $value) {
// NOTE: Labels are to be escaped in Fluid template

$metadata[$i][$name] = is_array($value)
? $value
: explode($this->settings['separator'], $value);

// PHPStan error
// I don't understand what this code does, so I take it away until author can fix it
/*if ($metadata[$i][$name][0] === 'Array') {
$metadata[$i][$name] = [];
foreach ($value as $subKey => $subValue) {
$metadata[$i][$name][$subKey] = $subValue;
}
}*/

$this->parseMetadata($i, $name, $value, $metadata);

if (is_array($metadata[$i][$name])) {
$metadata[$i][$name] = array_values(array_filter($metadata[$i][$name], function ($metadataValue) {
return !empty($metadataValue);
}));
}
foreach ($metadata as $sectionKey => $sectionValue) {
foreach ($sectionValue as $metadataName => $metadataValue) {
$this->replaceMetadataOfSection($sectionKey, $metadataName, $metadataValue, $metadata);
}
}

$metadata = $this->removeEmptyEntries($metadata);

$this->view->assign('buildUrl', $this->buildUrlFromMetadata($metadata));
$this->view->assign('externalUrl', $this->buildExternalUrlFromMetadata($metadata));
$this->view->assign('documentMetadataSections', $metadata);
Expand Down Expand Up @@ -352,7 +332,7 @@ private function buildExternalUrlFromMetadata(array $metadata): array
}

/**
* Parses metadata.
* Replace metadata of section.
*
* @access private
*
Expand All @@ -363,8 +343,13 @@ private function buildExternalUrlFromMetadata(array $metadata): array
*
* @return void
*/
private function parseMetadata(int $i, string $name, $value, array &$metadata) : void
private function replaceMetadataOfSection(int $i, string $name, $value, array &$metadata): void
{
// if the value has subentries, do not replace the values
if (is_array($value) && !empty($value) && is_array($value[0])) {
return;
}

if ($name == 'title') {
// Get title of parent document if needed.
$this->parseParentTitle($i, $value, $metadata);
Expand Down Expand Up @@ -530,4 +515,24 @@ private function getMetadataForIds(array $id, array $metadata): array
}
return $metadata;
}

/**
* Recursively remove empty entries.
*
* @param $metadata
* @return array
*/
private function removeEmptyEntries($metadata): array
{
foreach ($metadata as $key => $value) {
if (is_array($value)) {
$metadata[$key] = $this->removeEmptyEntries($value);
}

if (empty($metadata[$key])) {
unset($metadata[$key]);
}
}
return $metadata;
}
}

0 comments on commit da70a47

Please sign in to comment.