More tidying.
[yaffs-website] / vendor / drupal / console / src / Command / Locale / LanguageDeleteCommand.php
1 <?php
2
3 /**
4  * @file
5  * Contains \Drupal\Console\Command\Locale\LanguageDeleteDebugCommand.
6  */
7
8 namespace Drupal\Console\Command\Locale;
9
10 use Drupal\Console\Core\Style\DrupalStyle;
11 use Symfony\Component\Console\Input\InputArgument;
12 use Symfony\Component\Console\Input\InputInterface;
13 use Symfony\Component\Console\Output\OutputInterface;
14 use Symfony\Component\Console\Command\Command;
15 use Drupal\Console\Command\Shared\LocaleTrait;
16 use Drupal\Console\Core\Command\Shared\CommandTrait;
17 use Drupal\Core\Extension\ModuleHandlerInterface;
18 use Drupal\Core\Entity\EntityTypeManagerInterface;
19 use Drupal\Console\Utils\Site;
20 use Drupal\Console\Annotations\DrupalCommand;
21
22 /**
23  * @DrupalCommand(
24  *     extension = "locale",
25  *     extensionType = "module"
26  * )
27  */
28 class LanguageDeleteCommand extends Command
29 {
30     use CommandTrait;
31     use LocaleTrait;
32
33     /**
34      * @var Site
35      */
36     protected $site;
37
38     /**
39      * @var EntityTypeManagerInterface
40      */
41     protected $entityTypeManager;
42
43     /**
44      * @var ModuleHandlerInterface
45      */
46     protected $moduleHandler;
47
48     /**
49      * LoginUrlCommand constructor.
50      *
51      * @param Site                       $site
52      * @param EntityTypeManagerInterface $entityTypeManager
53      * @param ModuleHandlerInterface     $moduleHandler
54      */
55     public function __construct(
56         Site $site,
57         EntityTypeManagerInterface $entityTypeManager,
58         ModuleHandlerInterface $moduleHandler
59     ) {
60         $this->site = $site;
61         $this->entityTypeManager = $entityTypeManager;
62         $this->moduleHandler = $moduleHandler;
63         parent::__construct();
64     }
65
66     protected function configure()
67     {
68         $this
69             ->setName('locale:language:delete')
70             ->setDescription($this->trans('commands.locale.language.delete.description'))
71             ->addArgument(
72                 'language',
73                 InputArgument::REQUIRED,
74                 $this->trans('commands.locale.translation.status.arguments.language')
75             );
76     }
77
78     protected function execute(InputInterface $input, OutputInterface $output)
79     {
80         $io = new DrupalStyle($input, $output);
81         $moduleHandler = $this->moduleHandler;
82         $moduleHandler->loadInclude('locale', 'inc', 'locale.translation');
83         $moduleHandler->loadInclude('locale', 'module');
84
85         $language = $input->getArgument('language');
86
87         $languagesObjects = locale_translatable_language_list();
88         $languages = $this->site->getStandardLanguages();
89
90         if (isset($languagesObjects[$language])) {
91             $languageEntity = $languagesObjects[$language];
92         } elseif (array_search($language, $languages)) {
93             $langcode = array_search($language, $languages);
94             $languageEntity = $languagesObjects[$langcode];
95         } else {
96             $io->error(
97                 sprintf(
98                     $this->trans('commands.locale.language.delete.messages.invalid-language'),
99                     $language
100                 )
101             );
102
103             return 1;
104         }
105
106         try {
107             $configurable_language_storage = $this->entityTypeManager->getStorage('configurable_language');
108             $configurable_language_storage->load($languageEntity->getId())->delete();
109
110             $io->info(
111                 sprintf(
112                     $this->trans('commands.locale.language.delete.messages.language-deleted-successfully'),
113                     $languageEntity->getName()
114                 )
115             );
116         } catch (\Exception $e) {
117             $io->error($e->getMessage());
118
119             return 1;
120         }
121
122         return 0;
123     }
124 }