1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-08-14 12:44:06 +02:00

[ticket/13740] Move installer files to phpbb/install directory

PHPBB3-13740
This commit is contained in:
CHItA
2015-06-13 15:35:19 +02:00
committed by Mate Bartus
parent db4cfa7df6
commit 3dcaa48850
56 changed files with 0 additions and 3 deletions

View File

@@ -0,0 +1,272 @@
<?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;
/**
* Input-Output handler for the AJAX frontend
*/
class ajax_iohandler extends iohandler_base
{
/**
* @var \phpbb\request\request_interface
*/
protected $request;
/**
* @var \phpbb\template\template
*/
protected $template;
/**
* @var string
*/
protected $form;
/**
* @var bool
*/
protected $request_client_refresh;
/**
* @var array
*/
protected $nav_data;
/**
* Constructor
*
* @param \phpbb\request\request_interface $request HTTP request interface
* @param \phpbb\template\template $template Template engine
*/
public function __construct(\phpbb\request\request_interface $request, \phpbb\template\template $template)
{
$this->request = $request;
$this->template = $template;
$this->form = '';
$this->nav_data = array();
parent::__construct();
}
/**
* {@inheritdoc}
*/
public function get_input($name, $default, $multibyte = false)
{
return $this->request->variable($name, $default, $multibyte);
}
/**
* {@inheritdoc}
*/
public function get_server_variable($name, $default = '')
{
return $this->request->server($name, $default);
}
/**
* {@inheritdoc}
*/
public function get_header_variable($name, $default = '')
{
return $this->request->header($name, $default);
}
/**
* {@inheritdoc}
*/
public function is_secure()
{
return $this->request->is_secure();
}
/**
* {@inheritdoc}
*/
public function add_user_form_group($title, $form)
{
//
// This code is pretty ugly... but works
//
$this->template->assign_var('S_FORM_ELEM_COUNT', sizeof($form));
$this->template->assign_block_vars('options', array(
'LEGEND' => $this->language->lang($title),
'S_LEGEND' => true,
));
foreach ($form as $input_name => $input_options)
{
if (!isset($input_options['type']))
{
continue;
}
$tpl_ary = array();
$tpl_ary['TYPE'] = $input_options['type'];
$tpl_ary['TITLE'] = $this->language->lang($input_options['label']);
$tpl_ary['KEY'] = $input_name;
$tpl_ary['S_EXPLAIN'] = false;
if (isset($input_options['default']))
{
$default = $input_options['default'];
$default = preg_replace_callback('#\{L_([A-Z0-9\-_]*)\}#s', array($this, 'lang_replace_callback'), $default);
$tpl_ary['DEFAULT'] = $default;
}
if (isset($input_options['description']))
{
$tpl_ary['TITLE_EXPLAIN'] = $this->language->lang($input_options['description']);
$tpl_ary['S_EXPLAIN'] = true;
}
if (in_array($input_options['type'], array('select', 'radio')))
{
for ($i = 0, $total = sizeof($input_options['options']); $i < $total; $i++)
{
if (isset($input_options['options'][$i]['label']))
{
$input_options['options'][$i]['label'] = $this->language->lang($input_options['options'][$i]['label']);
}
}
$tpl_ary['OPTIONS'] = $input_options['options'];
}
$this->template->assign_block_vars('options', $tpl_ary);
}
$this->template->set_filenames(array(
'form_install' => 'installer_form.html',
));
$this->form = $this->template->assign_display('form_install');
}
/**
* {@inheritdoc}
*/
public function send_response()
{
$json_data_array = $this->prepare_json_array();
$json_data = json_encode($json_data_array);
// Try to push content to the browser
print (str_pad(' ', 4096) . "\n");
print ($json_data . "\n\n");
flush();
}
/**
* Prepares iohandler's data to be sent out to the client.
*
* @return array
*/
protected function prepare_json_array()
{
$json_array = array(
'errors' => $this->errors,
'warnings' => $this->warnings,
'logs' => $this->logs,
);
if (!empty($this->form))
{
$json_array['form'] = $this->form;
$this->form = '';
}
// If current task name is set, we push progress message to the client side
if (!empty($this->current_task_name))
{
$json_array['progress'] = array(
'task_name' => $this->current_task_name,
'task_num' => $this->current_task_progress,
'task_count' => $this->task_progress_count,
);
}
if (!empty($this->nav_data))
{
$json_array['nav'] = $this->nav_data;
}
$this->errors = array();
$this->warnings = array();
$this->logs = array();
$this->nav_data = array();
if ($this->request_client_refresh)
{
$json_array['refresh'] = true;
$this->request_client_refresh = false;
}
return $json_array;
}
/**
* {@inheritdoc}
*/
public function set_progress($task_lang_key, $task_number)
{
parent::set_progress($task_lang_key, $task_number);
$this->send_response();
}
/**
* {@inheritdoc}
*/
public function request_refresh()
{
$this->request_client_refresh = true;
}
/**
* {@inheritdoc}
*/
public function set_active_stage_menu($menu_path)
{
$this->nav_data['active'] = $menu_path[sizeof($menu_path) - 1];
$this->send_response();
}
/**
* {@inheritdoc}
*/
public function set_finished_stage_menu($menu_path)
{
$this->nav_data['finished'][] = $menu_path[sizeof($menu_path) - 1];
$this->send_response();
}
/**
* Callback function for language replacing
*
* @param array $matches
* @return string
*/
public function lang_replace_callback($matches)
{
if (!empty($matches[1]))
{
return $this->language->lang($matches[1]);
}
return '';
}
}

