protected function validateParamFilters(VObject\Property $parent, array $filters)
    {
        foreach ($filters as $filter) {
            $isDefined = isset($parent[$filter['name']]);

            if ($filter['is-not-defined']) {
                if ($isDefined) {
                    return false;
                } else {
                    continue;
                }
            }
            if (!$isDefined) {
                return false;
            }

            if (!$filter['text-match']) {
                continue;
            }

            // If there are sub-filters, we need to find at least one parameter
            // for which the subfilters hold true.
            foreach ($parent[$filter['name']]->getParts() as $paramPart) {
                if ($this->validateTextMatch($paramPart, $filter['text-match'])) {
                    // We had a match, so this param-filter succeeds
                    continue 2;
                }
            }

            // If we got here it means there was a text-match filter and there
            // were no matches. This means the filter needs to return false.
            return false;
        }

        // If we got here it means we got through all param-filters alive so the
        // filters were all true.
        return true;
    }
protected function validateParamFilters(VObject\Property $parent, array $filters)
    {
        foreach ($filters as $filter) {
            $isDefined = isset($parent[$filter['name']]);

            if ($filter['is-not-defined']) {
                if ($isDefined) {
                    return false;
                } else {
                    continue;
                }
            }
            if (!$isDefined) {
                return false;
            }

            if (!$filter['text-match']) {
                continue;
            }

            // If there are sub-filters, we need to find at least one parameter
            // for which the subfilters hold true.
            foreach ($parent[$filter['name']]->getParts() as $paramPart) {
                if ($this->validateTextMatch($paramPart, $filter['text-match'])) {
                    // We had a match, so this param-filter succeeds
                    continue 2;
                }
            }

            // If we got here it means there was a text-match filter and there
            // were no matches. This means the filter needs to return false.
            return false;
        }

        // If we got here it means we got through all param-filters alive so the
        // filters were all true.
        return true;
    }
protected function validateParamFilters ( VObject \ Property $ parent , array $ filters ) { foreach ( $ filters as $ filter ) { $ isDefined = isset ( $ parent [ $ filter [ 'name' ] ] ) ; if ( $ filter [ 'is-not-defined' ] ) { if ( $ isDefined ) { return false ; } else { continue ; } } if ( ! $ isDefined ) { return false ; } if ( ! $ filter [ 'text-match' ] ) { continue ; } // If there are sub-filters, we need to find at least one parameter // for which the subfilters hold true. foreach ( $ parent [ $ filter [ 'name' ] ] -> getParts ( ) as $ paramPart ) { if ( $ this -> validateTextMatch ( $ paramPart , $ filter [ 'text-match' ] ) ) { // We had a match, so this param-filter succeeds continue 2 ; } } // If we got here it means there was a text-match filter and there // were no matches. This means the filter needs to return false. return false ; } // If we got here it means we got through all param-filters alive so the // filters were all true. return true ; }
This method checks the validity of param-filters.

A list of param-filters needs to be specified. Also the parent of the
parameter we're checking should be specified, not the parameter to check
itself.

@param VObject\Property $parent
@param array            $filters

@return bool
This method checks the validity of param - filters .