Verzeichnisstruktur phpBB-3.3.15
- Veröffentlicht
- 28.08.2024
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 |
cli_iohandler.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\install\helper\iohandler;
015
016 use phpbb\install\exception\installer_exception;
017 use Symfony\Component\Console\Output\OutputInterface;
018 use Symfony\Component\Console\Style\OutputStyle;
019
020 /**
021 * Input-Output handler for the CLI frontend
022 */
023 class cli_iohandler extends iohandler_base
024 {
025 /**
026 * @var OutputInterface
027 */
028 protected $output;
029
030 /**
031 * @var OutputStyle
032 */
033 protected $io;
034
035 /**
036 * @var array
037 */
038 protected $input_values = array();
039
040 /**
041 * @var \Symfony\Component\Console\Helper\ProgressBar
042 */
043 protected $progress_bar;
044
045 /**
046 * Set the style and output used to display feedback;
047 *
048 * @param OutputStyle $style
049 * @param OutputInterface $output
050 */
051 public function set_style(OutputStyle $style, OutputInterface $output)
052 {
053 $this->io = $style;
054 $this->output = $output;
055 }
056
057 /**
058 * {@inheritdoc}
059 */
060 public function get_input($name, $default, $multibyte = false)
061 {
062 $result = $default;
063
064 if (isset($this->input_values[$name]))
065 {
066 $result = $this->input_values[$name];
067 }
068
069 if ($multibyte)
070 {
071 return utf8_normalize_nfc($result);
072 }
073
074 return $result;
075 }
076
077 /**
078 * {@inheritdoc}
079 */
080 public function get_raw_input($name, $default)
081 {
082 return $this->get_input($name, $default, true);
083 }
084
085 /**
086 * Set input variable
087 *
088 * @param string $name Name of input variable
089 * @param mixed $value Value of input variable
090 */
091 public function set_input($name, $value)
092 {
093 $this->input_values[$name] = $value;
094 }
095
096 /**
097 * {@inheritdoc}
098 */
099 public function get_server_variable($name, $default = '')
100 {
101 return $default;
102 }
103
104 /**
105 * {@inheritdoc}
106 */
107 public function get_header_variable($name, $default = '')
108 {
109 return $default;
110 }
111
112 /**
113 * {@inheritdoc}
114 */
115 public function is_secure()
116 {
117 return false;
118 }
119
120 /**
121 * {@inheritdoc}
122 */
123 public function add_user_form_group($title, $form)
124 {
125 throw new installer_exception('MISSING_DATA');
126 }
127
128 /**
129 * {@inheritdoc}
130 */
131 public function send_response($no_more_output = false)
132 {
133 }
134
135 /**
136 * {@inheritdoc
137 */
138 public function add_error_message($error_title, $error_description = false)
139 {
140 $this->io->newLine();
141 $message = $this->translate_message($error_title, $error_description);
142 $message_string = $message['title'] . (!empty($message['description']) ? "\n" . $message['description'] : '');
143
144 if (strpos($message_string, '<br />') !== false)
145 {
146 $message_string = strip_tags(str_replace('<br />', "\n", $message_string));
147 }
148
149 $this->io->error($message_string);
150
151 if ($this->progress_bar !== null)
152 {
153 $this->io->newLine(2);
154 $this->progress_bar->display();
155 }
156 }
157
158 /**
159 * {@inheritdoc
160 */
161 public function add_warning_message($warning_title, $warning_description = false)
162 {
163 $this->io->newLine();
164
165 $message = $this->translate_message($warning_title, $warning_description);
166 $message_string = $message['title'] . (!empty($message['description']) ? "\n" . $message['description'] : '');
167 $this->io->warning($message_string);
168
169 if ($this->progress_bar !== null)
170 {
171 $this->io->newLine(2);
172 $this->progress_bar->display();
173 }
174 }
175
176 /**
177 * {@inheritdoc
178 */
179 public function add_log_message($log_title, $log_description = false)
180 {
181 if ($this->output->getVerbosity() > OutputInterface::VERBOSITY_NORMAL)
182 {
183 $message = $this->translate_message($log_title, $log_description);
184 $this->output->writeln(sprintf('[%3d/%-3d] ---- %s', $this->current_task_progress, $this->task_progress_count, $message['title']));
185 }
186 }
187
188 /**
189 * {@inheritdoc
190 */
191 public function add_success_message($error_title, $error_description = false)
192 {
193 $this->io->newLine();
194
195 $message = $this->translate_message($error_title, $error_description);
196 $message_string = $message['title'] . (!empty($message['description']) ? "\n" . $message['description'] : '');
197 $this->io->success($message_string);
198
199 if ($this->progress_bar !== null)
200 {
201 $this->io->newLine(2);
202 $this->progress_bar->display();
203 }
204 }
205
206 /**
207 * {@inheritdoc}
208 */
209 public function set_task_count($task_count, $restart = false)
210 {
211 parent::set_task_count($task_count, $restart);
212
213 if ($this->output->getVerbosity() === OutputInterface::VERBOSITY_NORMAL)
214 {
215 if ($this->progress_bar !== null)
216 {
217 // Symfony's ProgressBar is immutable regarding task_count, so delete the old and create a new one.
218 $this->progress_bar->clear();
219 }
220 else
221 {
222 $this->io->newLine(2);
223 }
224
225 $this->progress_bar = $this->io->createProgressBar($task_count);
226 $this->progress_bar->setFormat(
227 " %current:3s%/%max:-3s% %bar% %percent:3s%%\n" .
228 " %message%\n");
229 $this->progress_bar->setBarWidth(60);
230
231 if (!defined('PHP_WINDOWS_VERSION_BUILD'))
232 {
233 $this->progress_bar->setEmptyBarCharacter('░'); // light shade character \u2591
234 $this->progress_bar->setProgressCharacter('');
235 $this->progress_bar->setBarCharacter('▓'); // dark shade character \u2593
236 }
237
238 $this->progress_bar->setMessage('');
239 $this->progress_bar->start();
240 }
241 }
242
243 /**
244 * {@inheritdoc}
245 */
246 public function set_progress($task_lang_key, $task_number)
247 {
248 parent::set_progress($task_lang_key, $task_number);
249
250 if ($this->progress_bar !== null)
251 {
252 $this->progress_bar->setProgress($this->current_task_progress);
253 $this->progress_bar->setMessage($this->current_task_name);
254 }
255 else
256 {
257 $this->output->writeln(sprintf('[%3d/%-3d] %s', $this->current_task_progress, $this->task_progress_count, $this->current_task_name));
258 }
259 }
260
261 /**
262 * {@inheritdoc}
263 */
264 public function finish_progress($message_lang_key)
265 {
266 parent::finish_progress($message_lang_key);
267
268 if ($this->progress_bar !== null)
269 {
270 $this->progress_bar->finish();
271 $this->progress_bar = null;
272 }
273 }
274
275 /**
276 * {@inheritdoc}
277 */
278 public function request_refresh()
279 {
280 }
281
282 /**
283 * {@inheritdoc}
284 */
285 public function set_active_stage_menu($menu_path)
286 {
287 }
288
289 /**
290 * {@inheritdoc}
291 */
292 public function set_finished_stage_menu($menu_path)
293 {
294 }
295
296 /**
297 * {@inheritdoc}
298 */
299 public function set_cookie($cookie_name, $cookie_value)
300 {
301 }
302
303 /**
304 * {@inheritdoc}
305 */
306 public function add_download_link($route, $title, $msg = null)
307 {
308 }
309
310 /**
311 * {@inheritdoc}
312 */
313 public function render_update_file_status($status_array)
314 {
315 }
316
317 /**
318 * {@inheritdoc}
319 */
320 public function redirect($url, $use_ajax = false)
321 {
322 }
323 }
324