/** * 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); }