VersionPress\Utils\QueryLanguageUtils::entityMatchesSomeRule PHP Method

entityMatchesSomeRule() public static method

Tests if entity satisfies at least one of given rules.
public static entityMatchesSomeRule ( $entity, $rules ) : boolean
$entity
$rules
return boolean
    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;
            });
        });
    }

Usage Example

 /**
  * @test
  * @dataProvider wrongQueryAndEntityProvider
  */
 public function entityDoesntMatchWrongQuery($queries, $entity)
 {
     $rules = QueryLanguageUtils::createRulesFromQueries($queries);
     $this->assertFalse(QueryLanguageUtils::entityMatchesSomeRule($entity, $rules));
 }
All Usage Examples Of VersionPress\Utils\QueryLanguageUtils::entityMatchesSomeRule