/**
  * 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;
 }
Example #3
0
 /**
  * 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);
 }