109 $this->installUtility->reloadAvailableExtensions();
111 $this->dependencyUtility->checkDependencies($extension);
112 $this->downloadQueue->addExtensionToInstallQueue($extension);
123 $this->downloadQueue->addExtensionToCopyQueue($extensionKey, $sourceFolder);
135 $this->dependencyUtility->checkDependencies($extension);
136 if (!$this->dependencyUtility->hasDependencyErrors()) {
137 $this->downloadQueue->addExtensionToQueue($extension);
148 $this->dependencyUtility->checkDependencies($extension);
149 $this->downloadQueue->addExtensionToQueue($extension,
'update');
183 $downloadedDependencies = [];
184 $updatedDependencies = [];
191 while (!$this->downloadQueue->isCopyQueueEmpty()
192 || !$this->downloadQueue->isQueueEmpty(
'download')
193 || !$this->downloadQueue->isQueueEmpty(
'update')
197 $copyQueue = $this->downloadQueue->resetExtensionCopyStorage();
198 if (!empty($copyQueue)) {
201 $installQueue = array_merge($this->downloadQueue->resetExtensionInstallStorage(), $installQueue);
203 $queue = $this->downloadQueue->resetExtensionQueue();
204 if (!empty($queue[
'download'])) {
205 $downloadedDependencies = array_merge($downloadedDependencies, $this->
downloadDependencies($queue[
'download']));
207 $installQueue = array_merge($this->downloadQueue->resetExtensionInstallStorage(), $installQueue);
208 if ($this->automaticInstallationEnabled) {
209 if (!empty($queue[
'update'])) {
213 $installQueue = array_merge($this->downloadQueue->resetExtensionInstallStorage(), $installQueue);
218 if ($this->dependencyUtility->hasDependencyErrors()) {
223 $this->downloadQueue->addExtensionToInstallQueue($extension);
224 $installQueue += $this->downloadQueue->resetExtensionInstallStorage();
225 $installedDependencies = [];
226 if ($this->automaticInstallationEnabled) {
230 return array_merge($downloadedDependencies, $updatedDependencies, $installedDependencies);
240 return $this->dependencyUtility->getDependencyErrors();
250 return $this->extensionModelUtility->mapExtensionArrayToModel(
251 $this->installUtility->enrichExtensionWithDetails($extensionKey)
263 return $this->installUtility->isAvailable($extensionKey);
275 $this->installUtility->reloadPackageInformation($extensionKey);
297 $this->dependencyUtility->setSkipDependencyCheck($this->skipDependencyCheck);
298 $this->dependencyUtility->checkDependencies($extension);
300 return !$this->dependencyUtility->hasDependencyErrors();
313 $path = $paths[$this->downloadUtility->getDownloadPath()];
314 $localExtensionStorage = $path . $extensionKey .
'/Initialisation/Extensions/';
315 $this->dependencyUtility->setLocalExtensionStorage($localExtensionStorage);
326 foreach ($copyQueue as $extensionKey => $sourceFolder) {
327 $destination = $installPaths[
'Local'] . $extensionKey;
328 GeneralUtility::mkdir($destination);
329 GeneralUtility::copyDirectory($sourceFolder . $extensionKey, $destination);
331 $this->downloadQueue->removeExtensionFromCopyQueue($extensionKey);
344 $resolvedDependencies = [];
345 foreach ($updateQueue as $extensionToUpdate) {
346 $this->installUtility->uninstall($extensionToUpdate->getExtensionKey());
347 $resolvedDependencies[
'updated'][$extensionToUpdate->getExtensionKey()] = $extensionToUpdate;
349 return $resolvedDependencies;
360 if (empty($installQueue)) {
364 $resolvedDependencies = [];
365 $this->installUtility->install(...array_keys($installQueue));
366 foreach ($installQueue as $extensionKey => $_) {
368 if (!isset($resolvedDependencies[
'installed']) || !is_array($resolvedDependencies[
'installed'])) {
369 $resolvedDependencies[
'installed'] = [];
371 $resolvedDependencies[
'installed'][$extensionKey] = $extensionKey;
373 return $resolvedDependencies;
385 $resolvedDependencies = [];
387 $this->downloadUtility->download($extensionToDownload);
388 $this->downloadQueue->removeExtensionFromQueue($extensionToDownload);
389 $resolvedDependencies[
'downloaded'][$extensionToDownload->getExtensionKey()] = $extensionToDownload;
392 return $resolvedDependencies;
403 $this->dependencyUtility->setSkipDependencyCheck($this->skipDependencyCheck);
404 $this->dependencyUtility->checkDependencies($extension);
405 $installQueue = $this->downloadQueue->getExtensionInstallStorage();
406 if (is_array($installQueue) && !empty($installQueue)) {
407 $installQueue = [
'install' => $installQueue];
409 return array_merge($this->downloadQueue->getExtensionQueue(), $installQueue);
424 $this->downloadUtility->download($extension);
452 if (!isset($this->signalSlotDispatcher)) {
453 $this->signalSlotDispatcher = GeneralUtility::makeInstance(ObjectManager::class)
454 ->get(Dispatcher::class);