2 namespace TYPO3\CMS\Extensionmanager\Domain\Repository;
25 const TABLE_NAME =
'tx_extensionmanager_domain_model_extension';
50 public function initializeObject()
53 $defaultQuerySettings = $this->objectManager->get(\TYPO3\CMS\Extbase\Persistence\Generic\QuerySettingsInterface::class);
56 $this->databaseConnection =
$GLOBALS[
'TYPO3_DB'];
68 return $query->execute()->count();
82 'lastUpdated' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_DESCENDING
85 return $query->execute();
97 $query->matching($query->logicalAnd($query->equals(
'extensionKey', $extensionKey), $query->greaterThanOrEqual(
'reviewState', 0)));
98 $query->setOrderings(array(
'version' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_DESCENDING));
99 return $query->execute();
113 $query->equals(
'extensionKey', $extensionKey),
114 $query->greaterThanOrEqual(
'reviewState', 0),
115 $query->equals(
'currentVersion', 1)
119 return $query->execute()->getFirst();
134 $query->matching($query->logicalAnd(
135 $query->equals(
'extensionKey', $extensionKey),
136 $query->equals(
'version', $version)
138 return $query->setLimit(1)->execute()->getFirst();
152 $quotedSearchString = $this->databaseConnection->escapeStrForLike($this->databaseConnection->quoteStr($searchString,
'tx_extensionmanager_domain_model_extension'),
'tx_extensionmanager_domain_model_extension');
153 $quotedSearchStringForLike =
'\'%
' . $quotedSearchString . '%\
'';
154 $quotedSearchString =
'\'' . $quotedSearchString .
'\'';
156 self::TABLE_NAME .
'.*, ' .
158 'WHEN extension_key = ' . $quotedSearchString .
' THEN 16 ' .
159 'WHEN extension_key LIKE ' . $quotedSearchStringForLike .
' THEN 8 ' .
160 'WHEN title LIKE ' . $quotedSearchStringForLike .
' THEN 4 ' .
161 'WHEN description LIKE ' . $quotedSearchStringForLike .
' THEN 2 ' .
162 'WHEN author_name LIKE ' . $quotedSearchStringForLike .
' THEN 1 ' .
165 extension_key = ' . $quotedSearchString .
' OR
166 extension_key LIKE ' . $quotedSearchStringForLike .
' OR
167 title LIKE ' . $quotedSearchStringForLike .
' OR
168 description LIKE ' . $quotedSearchStringForLike .
' OR
169 author_name LIKE ' . $quotedSearchStringForLike .
'
171 AND current_version = 1 AND review_state >= 0';
172 $order =
'position DESC';
173 $result = $this->databaseConnection->exec_SELECTgetRows($select, self::TABLE_NAME, $where,
'', $order);
174 return $this->dataMapper->map(\TYPO3\CMS\Extensionmanager\Domain\Model\Extension::class, $result);
190 if ($lowestVersion !== 0 && $highestVersion !== 0) {
191 if ($includeCurrentVersion) {
192 $constraint = $query->logicalAnd($query->lessThanOrEqual(
'integerVersion', $highestVersion), $query->greaterThanOrEqual(
'integerVersion', $lowestVersion), $query->equals(
'extensionKey', $extensionKey));
194 $constraint = $query->logicalAnd($query->lessThanOrEqual(
'integerVersion', $highestVersion), $query->greaterThan(
'integerVersion', $lowestVersion), $query->equals(
'extensionKey', $extensionKey));
196 }
elseif ($lowestVersion === 0 && $highestVersion !== 0) {
197 if ($includeCurrentVersion) {
198 $constraint = $query->logicalAnd($query->lessThanOrEqual(
'integerVersion', $highestVersion), $query->equals(
'extensionKey', $extensionKey));
200 $constraint = $query->logicalAnd($query->lessThan(
'integerVersion', $highestVersion), $query->equals(
'extensionKey', $extensionKey));
202 }
elseif ($lowestVersion !== 0 && $highestVersion === 0) {
203 if ($includeCurrentVersion) {
204 $constraint = $query->logicalAnd($query->greaterThanOrEqual(
'integerVersion', $lowestVersion), $query->equals(
'extensionKey', $extensionKey));
206 $constraint = $query->logicalAnd($query->greaterThan(
'integerVersion', $lowestVersion), $query->equals(
'extensionKey', $extensionKey));
208 }
elseif ($lowestVersion === 0 && $highestVersion === 0) {
209 $constraint = $query->equals(
'extensionKey', $extensionKey);
212 $query->matching($query->logicalAnd($constraint, $query->greaterThanOrEqual(
'reviewState', 0)));
214 $query->setOrderings(array(
215 'integerVersion' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_DESCENDING
217 return $query->execute();
230 $query->equals(
'category', \TYPO3\CMS\Extensionmanager\Domain\Model\Extension::DISTRIBUTION_CATEGORY),
231 $query->equals(
'currentVersion', 1),
232 $query->logicalNot($query->equals(
'ownerusername',
'typo3v4'))
236 $query->setOrderings(array(
237 'alldownloadcounter' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_DESCENDING
240 return $query->execute();
253 $query->equals(
'category', \TYPO3\CMS\Extensionmanager\Domain\Model\Extension::DISTRIBUTION_CATEGORY),
254 $query->equals(
'currentVersion', 1),
255 $query->equals(
'ownerusername',
'typo3v4')
259 $query->setOrderings(array(
260 'alldownloadcounter' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_DESCENDING
263 return $query->execute();
288 $query->matching($query->logicalAnd($query->equals(
'extensionKey', $extensionKey), $query->greaterThanOrEqual(
'reviewState', 0)));
289 $query->setOrderings(array(
290 'integerVersion' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_DESCENDING
292 return $query->setLimit(1)->execute()->getFirst();
320 $this->databaseConnection->exec_UPDATEquery(
322 'uid IN (' . implode(
',', $uidsOfCurrentVersion) .
')',
324 'current_version' => 1,
339 $queryResult = $this->databaseConnection->sql_query(
340 'SELECT a.uid AS uid ' .
341 'FROM ' . self::TABLE_NAME .
' a ' .
342 'LEFT JOIN ' . self::TABLE_NAME .
' b ON a.repository = b.repository AND a.extension_key = b.extension_key AND a.integer_version < b.integer_version ' .
343 'WHERE a.repository = ' . (
int)$repositoryUid .
' AND b.extension_key IS NULL ' .
347 $extensionUids = array();
348 while ($row = $this->databaseConnection->sql_fetch_assoc($queryResult)) {
349 $extensionUids[] = $row[
'uid'];
351 $this->databaseConnection->sql_free_result($queryResult);
352 return $extensionUids;
362 return $this->databaseConnection->exec_SELECTcountRows(
365 'current_version = 1'
378 if ($query->getConstraint()) {
379 $query->matching($query->logicalAnd(
380 $query->getConstraint(),
381 $query->equals(
'current_version',
true),
382 $query->greaterThanOrEqual(
'reviewState', 0)
385 $query->matching($query->logicalAnd(
386 $query->equals(
'current_version',
true),
387 $query->greaterThanOrEqual(
'reviewState', 0)