+++ /dev/null
-<?php
-
-/**
- * @file
- * Contains \Drupal\Console\Command\Theme\Debugommand.
- */
-
-namespace Drupal\Console\Command\Theme;
-
-use Symfony\Component\Console\Input\InputArgument;
-use Symfony\Component\Console\Input\InputInterface;
-use Symfony\Component\Console\Output\OutputInterface;
-use Symfony\Component\Console\Command\Command;
-use Drupal\Console\Core\Command\Shared\CommandTrait;
-use Drupal\Core\Config\ConfigFactory;
-use Drupal\Core\Extension\ThemeHandler;
-use Drupal\Console\Core\Style\DrupalStyle;
-
-class DebugCommand extends Command
-{
- use CommandTrait;
-
- /**
- * @var ConfigFactory
- */
- protected $configFactory;
-
- /**
- * @var ThemeHandler
- */
- protected $themeHandler;
-
- /**
- * DebugCommand constructor.
- *
- * @param ConfigFactory $configFactory
- * @param ThemeHandler $themeHandler
- */
- public function __construct(
- ConfigFactory $configFactory,
- ThemeHandler $themeHandler
- ) {
- $this->configFactory = $configFactory;
- $this->themeHandler = $themeHandler;
- parent::__construct();
- }
-
- protected function configure()
- {
- $this
- ->setName('theme:debug')
- ->setDescription($this->trans('commands.theme.debug.description'))
- ->addArgument('theme', InputArgument::OPTIONAL, $this->trans('commands.theme.debug.arguments.theme'));
- }
-
- protected function execute(InputInterface $input, OutputInterface $output)
- {
- $io = new DrupalStyle($input, $output);
-
- $theme = $input->getArgument('theme');
- if ($theme) {
- $this->themeDetail($io, $theme);
- } else {
- $this->themeList($io);
- }
- }
-
- protected function themeList(DrupalStyle $io)
- {
- $tableHeader = [
- $this->trans('commands.theme.debug.messages.theme-id'),
- $this->trans('commands.theme.debug.messages.theme-name'),
- $this->trans('commands.theme.debug.messages.status'),
- $this->trans('commands.theme.debug.messages.version'),
- ];
-
- $themes = $this->themeHandler->rebuildThemeData();
- $tableRows = [];
- foreach ($themes as $themeId => $theme) {
- $status = $this->getThemeStatus($theme);
- $tableRows[] = [
- $themeId, $theme->info['name'],
- $status, $theme->info['version'],
- ];
- }
-
- $io->table($tableHeader, $tableRows);
- }
-
- protected function themeDetail(DrupalStyle $io, $themeId)
- {
- $theme = null;
- $themes = $this->themeHandler->rebuildThemeData();
-
- if (isset($themes[$themeId])) {
- $theme = $themes[$themeId];
- } else {
- foreach ($themes as $themeAvailableId => $themeAvailable) {
- if ($themeAvailable->info['name'] == $themeId) {
- $themeId = $themeAvailableId;
- $theme = $themeAvailable;
- break;
- }
- }
- }
-
- if ($theme) {
- $theme = $themes[$themeId];
- $status = $this->getThemeStatus($themeId);
-
- $io->info($theme->info['name']);
-
- $io->comment(
- sprintf(
- '%s : ',
- $this->trans('commands.theme.debug.messages.status')
- ),
- false
- );
- $io->writeln($status);
- $io->comment(
- sprintf(
- '%s : ',
- $this->trans('commands.theme.debug.messages.version')
- ),
- false
- );
- $io->writeln($theme->info['version']);
- $io->comment($this->trans('commands.theme.debug.messages.regions'));
- $tableRows = $this->addThemeAttributes($theme->info['regions'], $tableRows);
- $io->table([], $tableRows);
- } else {
- $io->error(
- sprintf(
- $this->trans('commands.theme.debug.messages.invalid-theme'),
- $themeId
- )
- );
- }
- }
-
- protected function getThemeStatus($theme)
- {
- $defaultTheme = $this->configFactory->get('system.theme')->get('default');
-
- $status = ($theme->status)?$this->trans('commands.theme.debug.messages.installed'):$this->trans('commands.theme.debug.messages.uninstalled');
- if ($defaultTheme == $theme) {
- $status = $this->trans('commands.theme.debug.messages.default-theme');
- }
-
- return $status;
- }
-
- protected function addThemeAttributes($attr, $tableRows = [])
- {
- foreach ($attr as $key => $value) {
- if (is_array($value)) {
- $tableRows = $this->addThemeAttributes($value, $tableRows);
- } else {
- $tableRows[] = [
- $key,
- $value,
- ];
- }
- }
-
- return $tableRows;
- }
-}