/**
  * 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);
     }
 }
 /**
  * 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;
 }