‪TYPO3CMS  ‪main
BackendUserGroupRepository.php
Go to the documentation of this file.
1 <?php
2 
3 /*
4  * This file is part of the TYPO3 CMS project.
5  *
6  * It is free software; you can redistribute it and/or modify it under
7  * the terms of the GNU General Public License, either version 2
8  * of the License, or any later version.
9  *
10  * For the full copyright and license information, please read the
11  * LICENSE.txt file that was distributed with this source code.
12  *
13  * The TYPO3 project - inspiring people to share!
14  */
15 
17 
20 use TYPO3\CMS\Core\Database\Query\QueryBuilder;
27 
34 {
35  public const ‪TABLE_NAME = 'be_groups';
36 
37  protected ‪$defaultOrderings = [
39  ];
40 
44  public function ‪createQuery(): ‪QueryInterface
45  {
46  $query = parent::createQuery();
47  $query->getQuerySettings()->setIgnoreEnableFields(true);
48  return $query;
49  }
50 
54  public function ‪getQueryBuilder(bool $removeRestrictions = true): QueryBuilder
55  {
56  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable(self::TABLE_NAME);
57  if ($removeRestrictions === true) {
58  $queryBuilder->getRestrictions()->removeAll();
59  }
60 
61  return $queryBuilder;
62  }
63 
67  public function ‪findByUidList(array $uidList): array
68  {
69  $query = $this->‪createQuery();
70  // being explicit here, albeit `Typo3DbQueryParser::parseDynamicOperand` uses prepared parameters
71  $uidList = array_map(intval(...), $uidList);
72  $query->matching($query->in('uid', $uidList));
73  return $query->execute(true);
74  }
75 
80  public function ‪findByFilter(‪BackendUserGroup $backendUserGroupDto): ‪QueryResult
81  {
82  $constraints = [];
83  $query = $this->‪createQuery();
84  $query->setOrderings(['title' => ‪QueryInterface::ORDER_ASCENDING]);
85  if ($backendUserGroupDto->‪getTitle() !== '') {
86  $searchConstraints = [];
87  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable(self::TABLE_NAME);
88  $searchConstraints[] = $query->like(
89  'title',
90  '%' . $queryBuilder->escapeLikeWildcards($backendUserGroupDto->‪getTitle()) . '%'
91  );
92 
93  if (‪MathUtility::canBeInterpretedAsInteger($backendUserGroupDto->‪getTitle())) {
94  $searchConstraints[] = $query->equals('uid', (int)$backendUserGroupDto->‪getTitle());
95  }
96 
97  if (‪count($searchConstraints) >= 2) {
98  $constraints[] = $query->logicalOr(...$searchConstraints);
99  } else {
100  $constraints = $searchConstraints;
101  }
102  }
103 
104  $query->matching($query->logicalAnd(...$constraints));
106  $result = $query->execute();
107 
108  return $result;
109  }
110 }
‪TYPO3\CMS\Beuser\Domain\Repository\BackendUserGroupRepository\$defaultOrderings
‪$defaultOrderings
Definition: BackendUserGroupRepository.php:37
‪TYPO3\CMS\Extbase\Persistence\Exception\InvalidQueryException
Definition: InvalidQueryException.php:25
‪TYPO3\CMS\Extbase\Persistence\QueryInterface
Definition: QueryInterface.php:30
‪TYPO3\CMS\Beuser\Domain\Repository\BackendUserGroupRepository\createQuery
‪createQuery()
Definition: BackendUserGroupRepository.php:44
‪TYPO3\CMS\Beuser\Domain\Repository\BackendUserGroupRepository\findByUidList
‪findByUidList(array $uidList)
Definition: BackendUserGroupRepository.php:67
‪TYPO3\CMS\Extbase\Persistence\Repository\count
‪count(array $criteria)
Definition: Repository.php:315
‪TYPO3\CMS\Core\Utility\MathUtility\canBeInterpretedAsInteger
‪static bool canBeInterpretedAsInteger(mixed $var)
Definition: MathUtility.php:69
‪TYPO3\CMS\Extbase\Persistence\QueryInterface\ORDER_ASCENDING
‪const ORDER_ASCENDING
Definition: QueryInterface.php:99
‪TYPO3\CMS\Beuser\Domain\Repository
Definition: BackendUserGroupRepository.php:16
‪TYPO3\CMS\Extbase\Persistence\Repository
Definition: Repository.php:30
‪TYPO3\CMS\Beuser\Domain\Repository\BackendUserGroupRepository\findByFilter
‪findByFilter(BackendUserGroup $backendUserGroupDto)
Definition: BackendUserGroupRepository.php:80
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult
Definition: QueryResult.php:32
‪TYPO3\CMS\Core\Utility\MathUtility
Definition: MathUtility.php:24
‪TYPO3\CMS\Beuser\Domain\Repository\BackendUserGroupRepository
Definition: BackendUserGroupRepository.php:34
‪TYPO3\CMS\Core\Database\ConnectionPool
Definition: ConnectionPool.php:46
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:52
‪TYPO3\CMS\Beuser\Domain\Dto\BackendUserGroup\getTitle
‪getTitle()
Definition: BackendUserGroup.php:34
‪TYPO3\CMS\Beuser\Domain\Repository\BackendUserGroupRepository\TABLE_NAME
‪const TABLE_NAME
Definition: BackendUserGroupRepository.php:35
‪TYPO3\CMS\Beuser\Domain\Dto\BackendUserGroup
Definition: BackendUserGroup.php:24
‪TYPO3\CMS\Beuser\Domain\Repository\BackendUserGroupRepository\getQueryBuilder
‪getQueryBuilder(bool $removeRestrictions=true)
Definition: BackendUserGroupRepository.php:54