From 199ea6f965b958c7538a48cb0d1472cb2c7582f9 Mon Sep 17 00:00:00 2001 From: raviks789 <33730024+raviks789@users.noreply.github.com> Date: Thu, 28 Apr 2022 14:52:06 +0200 Subject: [PATCH] Prevent use of empty filters in FilterChain::toQueryString() Due to instantiation of filters using Filter::matchAll() in ObjectList::getFilter(), we get an empty FilterAnd instance when $this->filter is null. This prepends unnecessary separator '&' to the query string during conversion of filter to querystring. This breaks the state badge links for host and service lists. --- library/Icinga/Data/Filter/FilterChain.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/library/Icinga/Data/Filter/FilterChain.php b/library/Icinga/Data/Filter/FilterChain.php index 1c5cdf956..0f1e07198 100644 --- a/library/Icinga/Data/Filter/FilterChain.php +++ b/library/Icinga/Data/Filter/FilterChain.php @@ -171,7 +171,9 @@ abstract class FilterChain extends Filter return ''; } foreach ($this->filters() as $filter) { - $parts[] = $filter->toQueryString(); + if (! $filter->isEmpty()) { + $parts[] = $filter->toQueryString(); + } } // TODO: getLevel??