/** * Downloads the extension the user wants to install * This is separated from downloading the dependencies * as an extension is able to provide it's own dependencies * * @param Extension $extension * @return void */ public function downloadMainExtension(Extension $extension) { // The extension object has a uid if the extension is not present in the system // or an update of a present extension is triggered. if ($extension->getUid()) { $this->downloadUtility->download($extension); } }
/** * Install an extension from TER * * @param \TYPO3\CMS\Extensionmanager\Domain\Model\Extension $extension * @param string $downloadPath * @throws \TYPO3\CMS\Extensionmanager\Exception\ExtensionManagerException */ public function installFromTerAction(\TYPO3\CMS\Extensionmanager\Domain\Model\Extension $extension, $downloadPath) { $result = FALSE; $errorMessage = ''; try { $this->downloadUtility->setDownloadPath($downloadPath); $this->prepareExtensionForImport($extension); $result = $this->managementService->resolveDependenciesAndInstall($extension); } catch (\TYPO3\CMS\Extensionmanager\Exception\ExtensionManagerException $e) { $errorMessage = $e->getMessage(); } $this->view->assign('result', $result)->assign('extension', $extension)->assign('errorMessage', $errorMessage); }
/** * Install an action from TER * Downloads the extension, resolves dependencies and installs it * * @param \TYPO3\CMS\Extensionmanager\Domain\Model\Extension $extension * @param string $downloadPath * @return array */ protected function installFromTer(\TYPO3\CMS\Extensionmanager\Domain\Model\Extension $extension, $downloadPath = 'Local') { $result = FALSE; $errorMessages = array(); try { $this->downloadUtility->setDownloadPath($downloadPath); if (($result = $this->managementService->installExtension($extension)) === FALSE) { $errorMessages = $this->managementService->getDependencyErrors(); } } catch (\TYPO3\CMS\Extensionmanager\Exception\ExtensionManagerException $e) { $errorMessages = array($extension->getExtensionKey() => array(array('code' => $e->getCode(), 'message' => $e->getMessage()))); } return array($result, $errorMessages); }
/** * Install an extension from TER * Downloads the extension, resolves dependencies and installs it * * @param \TYPO3\CMS\Extensionmanager\Domain\Model\Extension $extension * @param string $downloadPath * @return array */ protected function installFromTer(\TYPO3\CMS\Extensionmanager\Domain\Model\Extension $extension, $downloadPath = 'Local') { $result = false; $errorMessages = array(); try { $this->downloadUtility->setDownloadPath($downloadPath); $this->managementService->setAutomaticInstallationEnabled($this->configurationUtility->getCurrentConfiguration('extensionmanager')['automaticInstallation']['value']); if (($result = $this->managementService->installExtension($extension)) === false) { $errorMessages = $this->managementService->getDependencyErrors(); } } catch (\TYPO3\CMS\Extensionmanager\Exception\ExtensionManagerException $e) { $errorMessages = array($extension->getExtensionKey() => array(array('code' => $e->getCode(), 'message' => $e->getMessage()))); } return array($result, $errorMessages); }
/** * Download dependencies * expects an array of extension objects to download * * @param array<Tx_Extensionmanager_Domain_Model_Extension> $downloadQueue * @return array */ protected function downloadDependencies(array $downloadQueue) { $resolvedDependencies = array(); foreach ($downloadQueue as $extensionToDownload) { $this->downloadUtility->download($extensionToDownload); $this->downloadQueue->removeExtensionFromQueue($extensionToDownload); $resolvedDependencies['downloaded'][$extensionToDownload->getExtensionKey()] = $extensionToDownload; $this->markExtensionForInstallation($extensionToDownload->getExtensionKey()); } return $resolvedDependencies; }
/** * Install an extension from TER * * @throws \TYPO3\CMS\Extensionmanager\Exception\ExtensionManagerException * @return void */ public function installFromTerAction() { $result = FALSE; $errorMessage = ''; try { if (!$this->request->hasArgument('extension')) { throw new \TYPO3\CMS\Extensionmanager\Exception\ExtensionManagerException('Required argument extension not set.', 1334433342); } $extensionUid = $this->request->getArgument('extension'); if ($this->request->hasArgument('downloadPath')) { $this->downloadUtility->setDownloadPath($this->request->getArgument('downloadPath')); } /** @var $extension \TYPO3\CMS\Extensionmanager\Domain\Model\Extension */ $extension = $this->extensionRepository->findByUid(intval($extensionUid)); $this->prepareExtensionForImport($extension); $result = $this->managementService->resolveDependenciesAndInstall($extension); } catch (\TYPO3\CMS\Extensionmanager\Exception\ExtensionManagerException $e) { $errorMessage = $e->getMessage(); } $this->view->assign('result', $result)->assign('extension', $extension)->assign('errorMessage', $errorMessage); }