Esempio n. 1
0
 /**
  * Export package.
  *
  * @param string $type Package type.
  * @param string $name Package name.
  *
  * @return mixed
  *
  * @Route(
  * "/export/{type:[a-zA-Z0-9_-]+}/{name:[a-zA-Z0-9_-]+}",
  * methods={"GET", "POST"},
  * name="admin-packages-export"
  * )
  */
 public function exportAction($type, $name)
 {
     $package = $this->_getPackage($type, $name);
     if (!$package) {
         return $this->response->redirect(['for' => 'admin-packages']);
     }
     $this->disableFooter();
     $this->view->form = $form = new ExportForm($package, ['name' => $name, 'type' => $type]);
     $skipForm = $type == Manager::PACKAGE_TYPE_THEME;
     if (!$skipForm && (!$this->request->isPost() || !$form->isValid())) {
         return;
     }
     $this->view->disable();
     if ($package) {
         $dependencies = $form->getValues();
         $dependenciesData = [];
         /**
          * Collect modules.
          */
         if (!empty($dependencies['modules'])) {
             foreach ($dependencies['modules'] as $dependency) {
                 $depPackage = $this->_getPackage(Manager::PACKAGE_TYPE_MODULE, $dependency);
                 $dependenciesData[] = ['name' => $dependency, 'type' => Manager::PACKAGE_TYPE_MODULE, 'version' => $depPackage->version];
             }
         }
         /**
          * Collect libraries.
          */
         if (!empty($dependencies['libraries'])) {
             foreach ($dependencies['libraries'] as $dependency) {
                 $depPackage = $this->_getPackage(Manager::PACKAGE_TYPE_LIBRARY, $dependency);
                 $dependenciesData[] = ['name' => $dependency, 'type' => Manager::PACKAGE_TYPE_LIBRARY, 'version' => $depPackage->version];
             }
         }
         $package->setDependencies($dependenciesData);
         $packageManager = new Manager();
         $packageManager->exportPackage($package, ['withTranslations' => $form->getValue('withTranslations')]);
     }
 }