31 const TABLE_NAME =
'tx_extensionmanager_domain_model_extension';
53 return $query->execute()->count();
67 'lastUpdated' => \
TYPO3\CMS\
Extbase\Persistence\QueryInterface::ORDER_DESCENDING
70 return $query->execute();
82 $query->matching($query->logicalAnd($query->equals(
'extensionKey', $extensionKey), $query->greaterThanOrEqual(
'reviewState', 0)));
83 $query->setOrderings([
'integerVersion' => \
TYPO3\CMS\
Extbase\Persistence\QueryInterface::ORDER_DESCENDING]);
84 return $query->execute();
98 $query->equals(
'extensionKey', $extensionKey),
99 $query->greaterThanOrEqual(
'reviewState', 0),
100 $query->equals(
'currentVersion', 1)
104 return $query->execute()->getFirst();
119 $query->matching($query->logicalAnd(
120 $query->equals(
'extensionKey', $extensionKey),
121 $query->equals(
'version', $version)
123 return $query->setLimit(1)->execute()->getFirst();
137 $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
138 ->getQueryBuilderForTable(self::TABLE_NAME);
140 $searchPlaceholderForLike =
'%' . $queryBuilder->escapeLikeWildcards($searchString) .
'%';
142 $searchConstraints = [
143 'extension_key' => $queryBuilder->expr()->eq(
145 $queryBuilder->createNamedParameter($searchString, \PDO::PARAM_STR)
147 'extension_key_like' => $queryBuilder->expr()->like(
149 $queryBuilder->createNamedParameter($searchPlaceholderForLike, \PDO::PARAM_STR)
151 'title' => $queryBuilder->expr()->like(
153 $queryBuilder->createNamedParameter($searchPlaceholderForLike, \PDO::PARAM_STR)
155 'description' => $queryBuilder->expr()->like(
157 $queryBuilder->createNamedParameter($searchPlaceholderForLike, \PDO::PARAM_STR)
159 'author_name' => $queryBuilder->expr()->like(
161 $queryBuilder->createNamedParameter($searchPlaceholderForLike, \PDO::PARAM_STR)
165 $caseStatement =
'CASE ' .
166 'WHEN ' . $searchConstraints[
'extension_key'] .
' THEN 16 ' .
167 'WHEN ' . $searchConstraints[
'extension_key_like'] .
' THEN 8 ' .
168 'WHEN ' . $searchConstraints[
'title'] .
' THEN 4 ' .
169 'WHEN ' . $searchConstraints[
'description'] .
' THEN 2 ' .
170 'WHEN ' . $searchConstraints[
'author_name'] .
' THEN 1 ' .
171 'END AS ' . $queryBuilder->quoteIdentifier(
'position');
173 $result = $queryBuilder
175 ->addSelectLiteral($caseStatement)
176 ->from(self::TABLE_NAME)
178 $queryBuilder->expr()->orX(...array_values($searchConstraints)),
179 $queryBuilder->expr()->eq(
'current_version', $queryBuilder->createNamedParameter(1, \PDO::PARAM_INT)),
180 $queryBuilder->expr()->gte(
'review_state', $queryBuilder->createNamedParameter(0, \PDO::PARAM_INT))
182 ->orderBy(
'position',
'DESC')
186 $dataMapper = $this->objectManager->get(\
TYPO3\CMS\
Extbase\Persistence\Generic\Mapper\DataMapper::class);
187 return $dataMapper->map(\
TYPO3\CMS\Extensionmanager\Domain\Model\Extension::class, $result);
203 if ($lowestVersion !== 0 && $highestVersion !== 0) {
204 if ($includeCurrentVersion) {
205 $constraint = $query->logicalAnd($query->lessThanOrEqual(
'integerVersion', $highestVersion), $query->greaterThanOrEqual(
'integerVersion', $lowestVersion), $query->equals(
'extensionKey', $extensionKey));
207 $constraint = $query->logicalAnd($query->lessThanOrEqual(
'integerVersion', $highestVersion), $query->greaterThan(
'integerVersion', $lowestVersion), $query->equals(
'extensionKey', $extensionKey));
209 } elseif ($lowestVersion === 0 && $highestVersion !== 0) {
210 if ($includeCurrentVersion) {
211 $constraint = $query->logicalAnd($query->lessThanOrEqual(
'integerVersion', $highestVersion), $query->equals(
'extensionKey', $extensionKey));
213 $constraint = $query->logicalAnd($query->lessThan(
'integerVersion', $highestVersion), $query->equals(
'extensionKey', $extensionKey));
215 } elseif ($lowestVersion !== 0 && $highestVersion === 0) {
216 if ($includeCurrentVersion) {
217 $constraint = $query->logicalAnd($query->greaterThanOrEqual(
'integerVersion', $lowestVersion), $query->equals(
'extensionKey', $extensionKey));
219 $constraint = $query->logicalAnd($query->greaterThan(
'integerVersion', $lowestVersion), $query->equals(
'extensionKey', $extensionKey));
221 } elseif ($lowestVersion === 0 && $highestVersion === 0) {
222 $constraint = $query->equals(
'extensionKey', $extensionKey);
225 $query->matching($query->logicalAnd($constraint, $query->greaterThanOrEqual(
'reviewState', 0)));
227 $query->setOrderings([
228 'integerVersion' => \
TYPO3\CMS\
Extbase\Persistence\QueryInterface::ORDER_DESCENDING
230 return $query->execute();
243 $query->equals(
'category', \
TYPO3\CMS\Extensionmanager\Domain\Model\Extension::DISTRIBUTION_CATEGORY),
244 $query->logicalNot($query->equals(
'ownerusername',
'typo3v4'))
248 $query->setOrderings([
249 'alldownloadcounter' => \
TYPO3\CMS\
Extbase\Persistence\QueryInterface::ORDER_DESCENDING
252 return $query->execute();
265 $query->equals(
'category', \
TYPO3\CMS\Extensionmanager\Domain\Model\Extension::DISTRIBUTION_CATEGORY),
266 $query->equals(
'ownerusername',
'typo3v4')
270 $query->setOrderings([
271 'alldownloadcounter' => \
TYPO3\CMS\
Extbase\Persistence\QueryInterface::ORDER_DESCENDING
274 return $query->execute();
299 $query->matching($query->logicalAnd($query->equals(
'extensionKey', $extensionKey), $query->greaterThanOrEqual(
'reviewState', 0)));
300 $query->setOrderings([
301 'integerVersion' => \
TYPO3\CMS\
Extbase\Persistence\QueryInterface::ORDER_DESCENDING
303 return $query->setLimit(1)->execute()->getFirst();
329 $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
330 ->getQueryBuilderForTable(self::TABLE_NAME);
331 $connection = GeneralUtility::makeInstance(ConnectionPool::class)
332 ->getConnectionForTable(self::TABLE_NAME);
334 $connection->getDatabasePlatform()
337 foreach (array_chunk($uidsOfCurrentVersion, $maxBindParameters - 10) as $chunk) {
339 ->update(self::TABLE_NAME)
341 $queryBuilder->expr()->in(
343 $queryBuilder->createNamedParameter($chunk, Connection::PARAM_INT_ARRAY)
346 ->set(
'current_version', 1)
361 $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
362 ->getQueryBuilderForTable(self::TABLE_NAME);
364 $queryResult = $queryBuilder
365 ->select(
'a.uid AS uid')
366 ->from(self::TABLE_NAME,
'a')
371 $queryBuilder->expr()->andX(
372 $queryBuilder->expr()->eq(
'a.repository', $queryBuilder->quoteIdentifier(
'b.repository')),
373 $queryBuilder->expr()->eq(
'a.extension_key', $queryBuilder->quoteIdentifier(
'b.extension_key')),
374 $queryBuilder->expr()->lt(
'a.integer_version', $queryBuilder->quoteIdentifier(
'b.integer_version'))
378 $queryBuilder->expr()->eq(
380 $queryBuilder->createNamedParameter($repositoryUid, \PDO::PARAM_INT)
382 $queryBuilder->expr()->isNull(
'b.extension_key')
388 while ($row = $queryResult->fetch()) {
389 $extensionUids[] = $row[
'uid'];
392 return $extensionUids;
402 $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
403 ->getQueryBuilderForTable(self::TABLE_NAME);
405 return (
int)$queryBuilder
407 ->from(self::TABLE_NAME)
408 ->where($queryBuilder->expr()->eq(
410 $queryBuilder->createNamedParameter(1, \PDO::PARAM_INT)
425 if ($query->getConstraint()) {
426 $query->matching($query->logicalAnd(
427 $query->getConstraint(),
428 $query->equals(
'current_version',
true),
429 $query->greaterThanOrEqual(
'reviewState', 0)
432 $query->matching($query->logicalAnd(
433 $query->equals(
'current_version',
true),
434 $query->greaterThanOrEqual(
'reviewState', 0)