From cb0ed54147c29a09bffca79e814971d83967a1e6 Mon Sep 17 00:00:00 2001 From: Jordan Dukart Date: Tue, 5 Apr 2022 13:21:12 -0300 Subject: [PATCH] Handle a looping scenario (a > b > c > a). --- .../src/IslandoraBreadcrumbBuilder.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/modules/islandora_breadcrumbs/src/IslandoraBreadcrumbBuilder.php b/modules/islandora_breadcrumbs/src/IslandoraBreadcrumbBuilder.php index eed01e3d..620f2289 100644 --- a/modules/islandora_breadcrumbs/src/IslandoraBreadcrumbBuilder.php +++ b/modules/islandora_breadcrumbs/src/IslandoraBreadcrumbBuilder.php @@ -79,6 +79,12 @@ class IslandoraBreadcrumbBuilder implements BreadcrumbBuilderInterface { $breadcrumb->addLink(Link::createFromRoute($this->t('Home'), '')); $chain = array_reverse($this->utils->findAncestors($node, [$this->config->get('referenceField')], $this->config->get('maxDepth'))); + + // XXX: Handle a looping breadcrumb scenario by filtering the present + // node out and then optionally re-adding it after if set to do so. + $chain = array_filter($chain, function ($link) use ($nid) { + return $link !== $nid; + }); if ($this->config->get('includeSelf')) { array_push($chain, $node); }