From e355415164710e8e2614cca3267aa945f34c3f7f Mon Sep 17 00:00:00 2001 From: Johannes Meyer Date: Mon, 17 Mar 2014 16:08:12 +0100 Subject: [PATCH] Fix that queryfilters are being ignored by the parser --- library/Icinga/Data/Db/TreeToSqlParser.php | 3 +-- library/Icinga/Filter/Query/Tree.php | 10 +++++----- library/Icinga/Web/Widget/FilterBadgeRenderer.php | 2 +- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/library/Icinga/Data/Db/TreeToSqlParser.php b/library/Icinga/Data/Db/TreeToSqlParser.php index facdba9d4..20638bf74 100644 --- a/library/Icinga/Data/Db/TreeToSqlParser.php +++ b/library/Icinga/Data/Db/TreeToSqlParser.php @@ -193,8 +193,7 @@ class TreeToSqlParser if ($tree->root == null) { return; } - $tree->root = $tree->normalizeTree($tree->root); - $sql = $this->nodeToSqlQuery($tree->root); + $sql = $this->nodeToSqlQuery($tree->normalizeTree($tree->root)); if ($this->filtersAggregate()) { $baseQuery->having($sql); diff --git a/library/Icinga/Filter/Query/Tree.php b/library/Icinga/Filter/Query/Tree.php index ced419679..eb2736f6f 100644 --- a/library/Icinga/Filter/Query/Tree.php +++ b/library/Icinga/Filter/Query/Tree.php @@ -232,12 +232,12 @@ class Tree $node->left = $this->removeInvalidFilter($node->left, $filter); $node->right = $this->removeInvalidFilter($node->right, $filter); - if ($node->left && $node->right) { + if ($node->left || $node->right) { + if (!$node->left) { + $node->left = $node->right; + $node->right = null; + } return $node; - } elseif ($node->left) { - return $node->left; - } elseif ($node->right) { - return $node->right; } return null; diff --git a/library/Icinga/Web/Widget/FilterBadgeRenderer.php b/library/Icinga/Web/Widget/FilterBadgeRenderer.php index 2a59fa689..8bf0bced9 100644 --- a/library/Icinga/Web/Widget/FilterBadgeRenderer.php +++ b/library/Icinga/Web/Widget/FilterBadgeRenderer.php @@ -182,6 +182,6 @@ EOT; return ''; } $this->buildBaseUrl(); - return $this->nodeToBadge($this->tree->root); + return $this->nodeToBadge(Tree::normalizeTree($this->tree->root)); } }