View File

@@ -0,0 +1,19 @@
<?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\exception;
class iohandler_not_implemented_exception extends \Exception
{
}

View File

@@ -0,0 +1,76 @@
<?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\helper\iohandler\exception\iohandler_not_implemented_exception;
/**
* Input-output handler factory
*/
class factory
{
/**
* @var \Symfony\Component\DependencyInjection\ContainerInterface
*/
protected $container;
/**
* @var string
*/
protected $environment;
/**
* Constructor
*
* @param \Symfony\Component\DependencyInjection\ContainerInterface $container Dependency injection container
*/
public function __construct(\Symfony\Component\DependencyInjection\ContainerInterface $container)
{
$this->container = $container;
$this->environment = null;
}
/**
* @param string $environment The name of the input-output handler to use
*/
public function set_environment($environment)
{
$this->environment = $environment;
}
/**
* Factory getter for iohandler
*
* @return \phpbb\install\helper\iohandler\iohandler_interface
*
* @throws \phpbb\install\helper\iohandler\exception\iohandler_not_implemented_exception
* When the specified iohandler_interface does not exists
*/
public function get()
{
switch ($this->environment)
{
case 'ajax':
return $this->container->get('installer.helper.iohandler_ajax');
break;
case 'nojs':
// @todo replace this
return $this->container->get('installer.helper.iohandler_ajax');
break;
default:
throw new iohandler_not_implemented_exception();
break;
}
}
}

View File

@@ -0,0 +1,158 @@
<?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;
/**
* Base class for installer input-output handlers
*/
abstract class iohandler_base implements iohandler_interface
{
/**
* Array of errors
*
* Errors should be added, when the installation cannot continue without
* user interaction. If the aim is to notify the user about something, please
* use a warning instead.
*
* @var array
*/
protected $errors;
/**
* Array of warnings
*
* @var array
*/
protected $warnings;
/**
* Array of logs
*
* @var array
*/
protected $logs;
/**
* @var \phpbb\language\language
*/
protected $language;
/**
* @var int
*/
protected $task_progress_count;
/**
* @var int
*/
protected $current_task_progress;
/**
* @var string
*/
protected $current_task_name;
/**
* Constructor
*/
public function __construct()
{
$this->errors = array();
$this->warnings = array();
$this->logs = array();
$this->task_progress_count = 0;
$this->current_task_progress = 0;
$this->current_task_name = '';
}
/**
* Set language service
*
* @param \phpbb\language\language $language
*/
public function set_language(\phpbb\language\language $language)
{
$this->language = $language;
}
/**
* {@inheritdoc}
*/
public function add_error_message($error_title, $error_description = false)
{
$this->errors[] = $this->translate_message($error_title, $error_description);
}
/**
* {@inheritdoc}
*/
public function add_warning_message($warning_title, $warning_description = false)
{
$this->warnings[] = $this->translate_message($warning_title, $warning_description);
}
/**
* {@inheritdoc}
*/
public function add_log_message($log_title, $log_description = false)
{
$this->logs[] = $this->translate_message($log_title, $log_description);
}
/**
* {@inheritdoc}
*/
public function set_task_count($task_count)
{
$this->task_progress_count = $task_count;
}
/**
* {@inheritdoc}
*/
public function set_progress($task_lang_key, $task_number)
{
if (!empty($task_lang_key))
{
$this->current_task_name = $this->language->lang($task_lang_key);
$this->current_task_progress = $task_number;
}
}
/**
* Localize message.
*
* Note: When an array is passed into the parameters below, it will be
* resolved as printf($param[0], $param[1], ...).
*
* @param array|string $title Title of the message
* @param array|string|bool $description Description of the message
*
* @return array Localized message in an array
*/
protected function translate_message($title, $description)
{
$message_array = array();
$message_array['title'] = call_user_func_array(array($this->language, 'lang'), (array) $title);
if ($description !== false)
{
$message_array['description'] = call_user_func_array(array($this->language, 'lang'), (array) $description);
}
return $message_array;
}
}

