From 44c96f0410d14dd8ec10f1e60a78abc8222da130 Mon Sep 17 00:00:00 2001 From: Thomas Gelf Date: Sat, 15 Nov 2014 22:37:12 +0100 Subject: [PATCH] FilterOr: override operator change for NOT Replacing an OR filter with a NOT operator should return a NOT OR when the OR contains more than one entry --- library/Icinga/Data/Filter/FilterOr.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/library/Icinga/Data/Filter/FilterOr.php b/library/Icinga/Data/Filter/FilterOr.php index 4e4de2d66..8291d32dc 100644 --- a/library/Icinga/Data/Filter/FilterOr.php +++ b/library/Icinga/Data/Filter/FilterOr.php @@ -20,6 +20,14 @@ class FilterOr extends FilterChain return false; } + public function setOperatorName($name) + { + if ($this->count() > 1 && $name === 'NOT') { + return Filter::not(clone $this); + } + return parent::setOperatorName($name); + } + public function andFilter(Filter $filter) { return Filter::matchAll($this, $filter);