diff options
Diffstat (limited to 'library/Icinga/Data/Filter/FilterAnd.php')
-rw-r--r-- | library/Icinga/Data/Filter/FilterAnd.php | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/library/Icinga/Data/Filter/FilterAnd.php b/library/Icinga/Data/Filter/FilterAnd.php new file mode 100644 index 0000000..96b68cc --- /dev/null +++ b/library/Icinga/Data/Filter/FilterAnd.php @@ -0,0 +1,42 @@ +<?php +/* Icinga Web 2 | (c) 2014 Icinga Development Team | GPLv2+ */ + +namespace Icinga\Data\Filter; + +/** + * Filter list AND + * + * Binary AND, all contained filters must succeed + */ +class FilterAnd extends FilterChain +{ + protected $operatorName = 'AND'; + + protected $operatorSymbol = '&'; + + /** + * Whether the given row object matches this filter + * + * @object $row + * @return boolean + */ + public function matches($row) + { + foreach ($this->filters as $filter) { + if (! $filter->matches($row)) { + return false; + } + } + return true; + } + + public function andFilter(Filter $filter) + { + return $this->addFilter($filter); + } + + public function orFilter(Filter $filter) + { + return Filter::matchAny($this, $filter); + } +} |