public static function createSqlRestrictionFromRule($rule)
{
$restrictionParts = [];
foreach ($rule as $field => $values) {
$value = $values[0];
// Use single value per field
$valueTokens = self::tokenizeValue($value);
$isWildcard = self::tokensContainWildcard($valueTokens);
$searchedValue = self::tokensToSqlString($valueTokens);
$operator = $isWildcard ? 'LIKE' : '=';
$escapedValue = str_replace('"', '\\"', $searchedValue);
if ($isWildcard) {
$escapedValue = str_replace('_', '\\_', $escapedValue);
}
$restrictionPart = sprintf('`%s` %s "%s"', $field, $operator, $escapedValue);
$restrictionParts[] = $restrictionPart;
}
return sprintf('(%s)', join(' AND ', $restrictionParts));
}