コード例 #1
0
 /**
  * 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;
 }