site = $site; $this->postUpdateRegistry = $postUpdateRegistry; parent::__construct(); } /** * @inheritdoc */ protected function configure() { $this ->setName('update:debug') ->setDescription($this->trans('commands.update.debug.description')); } /** * @inheritdoc */ protected function execute(InputInterface $input, OutputInterface $output) { $io = new DrupalStyle($input, $output); $this->site->loadLegacyFile('/core/includes/update.inc'); $this->site->loadLegacyFile('/core/includes/install.inc'); drupal_load_updates(); update_fix_compatibility(); $requirements = update_check_requirements(); $severity = drupal_requirements_severity($requirements); $updates = update_get_update_list(); $io->newLine(); if ($severity == REQUIREMENT_ERROR || ($severity == REQUIREMENT_WARNING)) { $this->populateRequirements($io, $requirements); } elseif (empty($updates)) { $io->info($this->trans('commands.update.debug.messages.no-updates')); } else { $this->populateUpdate($io, $updates); $this->populatePostUpdate($io); } } /** * @param \Drupal\Console\Core\Style\DrupalStyle $io * @param $requirements */ private function populateRequirements(DrupalStyle $io, $requirements) { $io->info($this->trans('commands.update.debug.messages.requirements-error')); $tableHeader = [ $this->trans('commands.update.debug.messages.severity'), $this->trans('commands.update.debug.messages.title'), $this->trans('commands.update.debug.messages.value'), $this->trans('commands.update.debug.messages.description'), ]; $tableRows = []; foreach ($requirements as $requirement) { $minimum = in_array( $requirement['minimum schema'], [REQUIREMENT_ERROR, REQUIREMENT_WARNING] ); if ((isset($requirement['minimum schema'])) && ($minimum)) { $tableRows[] = [ $requirement['severity'], $requirement['title'], $requirement['value'], $requirement['description'], ]; } } $io->table($tableHeader, $tableRows); } /** * @param \Drupal\Console\Core\Style\DrupalStyle $io * @param $updates */ private function populateUpdate(DrupalStyle $io, $updates) { $io->info($this->trans('commands.update.debug.messages.module-list')); $tableHeader = [ $this->trans('commands.update.debug.messages.module'), $this->trans('commands.update.debug.messages.update-n'), $this->trans('commands.update.debug.messages.description') ]; $tableRows = []; foreach ($updates as $module => $module_updates) { foreach ($module_updates['pending'] as $update_n => $update) { list(, $description) = explode($update_n . " - ", $update); $tableRows[] = [ $module, $update_n, trim($description), ]; } } $io->table($tableHeader, $tableRows); } /** * @param \Drupal\Console\Core\Style\DrupalStyle $io */ private function populatePostUpdate(DrupalStyle $io) { $io->info( $this->trans('commands.update.debug.messages.module-list-post-update') ); $tableHeader = [ $this->trans('commands.update.debug.messages.module'), $this->trans('commands.update.debug.messages.post-update'), $this->trans('commands.update.debug.messages.description') ]; $postUpdates = $this->postUpdateRegistry->getPendingUpdateInformation(); $tableRows = []; foreach ($postUpdates as $module => $module_updates) { foreach ($module_updates['pending'] as $postUpdateFunction => $message) { $tableRows[] = [ $module, $postUpdateFunction, $message, ]; } } $io->table($tableHeader, $tableRows); } }