/** * Shows a list of unresolved dependency errors with the possibility to bypass the dependency check * * @param string $extensionKey * @throws ExtensionManagerException * @return void */ public function unresolvedDependenciesAction($extensionKey) { $availableExtensions = $this->listUtility->getAvailableExtensions(); if (isset($availableExtensions[$extensionKey])) { $extensionArray = $this->listUtility->enrichExtensionsWithEmConfAndTerInformation(array($extensionKey => $availableExtensions[$extensionKey])); /** @var ExtensionModelUtility $extensionModelUtility */ $extensionModelUtility = $this->objectManager->get('TYPO3\\CMS\\Extensionmanager\\Utility\\ExtensionModelUtility'); $extension = $extensionModelUtility->mapExtensionArrayToModel($extensionArray[$extensionKey]); } else { throw new ExtensionManagerException('Extension ' . $extensionKey . ' is not available', 1402421007); } $this->dependencyUtility->checkDependencies($extension); $this->view->assign('extension', $extension); $this->view->assign('unresolvedDependencies', $this->dependencyUtility->getDependencyErrors()); }
/** * Get and resolve dependencies * * @param Extension $extension * @return array */ public function getAndResolveDependencies(Extension $extension) { $this->dependencyUtility->setSkipDependencyCheck($this->skipDependencyCheck); $this->dependencyUtility->checkDependencies($extension); $installQueue = $this->downloadQueue->getExtensionInstallStorage(); if (is_array($installQueue) && !empty($installQueue)) { $installQueue = array('install' => $installQueue); } return array_merge($this->downloadQueue->getExtensionQueue(), $installQueue); }
/** * Returns the updateable version for an extension which also resolves dependencies. * * @internal * @param Extension $extensionData * @return bool|Extension FALSE if no update available otherwise latest possible update */ public function getUpdateableVersion(Extension $extensionData) { // Only check for update for TER extensions $version = $extensionData->getIntegerVersion(); /** @var $extensionUpdates[] \TYPO3\CMS\Extensionmanager\Domain\Model\Extension */ $extensionUpdates = $this->extensionRepository->findByVersionRangeAndExtensionKeyOrderedByVersion($extensionData->getExtensionKey(), $version + 1); if ($extensionUpdates->count() > 0) { foreach ($extensionUpdates as $extensionUpdate) { $this->dependencyUtility->checkDependencies($extensionUpdate); if (!$this->dependencyUtility->hasDependencyErrors()) { return $extensionUpdate; } } } return FALSE; }
/** * Checks if an update for an extension is available * * @internal * @param \TYPO3\CMS\Extensionmanager\Domain\Model\Extension $extensionData * @return boolean */ public function isUpdateAvailable(\TYPO3\CMS\Extensionmanager\Domain\Model\Extension $extensionData) { $isUpdateAvailable = FALSE; // Only check for update for TER extensions $version = $extensionData->getIntegerVersion(); /** @var $highestTerVersionExtension \TYPO3\CMS\Extensionmanager\Domain\Model\Extension */ $highestTerVersionExtension = $this->extensionRepository->findHighestAvailableVersion($extensionData->getExtensionKey()); if ($highestTerVersionExtension instanceof \TYPO3\CMS\Extensionmanager\Domain\Model\Extension) { $highestVersion = $highestTerVersionExtension->getIntegerVersion(); if ($highestVersion > $version) { $this->dependencyUtility->checkDependencies($highestTerVersionExtension); if (!$this->dependencyUtility->hasDependencyErrors()) { $isUpdateAvailable = TRUE; } } } return $isUpdateAvailable; }