Commit | Line | Data |
---|---|---|
f0acec37 CW |
1 | <?php |
2 | /* | |
3 | +--------------------------------------------------------------------+ | |
4 | | Copyright CiviCRM LLC. All rights reserved. | | |
5 | | | | |
6 | | This work is published under the GNU AGPLv3 license with some | | |
7 | | permitted exceptions and without any warranty. For full license | | |
8 | | and copyright information, see https://civicrm.org/licensing | | |
9 | +--------------------------------------------------------------------+ | |
10 | */ | |
11 | ||
12 | namespace Civi\Api4\Query; | |
13 | ||
14 | /** | |
15 | * String sql expression | |
16 | */ | |
17 | class SqlString extends SqlExpression { | |
18 | ||
19 | protected function initialize() { | |
20 | // Remove surrounding quotes | |
21 | $str = substr($this->expr, 1, -1); | |
22 | // Unescape the outer quote character inside the string to prevent double-escaping in render() | |
23 | $quot = substr($this->expr, 0, 1); | |
24 | $backslash = chr(0) . 'backslash' . chr(0); | |
25 | $this->expr = str_replace(['\\\\', "\\$quot", $backslash], [$backslash, $quot, '\\\\'], $str); | |
26 | } | |
27 | ||
28 | public function render(array $fieldList): string { | |
29 | return '"' . \CRM_Core_DAO::escapeString($this->expr) . '"'; | |
30 | } | |
31 | ||
32 | } |