From 42a47d61399d9996af73b27eb32300cec776bd52 Mon Sep 17 00:00:00 2001 From: raviks789 Date: Mon, 17 Mar 2025 10:14:46 +0100 Subject: [PATCH] CustomVarRenderer: Fix illegal offset error if the value is an array --- .../Icingadb/CustomVarRenderer.php | 19 ++++++++++++++++++- .../Monitoring/CustomVarRenderer.php | 19 ++++++++++++++++++- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/library/Director/ProvidedHook/Icingadb/CustomVarRenderer.php b/library/Director/ProvidedHook/Icingadb/CustomVarRenderer.php index fa609a72..933fb33c 100644 --- a/library/Director/ProvidedHook/Icingadb/CustomVarRenderer.php +++ b/library/Director/ProvidedHook/Icingadb/CustomVarRenderer.php @@ -274,7 +274,24 @@ class CustomVarRenderer extends CustomVarRendererHook return '***'; } - if (isset($this->datalistMaps[$key][$value])) { + if (is_array($value)) { + $renderedValue = []; + foreach ($value as $v) { + if (is_string($v) && isset($this->datalistMaps[$key][$v])) { + $renderedValue[] = new HtmlElement( + 'span', + Attributes::create(['title' => $this->datalistMaps[$key][$v] . " [$v]"]), + Text::create($this->datalistMaps[$key][$v]) + ); + } else { + $renderedValue[] = $v; + } + } + + return $renderedValue; + } + + if (is_string($value) && isset($this->datalistMaps[$key][$value])) { return new HtmlElement( 'span', Attributes::create(['title' => $this->datalistMaps[$key][$value] . " [$value]"]), diff --git a/library/Director/ProvidedHook/Monitoring/CustomVarRenderer.php b/library/Director/ProvidedHook/Monitoring/CustomVarRenderer.php index 8601828b..40d2d006 100644 --- a/library/Director/ProvidedHook/Monitoring/CustomVarRenderer.php +++ b/library/Director/ProvidedHook/Monitoring/CustomVarRenderer.php @@ -275,7 +275,24 @@ class CustomVarRenderer extends CustomVarRendererHook return '***'; } - if (isset($this->datalistMaps[$key][$value])) { + if (is_array($value)) { + $renderedValue = []; + foreach ($value as $v) { + if (is_string($v) && isset($this->datalistMaps[$key][$v])) { + $renderedValue[] = new HtmlElement( + 'span', + Attributes::create(['title' => $this->datalistMaps[$key][$v] . " [$v]"]), + Text::create($this->datalistMaps[$key][$v]) + ); + } else { + $renderedValue[] = $v; + } + } + + return $renderedValue; + } + + if (is_string($value) && isset($this->datalistMaps[$key][$value])) { return new HtmlElement( 'span', Attributes::create(['title' => $this->datalistMaps[$key][$value] . " [$value]"]),