[TASK] Doctrine: Migrate indexed_search part 2
[Packages/TYPO3.CMS.git] / typo3 / sysext / indexed_search / Classes / Utility / LikeWildcard.php
1 <?php
2 namespace TYPO3\CMS\IndexedSearch\Utility;
3
4 /*
5 * This file is part of the TYPO3 CMS project.
6 *
7 * It is free software; you can redistribute it and/or modify it under
8 * the terms of the GNU General Public License, either version 2
9 * of the License, or any later version.
10 *
11 * For the full copyright and license information, please read the
12 * LICENSE.txt file that was distributed with this source code.
13 *
14 * The TYPO3 project - inspiring people to share!
15 */
16 use TYPO3\CMS\Core\Database\ConnectionPool;
17 use TYPO3\CMS\Core\Utility\GeneralUtility;
18
19 /**
20 * Enumeration object for LikeWildcard
21 */
22 class LikeWildcard extends \TYPO3\CMS\Core\Type\Enumeration
23 {
24 const __default = self::BOTH;
25
26 /** @var int Do not use any wildcard */
27 const NONE = 0;
28
29 /** @var int Use wildcard on left side */
30 const LEFT = 1;
31
32 /** @var int Use wildcard on right side */
33 const RIGHT = 2;
34
35 /** @var int Use wildcard on both sides */
36 const BOTH = 3;
37
38 /**
39 * Returns a LIKE clause for sql queries.
40 *
41 * @param string $tableName The name of the table to query.
42 * @param string $fieldName The name of the field to query with LIKE.
43 * @param string $likeValue The value for the LIKE clause operation.
44 * @return string
45 */
46 public function getLikeQueryPart($tableName, $fieldName, $likeValue)
47 {
48 $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
49 ->getQueryBuilderForTable($tableName);
50
51 $string = ($this->value & self::LEFT ? '%' : '')
52 . $queryBuilder->escapeLikeWildcards($likeValue)
53 . ($this->value & self::RIGHT ? '%' : '');
54
55 return $queryBuilder->expr()->like($fieldName, $queryBuilder->quote($string));
56 }
57 }