2 declare(strict_types = 1);
56 $this->queryBuilder =
$queryBuilder ?? GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable(self::FILES_TABLE);
69 $query->additionalRestriction(
73 $query->additionalRestriction(
77 $query->additionalRestriction(
78 new FolderMountsRestriction(
$GLOBALS[
'BE_USER'])
82 $query->queryBuilder->add(
85 'DISTINCT ' . $query->queryBuilder->quoteIdentifier(self::FILES_TABLE .
'.identifier'),
86 $query->queryBuilder->quoteIdentifier(self::FILES_TABLE) .
'.*',
94 $query->queryBuilder->setMaxResults($searchDemand->
getMaxResults());
100 $searchDemand = $searchDemand->
addOrdering(self::FILES_TABLE, $fieldName, $order);
103 foreach ($searchDemand->
getOrderings() as [$tableName, $fieldName, $direction]) {
104 if (!isset(
$GLOBALS[
'TCA'][$tableName][
'columns'][$fieldName]) || !in_array($direction, [
'ASC',
'DESC'],
true)) {
106 throw new \RuntimeException(sprintf(
'Invalid file search ordering given table: "%s", field: "%s", direction: "%s".', $tableName, $fieldName, $direction), 1555850106);
109 $query->queryBuilder->add(
111 $query->queryBuilder->quoteIdentifiersForSelect([
112 $tableName .
'.' . $fieldName
117 uniqid($tableName . $fieldName,
true)
122 $query->queryBuilder->addOrderBy($tableName .
'.' . $fieldName, $direction);
138 $query->additionalRestriction(
139 new SearchTermRestriction($searchDemand, $query->queryBuilder)
141 if ($searchDemand->getFolder()) {
142 $query->additionalRestriction(
143 new FolderRestriction($searchDemand->getFolder(), $searchDemand->isRecursive())
147 $query->queryBuilder->add(
149 'COUNT(DISTINCT ' . $query->queryBuilder->quoteIdentifier(self::FILES_TABLE .
'.identifier') .
')'
167 $this->additionalRestrictions[get_class($additionalRestriction)] = $additionalRestriction;
172 if ($this->result ===
null) {
174 $this->result = $this->queryBuilder->execute();
186 $this->queryBuilder->from(self::FILES_TABLE);
187 $this->queryBuilder->join(
189 self::FILES_META_TABLE,
190 self::FILES_META_TABLE,
191 $this->queryBuilder->expr()->eq(self::FILES_META_TABLE .
'.file', $this->queryBuilder->quoteIdentifier(self::FILES_TABLE .
'.uid'))
194 $restrictionContainer = $this->queryBuilder->getRestrictions()
195 ->add(
new ConsistencyRestriction($this->queryBuilder));
196 foreach ($this->additionalRestrictions as $additionalRestriction) {
197 $restrictionContainer->add($additionalRestriction);
204 throw new \RuntimeException(
'Cannot modify file query once it was executed. Create a new query instead.', 1555944032);