summaryrefslogtreecommitdiffstats
path: root/library/Director/Filter/FilterEnrichment.php
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-14 13:17:47 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-14 13:17:47 +0000
commit5419d4428c86c488a43124f85e5407d7cbae6541 (patch)
tree772c4221a20fd7d1b3e7e67c6e21755a50e80fd7 /library/Director/Filter/FilterEnrichment.php
parentAdding upstream version 1.10.2. (diff)
downloadicingaweb2-module-director-upstream.tar.xz
icingaweb2-module-director-upstream.zip
Adding upstream version 1.11.1.upstream/1.11.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'library/Director/Filter/FilterEnrichment.php')
-rw-r--r--library/Director/Filter/FilterEnrichment.php29
1 files changed, 29 insertions, 0 deletions
diff --git a/library/Director/Filter/FilterEnrichment.php b/library/Director/Filter/FilterEnrichment.php
new file mode 100644
index 0000000..c726f76
--- /dev/null
+++ b/library/Director/Filter/FilterEnrichment.php
@@ -0,0 +1,29 @@
+<?php
+
+namespace Icinga\Module\Director\Filter;
+
+use Icinga\Data\Filter\Filter;
+use Icinga\Data\Filter\FilterChain;
+use Icinga\Data\Filter\FilterExpression;
+
+class FilterEnrichment
+{
+ public static function enrichFilter(Filter $filter): Filter
+ {
+ if ($filter instanceof FilterExpression) {
+ if (CidrExpression::isCidrFormat($filter->getExpression())) {
+ return CidrExpression::fromExpression($filter);
+ }
+ } elseif ($filter instanceof FilterChain) {
+ foreach ($filter->filters() as $subFilter) {
+ if ($subFilter instanceof FilterExpression
+ && CidrExpression::isCidrFormat($subFilter->getExpression())
+ ) {
+ $filter->replaceById($subFilter->getId(), CidrExpression::fromExpression($subFilter));
+ }
+ }
+ }
+
+ return $filter;
+ }
+}