From 6b900136cf6ceaf32a14d53b6eea3eca00d020ef Mon Sep 17 00:00:00 2001 From: Wouter Wolters <typo3@wouterwolters.nl> Date: Sat, 18 Jan 2014 15:57:05 +0100 Subject: [PATCH] [BUGFIX] Removed extension stays in PackageStates file Deleting an extension in the Extension Manager doesn't delete the entry in PackageStates file. Use the package manager to delete the extension. This will take care of linked extensions (just remove the link) too. The package manager will take care to remove the entry from the PackageStates file. If an extension is not listed in the PackageStates file (e.g. because we uploaded it via FTP and forgot to clear the system caches), directly remove the folder. Resolves: #53459 Releases: 6.2 Change-Id: I10d5ef33ccf6438fece512478408c57d5d7486de Reviewed-on: https://review.typo3.org/26921 Reviewed-by: Jan Runte Tested-by: Jan Runte Reviewed-by: Helmut Hummel Reviewed-by: Christian Kuhn Tested-by: Christian Kuhn --- .../Classes/Controller/ActionController.php | 3 --- .../extensionmanager/Classes/Utility/InstallUtility.php | 8 +++++++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/typo3/sysext/extensionmanager/Classes/Controller/ActionController.php b/typo3/sysext/extensionmanager/Classes/Controller/ActionController.php index 396fa62be9c3..d01c363f7603 100644 --- a/typo3/sysext/extensionmanager/Classes/Controller/ActionController.php +++ b/typo3/sysext/extensionmanager/Classes/Controller/ActionController.php @@ -95,9 +95,6 @@ class ActionController extends AbstractController { $success = TRUE; $message = ''; try { - if (\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded($extension)) { - $this->installUtility->uninstall($extension); - } $this->installUtility->removeExtension($extension); } catch (\TYPO3\CMS\Extensionmanager\Exception\ExtensionManagerException $e) { $message = $e->getMessage(); diff --git a/typo3/sysext/extensionmanager/Classes/Utility/InstallUtility.php b/typo3/sysext/extensionmanager/Classes/Utility/InstallUtility.php index 6c5316ffe559..9a95c7acd557 100644 --- a/typo3/sysext/extensionmanager/Classes/Utility/InstallUtility.php +++ b/typo3/sysext/extensionmanager/Classes/Utility/InstallUtility.php @@ -363,7 +363,13 @@ class InstallUtility implements \TYPO3\CMS\Core\SingletonInterface { public function removeExtension($extension) { $absolutePath = $this->fileHandlingUtility->getAbsoluteExtensionPath($extension); if ($this->fileHandlingUtility->isValidExtensionPath($absolutePath)) { - $this->fileHandlingUtility->removeDirectory($absolutePath); + if ($this->packageManager->isPackageAvailable($extension)) { + // Package manager deletes the extension and removes the entry from PackageStates.php + $this->packageManager->deletePackage($extension); + } else { + // The extension is not listed in PackageStates.php, we can safely remove it + $this->fileHandlingUtility->removeDirectory($absolutePath); + } } else { throw new \TYPO3\CMS\Extensionmanager\Exception\ExtensionManagerException('No valid extension path given.', 1342875724); } -- GitLab