/**
  * Check extension dependencies
  *
  * @param \TYPO3\CMS\Extensionmanager\Domain\Model\Extension $extension
  * @throws \Exception
  */
 public function checkDependenciesAction(\TYPO3\CMS\Extensionmanager\Domain\Model\Extension $extension)
 {
     $message = '';
     $title = '';
     $hasDependencies = FALSE;
     $hasErrors = FALSE;
     try {
         $dependencyTypes = $this->managementService->getAndResolveDependencies($extension);
         if (count($dependencyTypes) > 0) {
             $hasDependencies = TRUE;
             $message = $this->translate('downloadExtension.dependencies.headline');
             foreach ($dependencyTypes as $dependencyType => $dependencies) {
                 $extensions = '';
                 foreach ($dependencies as $extensionKey => $dependency) {
                     $extensions .= $this->translate('downloadExtension.dependencies.extensionWithVersion', array($extensionKey, $dependency->getVersion())) . '<br />';
                 }
                 $message .= $this->translate('downloadExtension.dependencies.typeHeadline', array($this->translate('downloadExtension.dependencyType.' . $dependencyType), $extensions));
             }
             $title = $this->translate('downloadExtension.dependencies.resolveAutomatically');
         }
         $this->view->assign('dependencies', $dependencyTypes);
     } catch (\Exception $e) {
         $hasErrors = TRUE;
         $title = $this->translate('downloadExtension.dependencies.errorTitle');
         $message = $e->getMessage();
     }
     $this->view->assign('extension', $extension)->assign('hasDependencies', $hasDependencies)->assign('hasErrors', $hasErrors)->assign('message', $message)->assign('title', $title);
 }
 /**
  * Check extension dependencies
  *
  * @param \TYPO3\CMS\Extensionmanager\Domain\Model\Extension $extension
  * @throws \Exception
  */
 public function checkDependenciesAction(\TYPO3\CMS\Extensionmanager\Domain\Model\Extension $extension)
 {
     $message = '';
     $title = '';
     $hasDependencies = false;
     $hasErrors = false;
     if ($this->configurationUtility->getCurrentConfiguration('extensionmanager')['automaticInstallation']['value']) {
         $action = 'installFromTer';
         try {
             $dependencyTypes = $this->managementService->getAndResolveDependencies($extension);
             if (!empty($dependencyTypes)) {
                 $hasDependencies = true;
                 $message = '<p>' . $this->translate('downloadExtension.dependencies.headline') . '</p>';
                 foreach ($dependencyTypes as $dependencyType => $dependencies) {
                     $extensions = '';
                     foreach ($dependencies as $extensionKey => $dependency) {
                         $extensions .= $this->translate('downloadExtension.dependencies.extensionWithVersion', array($extensionKey, $dependency->getVersion())) . '<br />';
                     }
                     $message .= $this->translate('downloadExtension.dependencies.typeHeadline', array($this->translate('downloadExtension.dependencyType.' . $dependencyType), $extensions));
                 }
                 $title = $this->translate('downloadExtension.dependencies.resolveAutomatically');
             }
             $this->view->assign('dependencies', $dependencyTypes);
         } catch (\Exception $e) {
             $hasErrors = true;
             $title = $this->translate('downloadExtension.dependencies.errorTitle');
             $message = $e->getMessage();
         }
     } else {
         // if automatic installation is deactivated, no dependency check is needed (download only)
         $action = 'installExtensionWithoutSystemDependencyCheck';
     }
     $this->view->assign('extension', $extension)->assign('action', $action)->assign('hasDependencies', $hasDependencies)->assign('hasErrors', $hasErrors)->assign('message', $message)->assign('title', $title);
 }
Example #3
0
 /**
  * Check extension dependencies
  *
  * @param \TYPO3\CMS\Extensionmanager\Domain\Model\Extension $extension
  * @throws \Exception
  */
 public function checkDependenciesAction(\TYPO3\CMS\Extensionmanager\Domain\Model\Extension $extension)
 {
     $message = '';
     $title = '';
     $hasDependencies = false;
     $hasErrors = false;
     $dependencyTypes = null;
     $configuration = ['value' => ['dependencies' => []]];
     if ($this->configurationUtility->getCurrentConfiguration('extensionmanager')['automaticInstallation']['value']) {
         $action = 'installFromTer';
         try {
             $dependencyTypes = $this->managementService->getAndResolveDependencies($extension);
             if (!empty($dependencyTypes)) {
                 $hasDependencies = true;
                 $message = '<p>' . $this->translate('downloadExtension.dependencies.headline') . '</p>';
                 foreach ($dependencyTypes as $dependencyType => $dependencies) {
                     $extensions = '';
                     foreach ($dependencies as $extensionKey => $dependency) {
                         if (!isset($configuration['value']['dependencies'][$dependencyType])) {
                             $configuration['value']['dependencies'][$dependencyType] = [];
                         }
                         $configuration['value']['dependencies'][$dependencyType][$extensionKey] = ['_exclude' => ['categoryIndexFromStringOrNumber']];
                         $extensions .= $this->translate('downloadExtension.dependencies.extensionWithVersion', [$extensionKey, $dependency->getVersion()]) . '<br />';
                     }
                     $message .= $this->translate('downloadExtension.dependencies.typeHeadline', [$this->translate('downloadExtension.dependencyType.' . $dependencyType), $extensions]);
                 }
                 $title = $this->translate('downloadExtension.dependencies.resolveAutomatically');
             }
         } catch (\Exception $e) {
             $hasErrors = true;
             $title = $this->translate('downloadExtension.dependencies.errorTitle');
             $message = $e->getMessage();
         }
     } else {
         // if automatic installation is deactivated, no dependency check is needed (download only)
         $action = 'installExtensionWithoutSystemDependencyCheck';
     }
     $url = $this->uriBuilder->uriFor($action, ['extension' => $extension->getUid(), 'format' => 'json'], 'Download');
     $this->view->setConfiguration($configuration);
     $this->view->assign('value', ['dependencies' => $dependencyTypes, 'url' => $url, 'message' => $message, 'hasErrors' => $hasErrors, 'hasDependencies' => $hasDependencies, 'title' => $title]);
 }
 /**
  * Check extension dependencies
  *
  * @throws Exception
  * @return void
  */
 public function checkDependenciesAction()
 {
     if (!$this->request->hasArgument('extension')) {
         throw new \Exception('Required argument extension not set.', 1334433342);
     }
     $extensionUid = $this->request->getArgument('extension');
     /** @var $extension \TYPO3\CMS\Extensionmanager\Domain\Model\Extension */
     $extension = $this->extensionRepository->findByUid(intval($extensionUid));
     $dependencyTypes = $this->managementService->getAndResolveDependencies($extension);
     $message = '';
     if (count($dependencyTypes) > 0) {
         // @todo translate and beautify
         $message = 'The following dependencies have to be resolved before installation:<br /><br />';
         foreach ($dependencyTypes as $dependencyType => $dependencies) {
             $message .= '<h3>Extensions marked for ' . $dependencyType . ':</h3>';
             foreach ($dependencies as $extensionKey => $dependency) {
                 $message .= $extensionKey . '<br />';
             }
             $message .= 'Shall these dependencies be resolved automatically?';
         }
     }
     $this->view->assign('dependencies', $dependencyTypes)->assign('extension', $extension)->assign('message', $message);
 }