]>
Commit | Line | Data |
---|---|---|
fdd725f5 NL |
1 | <?php |
2 | ||
3 | namespace Wallabag\CoreBundle\Operator\Doctrine; | |
4 | ||
5 | /** | |
6 | * Provides a "notmatches" operator used for tagging rules. | |
7 | * | |
8 | * It asserts that a given pattern is not contained in a subject, in a | |
9 | * case-insensitive way. | |
10 | * | |
11 | * This operator will be used to compile tagging rules in DQL, usable | |
12 | * by Doctrine ORM. | |
a375fed7 | 13 | * It's registered in RulerZ using a service (wallabag.operator.doctrine.notmatches); |
fdd725f5 NL |
14 | */ |
15 | class NotMatches | |
16 | { | |
17 | public function __invoke($subject, $pattern) | |
18 | { | |
3ef055ce | 19 | if ("'" === $pattern[0]) { |
fdd725f5 NL |
20 | $pattern = sprintf("'%%%s%%'", substr($pattern, 1, -1)); |
21 | } | |
22 | ||
23 | return sprintf('UPPER(%s) NOT LIKE UPPER(%s)', $subject, $pattern); | |
24 | } | |
25 | } |