/** * Compile the current element */ public function generate() { Runtime::setUp(); $this->loadLanguageFile('composer_client'); $input = \Input::getInstance(); // check the environment $errors = Runtime::checkEnvironment(); if ($errors !== true && count($errors)) { $template = new \BackendTemplate('be_composer_client_errors'); $template->errors = $errors; return $template->parse(); } // check composer.phar is installed if (!file_exists(COMPOSER_DIR_ABSOULTE . '/composer.phar')) { // switch template $template = new \BackendTemplate('be_composer_client_install_composer'); // do install composer library if ($input->post('install')) { $this->updateComposer(); $this->reload(); } return $template->parse(); } if (file_exists(TL_ROOT . '/' . DetachedController::PID_FILE_PATHNAME)) { $controller = new DetachedController(); $output = $controller->handle($input); return $output; } // update composer.phar if requested if ($input->get('update') == 'composer') { $this->updateComposer(); $this->redirect('contao/main.php?do=composer'); } // load composer and the composer class loader $this->loadComposer(); /** @var RootPackage $rootPackage */ $rootPackage = $this->composer->getPackage(); $extra = $rootPackage->getExtra(); $controller = null; // do migration if (!array_key_exists('contao', $extra) || !array_key_exists('migrated', $extra['contao']) || !$extra['contao']['migrated']) { $controller = new MigrationWizardController(); } // do update database if ($input->get('update') == 'database') { $controller = new UpdateDatabaseController(); } // do clear composer cache if ($input->get('clear') == 'composer-cache') { $controller = new ClearComposerCacheController(); } // show tools dialog if ($input->get('tools') == 'dialog') { $controller = new ToolsController(); } // show resync tool if ($input->get('tools') == 'resync') { $controller = new ResyncController(); } // show settings dialog if ($input->get('settings') == 'dialog') { $controller = new SettingsController(); } // show experts editor if ($input->get('settings') == 'experts') { $controller = new ExpertsEditorController(); } // show dependency graph if ($input->get('show') == 'dependency-graph') { $controller = new DependencyGraphController(); } // do search if ($input->get('keyword')) { $controller = new SearchController(); } // do install if ($input->get('install')) { $controller = new DetailsController(); } // do solve if ($input->get('solve')) { $controller = new SolveController(); } // do update packages if ($input->get('update') == 'packages' || $input->post('update') == 'packages') { $controller = new UpdatePackagesController(); } // do pin/unpin package version if ($input->post('pin')) { $controller = new PinController(); } // do remove package if ($input->post('remove')) { $controller = new RemovePackageController(); } if (!$controller) { $controller = new InstalledController(); } $controller->setConfigPathname($this->configPathname); $controller->setIo($this->io); $controller->setComposer($this->composer); $output = $controller->handle($input); chdir(TL_ROOT); return $output; }