/** * Uninstall (unload) an extension. * * @param string $extensionKey extension key * * @throws RuntimeException * @throws InvalidArgumentException * @return void */ public function uninstallExtension($extensionKey) { if ($extensionKey === 'coreapi') { throw new InvalidArgumentException('Extension "coreapi" cannot be uninstalled!'); } $this->checkExtensionExists($extensionKey); $this->checkExtensionLoaded($extensionKey); $this->installUtility->uninstall($extensionKey); }
/** * Uninstall extensions that will be updated * This is not strictly necessary but cleaner all in all * * @param Extension[] $updateQueue * @return array */ protected function uninstallDependenciesToBeUpdated(array $updateQueue) { $resolvedDependencies = array(); foreach ($updateQueue as $extensionToUpdate) { $this->installUtility->uninstall($extensionToUpdate->getExtensionKey()); $resolvedDependencies['updated'][$extensionToUpdate->getExtensionKey()] = $extensionToUpdate; } return $resolvedDependencies; }
/** * Toggle extension installation state action * * @param string $extensionKey */ protected function toggleExtensionInstallationStateAction($extensionKey) { $installedExtensions = \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getLoadedExtensionListArray(); try { if (in_array($extensionKey, $installedExtensions)) { // uninstall $this->installUtility->uninstall($extensionKey); } else { // install $extension = $this->extensionModelUtility->mapExtensionArrayToModel($this->installUtility->enrichExtensionWithDetails($extensionKey)); if ($this->managementService->installExtension($extension) === FALSE) { $this->redirect('unresolvedDependencies', 'List', NULL, array('extensionKey' => $extensionKey)); } } } catch (\TYPO3\CMS\Extensionmanager\Exception\ExtensionManagerException $e) { $this->addFlashMessage(htmlspecialchars($e->getMessage()), '', \TYPO3\CMS\Core\Messaging\FlashMessage::ERROR); } catch (\TYPO3\Flow\Package\Exception\PackageStatesFileNotWritableException $e) { $this->addFlashMessage(htmlspecialchars($e->getMessage()), '', \TYPO3\CMS\Core\Messaging\FlashMessage::ERROR); } $this->redirect('index', 'List', NULL, array(self::TRIGGER_RefreshModuleMenu => TRUE)); }
/** * Remove an extension (if it is still installed, uninstall it first) * * @param string $extension */ protected function removeExtensionAction($extension) { $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(); $success = FALSE; } $this->view->assign('success', $success)->assign('message', $message)->assign('extension', $extension); }
/** * @test */ public function uninstallCallsUnloadExtension() { $this->installMock->expects($this->once())->method('unloadExtension'); $this->installMock->uninstall($this->extensionKey); }