VersionPress\Utils\QueryLanguageUtils::createRulesFromQueries PHP Méthode

createRulesFromQueries() public static méthode

Example of transformation of one query (method works with list): query = some_field: value other_field: other_value array = ['some_field' => ['value'], 'other_field' => ['other_value']]
public static createRulesFromQueries ( $queries, $allowEmpty = false ) : array
$queries
$allowEmpty boolean Allow empty values
Résultat array
    public static function createRulesFromQueries($queries, $allowEmpty = false)
    {
        $rules = [];
        foreach ($queries as $query) {
            preg_match_all(self::$queryRegex, $query, $matches, PREG_SET_ORDER);
            $isValidRule = count($matches) > 0;
            if (!$isValidRule) {
                continue;
            }
            $ruleParts = [];
            foreach ($matches as $match) {
                $key = empty($match[2]) ? 'text' : strtolower($match[2]);
                /* value can be in 3rd, 4th or 5th index
                 *
                 * 3rd index => value is in single quotes
                 * 4th index => value is in double quotes
                 * 5th index => value is without quotes
                 */
                $value = strtolower(isset($match[5]) ? $match[5] : (isset($match[4]) ? $match[4] : (isset($match[3]) ? $match[3] : '')));
                if ($value !== '' || $allowEmpty) {
                    if (!isset($ruleParts[$key])) {
                        $ruleParts[$key] = [];
                    }
                    $ruleParts[$key][] = $value;
                }
            }
            $rules[] = $ruleParts;
        }
        return $rules;
    }

Usage Example

 /**
  * @test
  * @dataProvider queryAndRulesProvider
  */
 public function queryLanguageUtilsCreatesCorrectRules($query, $expectedRules)
 {
     $rules = QueryLanguageUtils::createRulesFromQueries($query);
     // Perform case insensitive match
     $this->assertEquals($expectedRules, $rules, '', 0, 10, false, true);
 }
All Usage Examples Of VersionPress\Utils\QueryLanguageUtils::createRulesFromQueries