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