From ce812c01bf785be933122e4b597ebe8b95f8ff98 Mon Sep 17 00:00:00 2001 From: raviks789 <33730024+raviks789@users.noreply.github.com> Date: Thu, 28 Jul 2022 11:34:12 +0200 Subject: [PATCH] Fix deletion of all occurences of a node In case the node is not a BP node, we simply have to remove all occurences of the node. --- .../Modification/NodeRemoveAction.php | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/library/Businessprocess/Modification/NodeRemoveAction.php b/library/Businessprocess/Modification/NodeRemoveAction.php index 3769764..3090ee6 100644 --- a/library/Businessprocess/Modification/NodeRemoveAction.php +++ b/library/Businessprocess/Modification/NodeRemoveAction.php @@ -65,15 +65,19 @@ class NodeRemoveAction extends NodeAction $name = $this->getNodeName(); $parentName = $this->getParentName(); if ($parentName === null) { - $oldDisplay = $config->getBpNode($name)->getDisplay(); - $config->removeNode($name); - if ($config->getMetadata()->isManuallyOrdered()) { - foreach ($config->getRootNodes() as $_ => $node) { - $nodeDisplay = $node->getDisplay(); - if ($nodeDisplay > $oldDisplay) { - $node->setDisplay($node->getDisplay() - 1); - } elseif ($nodeDisplay === $oldDisplay) { - break; // Stop immediately to not make things worse ;) + if (! $config->hasBpNode($name)) { + $config->removeNode($name); + } else { + $oldDisplay = $config->getBpNode($name)->getDisplay(); + $config->removeNode($name); + if ($config->getMetadata()->isManuallyOrdered()) { + foreach ($config->getRootNodes() as $_ => $node) { + $nodeDisplay = $node->getDisplay(); + if ($nodeDisplay > $oldDisplay) { + $node->setDisplay($node->getDisplay() - 1); + } elseif ($nodeDisplay === $oldDisplay) { + break; // Stop immediately to not make things worse ;) + } } } }