summaryrefslogtreecommitdiffstats
path: root/library/Businessprocess/Web/Navigation/Renderer/ProcessProblemsBadge.php
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-14 13:15:40 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-14 13:15:40 +0000
commitb7fd908d538ed19fe41f03c0a3f93351d8da64e9 (patch)
tree46e14f318948cd4f5d7e874f83e7dfcc5d42fc64 /library/Businessprocess/Web/Navigation/Renderer/ProcessProblemsBadge.php
parentInitial commit. (diff)
downloadicingaweb2-module-businessprocess-b7fd908d538ed19fe41f03c0a3f93351d8da64e9.tar.xz
icingaweb2-module-businessprocess-b7fd908d538ed19fe41f03c0a3f93351d8da64e9.zip
Adding upstream version 2.5.0.upstream/2.5.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'library/Businessprocess/Web/Navigation/Renderer/ProcessProblemsBadge.php')
-rw-r--r--library/Businessprocess/Web/Navigation/Renderer/ProcessProblemsBadge.php59
1 files changed, 59 insertions, 0 deletions
diff --git a/library/Businessprocess/Web/Navigation/Renderer/ProcessProblemsBadge.php b/library/Businessprocess/Web/Navigation/Renderer/ProcessProblemsBadge.php
new file mode 100644
index 0000000..575dc5e
--- /dev/null
+++ b/library/Businessprocess/Web/Navigation/Renderer/ProcessProblemsBadge.php
@@ -0,0 +1,59 @@
+<?php
+
+namespace Icinga\Module\Businessprocess\Web\Navigation\Renderer;
+
+use Icinga\Module\Businessprocess\Storage\LegacyStorage;
+use Icinga\Web\Navigation\Renderer\BadgeNavigationItemRenderer;
+
+class ProcessProblemsBadge extends BadgeNavigationItemRenderer
+{
+ /**
+ * Cached count
+ *
+ * @var int
+ */
+ protected $count;
+
+ /** @var string */
+ private $bpConfigName;
+
+ public function getCount()
+ {
+ $count = 0;
+ if ($this->count === null) {
+ $storage = LegacyStorage::getInstance();
+ $bp = $storage->loadProcess($this->getBpConfigName());
+ foreach ($bp->getRootNodes() as $rootNode) {
+ if (! $rootNode->isEmpty() &&
+ $rootNode->getState() !== $rootNode::ICINGA_PENDING
+ && $rootNode->hasProblems()) {
+ $count++;
+ }
+ }
+
+ $this->count = $count;
+ $this->setState(self::STATE_CRITICAL);
+ }
+
+ if ($count) {
+ $this->setTitle(sprintf(
+ tp('One unhandled root node critical', '%d unhandled root nodes critical', $count),
+ $count
+ ));
+ }
+
+ return $this->count;
+ }
+
+ public function setBpConfigName($bpConfigName)
+ {
+ $this->bpConfigName = $bpConfigName;
+
+ return $this;
+ }
+
+ public function getBpConfigName()
+ {
+ return $this->bpConfigName;
+ }
+}