/**
  * Uninstall one or multiple extensions
  * Extension keys are read from get vars, more than one extension has to be comma separated
  * Cache is cleared "hard" after uninstalling
  *
  * @return string "OK"
  */
 protected function executeAction()
 {
     $getVars = Utility\GeneralUtility::_GET('install');
     if (isset($getVars['uninstallExtension']) && isset($getVars['uninstallExtension']['extensions'])) {
         $extensionsToUninstall = Utility\GeneralUtility::trimExplode(',', $getVars['uninstallExtension']['extensions']);
         foreach ($extensionsToUninstall as $extension) {
             if (Utility\ExtensionManagementUtility::isLoaded($extension)) {
                 Utility\ExtensionManagementUtility::unloadExtension($extension);
             }
         }
     }
     return 'OK';
 }
 /**
  * Uninstall one or multiple extensions
  * Extension keys are read from get vars, more than one extension has to be comma separated
  *
  * @return string "OK" on success, the error message otherwise
  */
 protected function executeAction()
 {
     $getVars = GeneralUtility::_GET('install');
     if (isset($getVars['uninstallExtension']) && isset($getVars['uninstallExtension']['extensions'])) {
         $extensionsToUninstall = GeneralUtility::trimExplode(',', $getVars['uninstallExtension']['extensions']);
         foreach ($extensionsToUninstall as $extension) {
             if (ExtensionManagementUtility::isLoaded($extension)) {
                 try {
                     ExtensionManagementUtility::unloadExtension($extension);
                 } catch (\Exception $e) {
                     return $e->getMessage();
                 }
             }
         }
     }
     return 'OK';
 }
 /**
  * @test
  */
 public function unloadExtensionCallsPackageManagerToDeactivatePackage()
 {
     $packageName = $this->getUniqueId('foo');
     /** @var PackageManager|\PHPUnit_Framework_MockObject_MockObject $packageManager */
     $packageManager = $this->getMock(PackageManager::class, array('isPackageActive', 'deactivatePackage'));
     $packageManager->expects($this->any())->method('isPackageActive')->will($this->returnValue(TRUE));
     $packageManager->expects($this->once())->method('deactivatePackage')->with($packageName);
     ExtensionManagementUtility::setPackageManager($packageManager);
     ExtensionManagementUtility::unloadExtension($packageName);
 }
 /**
  * @test
  */
 public function unloadExtensionCallsPackageManagerToDeactivatePackage()
 {
     $packageName = $this->getUniqueId('foo');
     $packageManager = $this->getMock('TYPO3\\CMS\\Core\\Package\\PackageManager', array('isPackageActive', 'deactivatePackage'));
     $packageManager->expects($this->any())->method('isPackageActive')->will($this->returnValue(TRUE));
     $packageManager->expects($this->once())->method('deactivatePackage')->with($packageName);
     ExtensionManagementUtility::setPackageManager($packageManager);
     ExtensionManagementUtility::unloadExtension($packageName);
 }
 /**
  * Remove dbal and adodb from list of loaded extensions
  *
  * @return \TYPO3\CMS\Install\Status\StatusInterface
  */
 protected function executeUnloadDbalExtension()
 {
     if (ExtensionManagementUtility::isLoaded('adodb')) {
         ExtensionManagementUtility::unloadExtension('adodb');
     }
     if (ExtensionManagementUtility::isLoaded('dbal')) {
         ExtensionManagementUtility::unloadExtension('dbal');
     }
     // @TODO: Remove configuration from TYPO3_CONF_VARS['EXTCONF']['dbal']
     /** @var $errorStatus \TYPO3\CMS\Install\Status\WarningStatus */
     $warningStatus = $this->objectManager->get(\TYPO3\CMS\Install\Status\WarningStatus::class);
     $warningStatus->setTitle('Removed database abstraction layer');
     return $warningStatus;
 }
 /**
  * Prepares an extension for import from TER
  * Uninstalls the extension if it is already loaded (case: update)
  * and reloads the caches.
  *
  * @param \TYPO3\CMS\Extensionmanager\Domain\Model\Extension $extension
  * @return void
  */
 protected function prepareExtensionForImport(\TYPO3\CMS\Extensionmanager\Domain\Model\Extension $extension)
 {
     if (\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded($extension->getExtensionKey())) {
         \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::unloadExtension($extension->getExtensionKey());
         $this->installUtility->reloadCaches();
     }
 }
 /**
  * Wrapper function for unloading extensions
  *
  * @param string $extensionKey
  * @return void
  */
 protected function unloadExtension($extensionKey)
 {
     \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::unloadExtension($extensionKey);
 }