[BUGFIX] Prevent current extension version in update dialog 11/38011/2
authorNicole Cordes <typo3@cordes.co>
Sun, 22 Mar 2015 21:22:04 +0000 (22:22 +0100)
committerChristian Kuhn <lolli@schwarzbu.ch>
Mon, 23 Mar 2015 01:01:15 +0000 (02:01 +0100)
If you update an extension, the current version is included  in the
confirmation dialog. This might confuse the user as this version is
already available. The patch extends the repository function and adds
a parameter to exclude the current version from the database request.

Resolves: #65904
Releases: master
Change-Id: I66e7450840da1297ea4f3dc06bafe52b799bc267
Reviewed-on: http://review.typo3.org/38011
Reviewed-by: Andreas Fernandez <andreas.fernandez@aspedia.de>
Tested-by: Andreas Fernandez <andreas.fernandez@aspedia.de>
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
typo3/sysext/extensionmanager/Classes/Controller/DownloadController.php
typo3/sysext/extensionmanager/Classes/Domain/Repository/ExtensionRepository.php

index 1d6d661..0e1d65d 100644 (file)
@@ -207,7 +207,7 @@ class DownloadController extends AbstractController {
                $version = $this->request->getArgument('integerVersion');
                $updateComments = array();
                /** @var Extension[] $updatableVersions */
-               $updatableVersions = $this->extensionRepository->findByVersionRangeAndExtensionKeyOrderedByVersion($extensionKey, $version);
+               $updatableVersions = $this->extensionRepository->findByVersionRangeAndExtensionKeyOrderedByVersion($extensionKey, $version, 0, FALSE);
                foreach ($updatableVersions as $updatableVersion) {
                        $updateComments[$updatableVersion->getVersion()] = $updatableVersion->getUpdateComment();
                }
index 62fe203..70b95dd 100644 (file)
@@ -168,17 +168,22 @@ class ExtensionRepository extends \TYPO3\CMS\Extbase\Persistence\Repository {
         * @param string $extensionKey
         * @param int $lowestVersion
         * @param int $highestVersion
+        * @param bool $includeCurrentVersion
         * @return \TYPO3\CMS\Extbase\Persistence\QueryResultInterface
         */
-       public function findByVersionRangeAndExtensionKeyOrderedByVersion($extensionKey, $lowestVersion = 0, $highestVersion = 0) {
+       public function findByVersionRangeAndExtensionKeyOrderedByVersion($extensionKey, $lowestVersion = 0, $highestVersion = 0, $includeCurrentVersion = TRUE) {
                $query = $this->createQuery();
                $constraint = NULL;
                if ($lowestVersion !== 0 && $highestVersion !== 0) {
                        $constraint = $query->logicalAnd($query->lessThanOrEqual('integerVersion', $highestVersion), $query->greaterThanOrEqual('integerVersion', $lowestVersion), $query->equals('extensionKey', $extensionKey));
-               } elseif ($lowestVersion === 0 && $highestVersion !== 0) {
+               } elseif ($lowestVersion === 0 && $highestVersion !== 0 && $includeCurrentVersion) {
                        $constraint = $query->logicalAnd($query->lessThanOrEqual('integerVersion', $highestVersion), $query->equals('extensionKey', $extensionKey));
-               } elseif ($lowestVersion !== 0 && $highestVersion === 0) {
+               } elseif ($lowestVersion === 0 && $highestVersion !== 0) {
+                       $constraint = $query->logicalAnd($query->lessThan('integerVersion', $highestVersion), $query->equals('extensionKey', $extensionKey));
+               } elseif ($lowestVersion !== 0 && $highestVersion === 0 && $includeCurrentVersion) {
                        $constraint = $query->logicalAnd($query->greaterThanOrEqual('integerVersion', $lowestVersion), $query->equals('extensionKey', $extensionKey));
+               } elseif ($lowestVersion !== 0 && $highestVersion === 0) {
+                       $constraint = $query->logicalAnd($query->greaterThan('integerVersion', $lowestVersion), $query->equals('extensionKey', $extensionKey));
                } elseif ($lowestVersion === 0 && $highestVersion === 0) {
                        $constraint = $query->equals('extensionKey', $extensionKey);
                }