Verzeichnisstruktur phpBB-3.2.0
- Veröffentlicht
- 06.01.2017
So funktioniert es
|
Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück |
Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis. |
|
(Beispiel Datei-Icons)
|
Auf das Icon klicken um den Quellcode anzuzeigen |
application.php
001 <?php
002 /**
003 *
004 * This file is part of the phpBB Forum Software package.
005 *
006 * @copyright (c) phpBB Limited <https://www.phpbb.com>
007 * @license GNU General Public License, version 2 (GPL-2.0)
008 *
009 * For full copyright and license information, please see
010 * the docs/CREDITS.txt file.
011 *
012 */
013
014 namespace phpbb\console;
015
016 use Symfony\Component\Console\Input\InputDefinition;
017 use Symfony\Component\Console\Shell;
018 use Symfony\Component\Console\Input\InputInterface;
019 use Symfony\Component\Console\Input\InputOption;
020 use Symfony\Component\Console\Output\OutputInterface;
021
022 class application extends \Symfony\Component\Console\Application
023 {
024 /**
025 * @var bool Indicates whether or not we are in a shell
026 */
027 protected $in_shell = false;
028
029 /**
030 * @var \phpbb\language\language User object
031 */
032 protected $language;
033
034 /**
035 * @param string $name The name of the application
036 * @param string $version The version of the application
037 * @param \phpbb\language\language $language The user which runs the application (used for translation)
038 */
039 public function __construct($name, $version, \phpbb\language\language $language)
040 {
041 $this->language = $language;
042
043 parent::__construct($name, $version);
044 }
045
046 /**
047 * {@inheritdoc}
048 */
049 protected function getDefaultInputDefinition()
050 {
051 $input_definition = parent::getDefaultInputDefinition();
052
053 $this->register_global_options($input_definition);
054
055 return $input_definition;
056 }
057
058 /**
059 * Gets the help message.
060 *
061 * It's a hack of the default help message to display the --shell
062 * option only for the application and not for all the commands.
063 *
064 * @return string A help message.
065 */
066 public function getHelp()
067 {
068 // If we are already in a shell
069 // we do not want to have the --shell option available
070 if ($this->in_shell)
071 {
072 return parent::getHelp();
073 }
074
075 try
076 {
077 $definition = $this->getDefinition();
078 $definition->addOption(new InputOption(
079 '--shell',
080 '-s',
081 InputOption::VALUE_NONE,
082 $this->language->lang('CLI_DESCRIPTION_OPTION_SHELL')
083 ));
084 }
085 catch (\LogicException $e)
086 {
087 // Do nothing
088 }
089
090 return parent::getHelp();
091 }
092
093 /**
094 * Register a set of commands from the container
095 *
096 * @param \phpbb\di\service_collection $command_collection The console service collection
097 */
098 public function register_container_commands(\phpbb\di\service_collection $command_collection)
099 {
100 foreach ($command_collection as $service_command)
101 {
102 $this->add($service_command);
103 }
104 }
105
106 /**
107 * {@inheritdoc}
108 */
109 public function doRun(InputInterface $input, OutputInterface $output)
110 {
111 // Run a shell if the --shell (or -s) option is set and if no command name is specified
112 // Also, we do not want to have the --shell option available if we are already in a shell
113 if (!$this->in_shell && $this->getCommandName($input) === null && $input->hasParameterOption(array('--shell', '-s')))
114 {
115 $shell = new Shell($this);
116 $this->in_shell = true;
117 $shell->run();
118
119 return 0;
120 }
121
122 return parent::doRun($input, $output);
123 }
124
125 /**
126 * Register global options
127 *
128 * @param InputDefinition $definition An InputDefinition instance
129 */
130 protected function register_global_options(InputDefinition $definition)
131 {
132 try
133 {
134 $definition->addOption(new InputOption(
135 'safe-mode',
136 null,
137 InputOption::VALUE_NONE,
138 $this->language->lang('CLI_DESCRIPTION_OPTION_SAFE_MODE')
139 ));
140
141 $definition->addOption(new InputOption(
142 'env',
143 'e',
144 InputOption::VALUE_REQUIRED,
145 $this->language->lang('CLI_DESCRIPTION_OPTION_ENV')
146 ));
147 }
148 catch (\LogicException $e)
149 {
150 // Do nothing
151 }
152 }
153 }
154