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