/** * Save configuration and redirects back to form * or to the welcome page of a distribution * * @param array $config The new extension configuration * @param string $extensionKey The extension key * @return void */ public function saveAction(array $config, $extensionKey) { $this->saveConfiguration($config, $extensionKey); /** @var Extension $extension */ $extension = $this->extensionRepository->findOneByCurrentVersionByExtensionKey($extensionKey); // Different handling for distribution installation if ($extension instanceof Extension && $extension->getCategory() === Extension::DISTRIBUTION_CATEGORY) { $this->redirect('welcome', 'Distribution', NULL, array('extension' => $extension->getUid())); } else { $this->redirect('showConfigurationForm', NULL, NULL, array('extension' => array('key' => $extensionKey))); } }
/** * Save configuration to file * Merges existing with new configuration. * * @param array $config The new extension configuration * @param string $extensionKey The extension key * @return void */ public function saveAction(array $config, $extensionKey) { /** @var $configurationUtility \TYPO3\CMS\Extensionmanager\Utility\ConfigurationUtility */ $configurationUtility = $this->objectManager->get('TYPO3\\CMS\\Extensionmanager\\Utility\\ConfigurationUtility'); $newConfiguration = $configurationUtility->getCurrentConfiguration($extensionKey); \TYPO3\CMS\Core\Utility\ArrayUtility::mergeRecursiveWithOverrule($newConfiguration, $config); $configurationUtility->writeConfiguration($configurationUtility->convertValuedToNestedConfiguration($newConfiguration), $extensionKey); $this->emitAfterExtensionConfigurationWriteSignal($newConfiguration); /** @var Extension $extension */ $extension = $this->extensionRepository->findOneByCurrentVersionByExtensionKey($extensionKey); // Different handling for distribution installation if ($extension instanceof Extension && $extension->getCategory() === Extension::DISTRIBUTION_CATEGORY) { $this->redirect('welcome', 'Distribution', NULL, array('extension' => $extension->getUid())); } else { $this->redirect('showConfigurationForm', NULL, NULL, array('extension' => array('key' => $extensionKey))); } }
/** * Shows all versions of a specific extension * * @param string $extensionKey * @return void */ public function showAllVersionsAction($extensionKey) { $currentVersion = $this->extensionRepository->findOneByCurrentVersionByExtensionKey($extensionKey); $extensions = $this->extensionRepository->findByExtensionKeyOrderedByVersion($extensionKey); $this->view->assignMultiple(array('extensionKey' => $extensionKey, 'currentVersion' => $currentVersion, 'extensions' => $extensions)); }