From c66518afb98fc5a1e258d331e6f1ec370bcad463 Mon Sep 17 00:00:00 2001 From: mokaddem Date: Wed, 13 Feb 2019 15:39:41 +0100 Subject: [PATCH] chg: [eventFiltering] Added support of feed and server while filtering objects --- app/Model/Event.php | 65 +++++++++++++++++++ .../View/eventFilteringQueryBuilder.ctp | 2 +- 2 files changed, 66 insertions(+), 1 deletion(-) diff --git a/app/Model/Event.php b/app/Model/Event.php index f8ff02791..4be912096 100755 --- a/app/Model/Event.php +++ b/app/Model/Event.php @@ -4534,6 +4534,8 @@ class Event extends AppModel || $filterType['correlation'] != 0 || $filterType['proposal'] != 0 || $filterType['warning'] != 0 + || $filterType['feed'] != 0 + || $filterType['server'] != 0 ) { $include = $this->__checkObjectByFilter($object, $filterType, $correlatedAttributes, $correlatedShadowAttributes); } @@ -4586,6 +4588,9 @@ class Event extends AppModel } } } + if ($flagKeep) { + break; + } } if (!$flagKeep) { $include = false; @@ -4612,6 +4617,9 @@ class Event extends AppModel } } } + if ($flagKeep) { + break; + } } if (!$flagKeep) { $include = false; @@ -4619,6 +4627,63 @@ class Event extends AppModel } } + /* feed */ + if ($filterType['feed'] == 0) { // `both` + // pass, do not consider as `both` is selected + } else if ($filterType['feed'] == 1 || $filterType['feed'] == 2) { + $flagKeep = false; + foreach ($object['Attribute'] as $k => $attribute) { // check if object contains at least 1 warning + if (!empty($attribute['Feed'])) { + $flagKeep = ($filterType['feed'] == 1); // keep if feed are included + } else { + $flagKeep = ($filterType['feed'] == 2); // keep if feed are excluded + } + if (!$flagKeep && !empty($attribute['ShadowAttribute'])) { + foreach ($attribute['ShadowAttribute'] as $shadowAttribute) { + if (!empty($shadowAttribute['Feed'])) { + $flagKeep = ($filterType['feed'] == 1); // do not keep if feed are excluded + break; + } + } + } + if ($flagKeep) { + break; + } + } + if (!$flagKeep) { + $include = false; + return $include; + } + } + + /* server */ + if ($filterType['server'] == 0) { // `both` + // pass, do not consider as `both` is selected + } else if ($filterType['server'] == 1 || $filterType['server'] == 2) { + $flagKeep = false; + foreach ($object['Attribute'] as $k => $attribute) { // check if object contains at least 1 warning + if (!empty($attribute['Server'])) { + $flagKeep = ($filterType['server'] == 1); // keep if server are included + } else { + $flagKeep = ($filterType['server'] == 2); // keep if server are excluded + } + if (!$flagKeep && !empty($attribute['ShadowAttribute'])) { + foreach ($attribute['ShadowAttribute'] as $shadowAttribute) { + if (!empty($shadowAttribute['Server'])) { + $flagKeep = ($filterType['server'] == 1); // do not keep if server are excluded + break; + } + } + } + if ($flagKeep) { + break; + } + } + if (!$flagKeep) { + $include = false; + return $include; + } + } return $include; } diff --git a/app/View/Elements/Events/View/eventFilteringQueryBuilder.ctp b/app/View/Elements/Events/View/eventFilteringQueryBuilder.ctp index 7572d3595..6f0e05a2f 100644 --- a/app/View/Elements/Events/View/eventFilteringQueryBuilder.ctp +++ b/app/View/Elements/Events/View/eventFilteringQueryBuilder.ctp @@ -3,7 +3,7 @@
- +