/** * Tests if entity satisfies at least one of given rules. * * @param $entity * @param $rules * @return bool */ public static function entityMatchesSomeRule($entity, $rules) { return ArrayUtils::any($rules, function ($rule) use($entity) { // check all parts of rule return ArrayUtils::all($rule, function ($values, $field) use($entity) { if (!isset($entity[$field])) { return false; } $value = $values[0]; // Use single value per field $valueTokens = QueryLanguageUtils::tokenizeValue($value); $isWildcard = QueryLanguageUtils::tokensContainWildcard($valueTokens); if ($isWildcard && preg_match(QueryLanguageUtils::tokensToRegex($valueTokens), $entity[$field])) { return true; } elseif (strval($entity[$field]) === $value) { return true; } return false; }); }); }