From 6f3ffe48e2a31ba386d9e24f12d23b4b4bbc99c4 Mon Sep 17 00:00:00 2001 From: Johannes Meyer Date: Mon, 25 Feb 2019 08:19:39 +0100 Subject: [PATCH] BpConfig: Only list each involved configuration once --- library/Businessprocess/BpConfig.php | 17 +++++++++-------- .../Businessprocess/State/MonitoringState.php | 1 - 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/library/Businessprocess/BpConfig.php b/library/Businessprocess/BpConfig.php index cfe2700..861505a 100644 --- a/library/Businessprocess/BpConfig.php +++ b/library/Businessprocess/BpConfig.php @@ -608,16 +608,17 @@ class BpConfig return $this->importedConfigs[$name]; } - public function listInvolvedConfigs(&$usedConfigs = null) + public function listInvolvedConfigs(&$configs = null) { - $configs = []; - foreach ($this->importedNodes as $node) { - $config = $node->getBpConfig(); - $configs[] = $config; + if ($configs === null) { + $configs[$this->getName()] = $this; + } - if (! isset($usedConfigs[$node->getConfigName()])) { - $usedConfigs[$config->getName()] = true; - $configs = array_merge($configs, $config->listInvolvedConfigs($usedConfigs)); + foreach ($this->importedNodes as $node) { + if (! isset($configs[$node->getConfigName()])) { + $config = $node->getBpConfig(); + $configs[$node->getConfigName()] = $config; + $config->listInvolvedConfigs($configs); } } diff --git a/library/Businessprocess/State/MonitoringState.php b/library/Businessprocess/State/MonitoringState.php index 1e48f65..80d5f41 100644 --- a/library/Businessprocess/State/MonitoringState.php +++ b/library/Businessprocess/State/MonitoringState.php @@ -94,7 +94,6 @@ class MonitoringState Benchmark::measure('Retrieved states for ' . count($serviceStatus) . ' services in ' . $config->getName()); $configs = $config->listInvolvedConfigs(); - $configs[] = $config; foreach ($configs as $cfg) { foreach ($serviceStatus as $row) { $this->handleDbRow($row, $cfg);