View File

@@ -0,0 +1,145 @@
<?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;
/**
* Input-Output handler interface for the installer
*/
interface iohandler_interface
{
/**
* Renders or returns response message
*/
public function send_response();
/**
* Returns input variable
*
* @param string $name Name of the input variable to obtain
* @param mixed $default A default value that is returned if the variable was not set.
* This function will always return a value of the same type as the default.
* @param bool $multibyte If $default is a string this paramater has to be true if the variable may contain any UTF-8 characters
* Default is false, causing all bytes outside the ASCII range (0-127) to be replaced with question marks
*
* @return mixed Value of the input variable
*/
public function get_input($name, $default, $multibyte = false);
/**
* Returns server variable
*
* This function should work the same as request_interterface::server().
*
* @param string $name Name of the server variable
* @param mixed $default Default value to return when the requested variable does not exist
*
* @return mixed Value of the server variable
*/
public function get_server_variable($name, $default = '');
/**
* Wrapper function for request_interterface::header()
*
* @param string $name Name of the request header variable
* @param mixed $default Default value to return when the requested variable does not exist
*
* @return mixed
*/
public function get_header_variable($name, $default = '');
/**
* Returns true if the connection is encrypted
*
* @return bool
*/
public function is_secure();
/**
* Adds an error message to the rendering queue
*
* Note: When an array is passed into the parameters below, it will be
* resolved as printf($param[0], $param[1], ...).
*
* @param string|array $error_title Title of the error message.
* @param string|bool|array $error_description Description of the error (and possibly guidelines to resolve it),
* or false if the error description is not available.
*/
public function add_error_message($error_title, $error_description = false);
/**
* Adds a warning message to the rendering queue
*
* Note: When an array is passed into the parameters below, it will be
* resolved as printf($param[0], $param[1], ...).
*
* @param string|array $warning_title Title of the warning message
* @param string|bool|array $warning_description Description of the warning (and possibly guidelines to resolve it),
* or false if the error description is not available
*/
public function add_warning_message($warning_title, $warning_description = false);
/**
* Adds a log message to the rendering queue
*
* Note: When an array is passed into the parameters below, it will be
* resolved as printf($param[0], $param[1], ...).
*
* @param string|array $log_title Title of the log message
* @param string|bool|array $log_description Description of the log (and possibly guidelines to resolve it),
* or false if the error description is not available
*/
public function add_log_message($log_title, $log_description = false);
/**
* Adds a requested data group to the rendering queue
*
* @param string $title Language variable with the title of the form
* @param array $form An array describing the required data (options etc)
*/
public function add_user_form_group($title, $form);
/**
* Sets the number of tasks belonging to the installer in the current mode.
*
* @param int $task_count Number of tasks
*/
public function set_task_count($task_count);
/**
* Sets the progress information
*
* @param string $task_lang_key Language key for the name of the task
* @param int $task_number Position of the current task in the task queue
*/
public function set_progress($task_lang_key, $task_number);
/**
* Sends refresh request to the client
*/
public function request_refresh();
/**
* Marks stage as active in the navigation bar
*
* @param array $menu_path Array to the navigation elem
*/
public function set_active_stage_menu($menu_path);
/**
* Marks stage as completed in the navigation bar
*
* @param array $menu_path Array to the navigation elem
*/
public function set_finished_stage_menu($menu_path);
}