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;
});
});
}