/** * Download an extension * * @param \TYPO3\CMS\Extensionmanager\Domain\Model\Extension $extension * @return void */ public function download(\TYPO3\CMS\Extensionmanager\Domain\Model\Extension $extension) { $mirrorUrl = $this->repositoryHelper->getMirrors()->getMirrorUrl(); $fetchedExtension = $this->terUtility->fetchExtension($extension->getExtensionKey(), $extension->getVersion(), $extension->getMd5hash(), $mirrorUrl); if (isset($fetchedExtension['extKey']) && !empty($fetchedExtension['extKey']) && is_string($fetchedExtension['extKey'])) { $this->fileHandlingUtility->unpackExtensionFromExtensionDataArray($fetchedExtension, $extension, $this->getDownloadPath()); } }
/** * Adds an extension to the download queue. * If the extension was already requested in a different version * an exception is thrown. * * @param \TYPO3\CMS\Extensionmanager\Domain\Model\Extension $extension * @param string $stack * @throws \TYPO3\CMS\Extensionmanager\Exception\ExtensionManagerException * @return void */ public function addExtensionToQueue(\TYPO3\CMS\Extensionmanager\Domain\Model\Extension $extension, $stack = 'download') { if (!is_string($stack) || !in_array($stack, ['download', 'update'])) { throw new ExtensionManagerException('Stack has to be either "download" or "update"', 1342432103); } if (!isset($this->extensionStorage[$stack])) { $this->extensionStorage[$stack] = []; } if (array_key_exists($extension->getExtensionKey(), $this->extensionStorage[$stack])) { if ($this->extensionStorage[$stack][$extension->getExtensionKey()] !== $extension) { throw new ExtensionManagerException($extension->getExtensionKey() . ' was requested to be downloaded in different versions (' . $extension->getVersion() . ' and ' . $this->extensionStorage[$stack][$extension->getExtensionKey()]->getVersion() . ').', 1342432101); } } $this->extensionStorage[$stack][$extension->getExtensionKey()] = $extension; }