Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 23 |
CRAP | |
0.00% |
0 / 141 |
cli_iohandler | |
0.00% |
0 / 1 |
|
0.00% |
0 / 23 |
1482 | |
0.00% |
0 / 141 |
set_style | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
get_input | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 12 |
|||
get_raw_input | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
set_input | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
get_server_variable | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
get_header_variable | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
is_secure | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
add_user_form_group | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
send_response | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
add_error_message | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 15 |
|||
add_warning_message | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 11 |
|||
add_log_message | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 7 |
|||
add_success_message | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 11 |
|||
set_task_count | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 27 |
|||
set_progress | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 12 |
|||
finish_progress | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 8 |
|||
request_refresh | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
set_active_stage_menu | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
set_finished_stage_menu | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
set_cookie | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
add_download_link | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
render_update_file_status | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
redirect | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
<?php | |
/** | |
* | |
* This file is part of the phpBB Forum Software package. | |
* | |
* @copyright (c) phpBB Limited <https://www.phpbb.com> | |
* @license GNU General Public License, version 2 (GPL-2.0) | |
* | |
* For full copyright and license information, please see | |
* the docs/CREDITS.txt file. | |
* | |
*/ | |
namespace phpbb\install\helper\iohandler; | |
use phpbb\install\exception\installer_exception; | |
use Symfony\Component\Console\Output\OutputInterface; | |
use Symfony\Component\Console\Style\OutputStyle; | |
/** | |
* Input-Output handler for the CLI frontend | |
*/ | |
class cli_iohandler extends iohandler_base | |
{ | |
/** | |
* @var OutputInterface | |
*/ | |
protected $output; | |
/** | |
* @var OutputStyle | |
*/ | |
protected $io; | |
/** | |
* @var array | |
*/ | |
protected $input_values = array(); | |
/** | |
* @var \Symfony\Component\Console\Helper\ProgressBar | |
*/ | |
protected $progress_bar; | |
/** | |
* Set the style and output used to display feedback; | |
* | |
* @param OutputStyle $style | |
* @param OutputInterface $output | |
*/ | |
public function set_style(OutputStyle $style, OutputInterface $output) | |
{ | |
$this->io = $style; | |
$this->output = $output; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function get_input($name, $default, $multibyte = false) | |
{ | |
$result = $default; | |
if (isset($this->input_values[$name])) | |
{ | |
$result = $this->input_values[$name]; | |
} | |
if ($multibyte) | |
{ | |
return utf8_normalize_nfc($result); | |
} | |
return $result; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function get_raw_input($name, $default) | |
{ | |
return $this->get_input($name, $default, true); | |
} | |
/** | |
* Set input variable | |
* | |
* @param string $name Name of input variable | |
* @param mixed $value Value of input variable | |
*/ | |
public function set_input($name, $value) | |
{ | |
$this->input_values[$name] = $value; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function get_server_variable($name, $default = '') | |
{ | |
return $default; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function get_header_variable($name, $default = '') | |
{ | |
return $default; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function is_secure() | |
{ | |
return false; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function add_user_form_group($title, $form) | |
{ | |
throw new installer_exception('MISSING_DATA'); | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function send_response($no_more_output = false) | |
{ | |
} | |
/** | |
* {@inheritdoc | |
*/ | |
public function add_error_message($error_title, $error_description = false) | |
{ | |
$this->io->newLine(); | |
$message = $this->translate_message($error_title, $error_description); | |
$message_string = $message['title'] . (!empty($message['description']) ? "\n" . $message['description'] : ''); | |
if (strpos($message_string, '<br />') !== false) | |
{ | |
$message_string = strip_tags(str_replace('<br />', "\n", $message_string)); | |
} | |
$this->io->error($message_string); | |
if ($this->progress_bar !== null) | |
{ | |
$this->io->newLine(2); | |
$this->progress_bar->display(); | |
} | |
} | |
/** | |
* {@inheritdoc | |
*/ | |
public function add_warning_message($warning_title, $warning_description = false) | |
{ | |
$this->io->newLine(); | |
$message = $this->translate_message($warning_title, $warning_description); | |
$message_string = $message['title'] . (!empty($message['description']) ? "\n" . $message['description'] : ''); | |
$this->io->warning($message_string); | |
if ($this->progress_bar !== null) | |
{ | |
$this->io->newLine(2); | |
$this->progress_bar->display(); | |
} | |
} | |
/** | |
* {@inheritdoc | |
*/ | |
public function add_log_message($log_title, $log_description = false) | |
{ | |
if ($this->output->getVerbosity() > OutputInterface::VERBOSITY_NORMAL) | |
{ | |
$message = $this->translate_message($log_title, $log_description); | |
$this->output->writeln(sprintf('[%3d/%-3d] ---- %s', $this->current_task_progress, $this->task_progress_count, $message['title'])); | |
} | |
} | |
/** | |
* {@inheritdoc | |
*/ | |
public function add_success_message($error_title, $error_description = false) | |
{ | |
$this->io->newLine(); | |
$message = $this->translate_message($error_title, $error_description); | |
$message_string = $message['title'] . (!empty($message['description']) ? "\n" . $message['description'] : ''); | |
$this->io->success($message_string); | |
if ($this->progress_bar !== null) | |
{ | |
$this->io->newLine(2); | |
$this->progress_bar->display(); | |
} | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function set_task_count($task_count, $restart = false) | |
{ | |
parent::set_task_count($task_count, $restart); | |
if ($this->output->getVerbosity() === OutputInterface::VERBOSITY_NORMAL) | |
{ | |
if ($this->progress_bar !== null) | |
{ | |
// Symfony's ProgressBar is immutable regarding task_count, so delete the old and create a new one. | |
$this->progress_bar->clear(); | |
} | |
else | |
{ | |
$this->io->newLine(2); | |
} | |
$this->progress_bar = $this->io->createProgressBar($task_count); | |
$this->progress_bar->setFormat( | |
" %current:3s%/%max:-3s% %bar% %percent:3s%%\n" . | |
" %message%\n"); | |
$this->progress_bar->setBarWidth(60); | |
if (!defined('PHP_WINDOWS_VERSION_BUILD')) | |
{ | |
$this->progress_bar->setEmptyBarCharacter('░'); // light shade character \u2591 | |
$this->progress_bar->setProgressCharacter(''); | |
$this->progress_bar->setBarCharacter('▓'); // dark shade character \u2593 | |
} | |
$this->progress_bar->setMessage(''); | |
$this->progress_bar->start(); | |
} | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function set_progress($task_lang_key, $task_number) | |
{ | |
parent::set_progress($task_lang_key, $task_number); | |
if ($this->progress_bar !== null) | |
{ | |
$this->progress_bar->setProgress($this->current_task_progress); | |
$this->progress_bar->setMessage($this->current_task_name); | |
} | |
else | |
{ | |
$this->output->writeln(sprintf('[%3d/%-3d] %s', $this->current_task_progress, $this->task_progress_count, $this->current_task_name)); | |
} | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function finish_progress($message_lang_key) | |
{ | |
parent::finish_progress($message_lang_key); | |
if ($this->progress_bar !== null) | |
{ | |
$this->progress_bar->finish(); | |
$this->progress_bar = null; | |
} | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function request_refresh() | |
{ | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function set_active_stage_menu($menu_path) | |
{ | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function set_finished_stage_menu($menu_path) | |
{ | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function set_cookie($cookie_name, $cookie_value) | |
{ | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function add_download_link($route, $title, $msg = null) | |
{ | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function render_update_file_status($status_array) | |
{ | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function redirect($url, $use_ajax = false) | |
{ | |
} | |
} |