PDF rausgenommen
This commit is contained in:
@ -0,0 +1,33 @@
|
||||
<?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\module\obtain_data;
|
||||
|
||||
class install_module extends \phpbb\install\module_base
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function get_navigation_stage_path()
|
||||
{
|
||||
return array('install', 0, 'obtain_data');
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function get_step_count()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
@ -0,0 +1,218 @@
|
||||
<?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\module\obtain_data\task;
|
||||
|
||||
use phpbb\install\exception\user_interaction_required_exception;
|
||||
|
||||
/**
|
||||
* This class requests and validates admin account data from the user
|
||||
*/
|
||||
class obtain_admin_data extends \phpbb\install\task_base implements \phpbb\install\task_interface
|
||||
{
|
||||
/**
|
||||
* @var \phpbb\install\helper\config
|
||||
*/
|
||||
protected $install_config;
|
||||
|
||||
/**
|
||||
* @var \phpbb\install\helper\iohandler\iohandler_interface
|
||||
*/
|
||||
protected $io_handler;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param \phpbb\install\helper\config $install_config Installer's config helper
|
||||
* @param \phpbb\install\helper\iohandler\iohandler_interface $iohandler Installer's input-output handler
|
||||
*/
|
||||
public function __construct(\phpbb\install\helper\config $install_config,
|
||||
\phpbb\install\helper\iohandler\iohandler_interface $iohandler)
|
||||
{
|
||||
$this->install_config = $install_config;
|
||||
$this->io_handler = $iohandler;
|
||||
|
||||
parent::__construct(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function run()
|
||||
{
|
||||
// Check if data is sent
|
||||
if ($this->io_handler->get_input('submit_admin', false))
|
||||
{
|
||||
$this->process_form();
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->request_form_data();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Process form data
|
||||
*/
|
||||
protected function process_form()
|
||||
{
|
||||
// Admin data
|
||||
$admin_name = $this->io_handler->get_input('admin_name', '', true);
|
||||
$admin_pass1 = $this->io_handler->get_input('admin_pass1', '', true);
|
||||
$admin_pass2 = $this->io_handler->get_input('admin_pass2', '', true);
|
||||
$board_email = $this->io_handler->get_input('board_email', '', true);
|
||||
|
||||
$admin_data_valid = $this->check_admin_data($admin_name, $admin_pass1, $admin_pass2, $board_email);
|
||||
|
||||
if ($admin_data_valid)
|
||||
{
|
||||
$this->install_config->set('admin_name', $admin_name);
|
||||
$this->install_config->set('admin_passwd', $admin_pass1);
|
||||
$this->install_config->set('board_email', $board_email);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->request_form_data(true);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Request data from the user
|
||||
*
|
||||
* @param bool $use_request_data Whether to use submited data
|
||||
*
|
||||
* @throws \phpbb\install\exception\user_interaction_required_exception When the user is required to provide data
|
||||
*/
|
||||
protected function request_form_data($use_request_data = false)
|
||||
{
|
||||
if ($use_request_data)
|
||||
{
|
||||
$admin_username = $this->io_handler->get_input('admin_name', '', true);
|
||||
$admin_email = $this->io_handler->get_input('board_email', '', true);
|
||||
}
|
||||
else
|
||||
{
|
||||
$admin_username = '';
|
||||
$admin_email = '';
|
||||
}
|
||||
|
||||
$admin_form = array(
|
||||
'admin_name' => array(
|
||||
'label' => 'ADMIN_USERNAME',
|
||||
'description' => 'ADMIN_USERNAME_EXPLAIN',
|
||||
'type' => 'text',
|
||||
'default' => $admin_username,
|
||||
),
|
||||
'board_email' => array(
|
||||
'label' => 'CONTACT_EMAIL',
|
||||
'type' => 'email',
|
||||
'default' => $admin_email,
|
||||
),
|
||||
'admin_pass1' => array(
|
||||
'label' => 'ADMIN_PASSWORD',
|
||||
'description' => 'ADMIN_PASSWORD_EXPLAIN',
|
||||
'type' => 'password',
|
||||
),
|
||||
'admin_pass2' => array(
|
||||
'label' => 'ADMIN_PASSWORD_CONFIRM',
|
||||
'type' => 'password',
|
||||
),
|
||||
'submit_admin' => array(
|
||||
'label' => 'SUBMIT',
|
||||
'type' => 'submit',
|
||||
),
|
||||
);
|
||||
|
||||
$this->io_handler->add_user_form_group('ADMIN_CONFIG', $admin_form);
|
||||
|
||||
// Require user interaction
|
||||
throw new user_interaction_required_exception();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check admin data
|
||||
*
|
||||
* @param string $username Admin username
|
||||
* @param string $pass1 Admin password
|
||||
* @param string $pass2 Admin password confirmation
|
||||
* @param string $email Admin e-mail address
|
||||
*
|
||||
* @return bool True if data is valid, false otherwise
|
||||
*/
|
||||
protected function check_admin_data($username, $pass1, $pass2, $email)
|
||||
{
|
||||
$data_valid = true;
|
||||
|
||||
// Check if none of admin data is empty
|
||||
if (in_array('', array($username, $pass1, $pass2, $email), true))
|
||||
{
|
||||
$this->io_handler->add_error_message('INST_ERR_MISSING_DATA');
|
||||
$data_valid = false;
|
||||
}
|
||||
|
||||
if (utf8_strlen($username) < 3)
|
||||
{
|
||||
$this->io_handler->add_error_message('INST_ERR_USER_TOO_SHORT');
|
||||
$data_valid = false;
|
||||
}
|
||||
|
||||
if (utf8_strlen($username) > 20)
|
||||
{
|
||||
$this->io_handler->add_error_message('INST_ERR_USER_TOO_LONG');
|
||||
$data_valid = false;
|
||||
}
|
||||
|
||||
if ($pass1 !== $pass2 && $pass1 !== '')
|
||||
{
|
||||
$this->io_handler->add_error_message('INST_ERR_PASSWORD_MISMATCH');
|
||||
$data_valid = false;
|
||||
}
|
||||
|
||||
// Test against the default password rules
|
||||
if (utf8_strlen($pass1) < 6)
|
||||
{
|
||||
$this->io_handler->add_error_message('INST_ERR_PASSWORD_TOO_SHORT');
|
||||
$data_valid = false;
|
||||
}
|
||||
|
||||
if (utf8_strlen($pass1) > 30)
|
||||
{
|
||||
$this->io_handler->add_error_message('INST_ERR_PASSWORD_TOO_LONG');
|
||||
$data_valid = false;
|
||||
}
|
||||
|
||||
if (!preg_match('/^' . get_preg_expression('email') . '$/i', $email))
|
||||
{
|
||||
$this->io_handler->add_error_message('INST_ERR_EMAIL_INVALID');
|
||||
$data_valid = false;
|
||||
}
|
||||
|
||||
return $data_valid;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
static public function get_step_count()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function get_task_lang_name()
|
||||
{
|
||||
return '';
|
||||
}
|
||||
}
|
@ -0,0 +1,185 @@
|
||||
<?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\module\obtain_data\task;
|
||||
|
||||
use phpbb\install\exception\user_interaction_required_exception;
|
||||
|
||||
/**
|
||||
* This class obtains default data from the user related to board (Board name, Board descritpion, etc...)
|
||||
*/
|
||||
class obtain_board_data extends \phpbb\install\task_base implements \phpbb\install\task_interface
|
||||
{
|
||||
/**
|
||||
* @var \phpbb\install\helper\config
|
||||
*/
|
||||
protected $install_config;
|
||||
|
||||
/**
|
||||
* @var \phpbb\install\helper\iohandler\iohandler_interface
|
||||
*/
|
||||
protected $io_handler;
|
||||
|
||||
/**
|
||||
* @var \phpbb\language\language_file_helper
|
||||
*/
|
||||
protected $language_helper;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param \phpbb\install\helper\config $config Installer's config
|
||||
* @param \phpbb\install\helper\iohandler\iohandler_interface $iohandler Installer's input-output handler
|
||||
* @param \phpbb\language\language_file_helper $lang_helper Language file helper
|
||||
*/
|
||||
public function __construct(\phpbb\install\helper\config $config,
|
||||
\phpbb\install\helper\iohandler\iohandler_interface $iohandler,
|
||||
\phpbb\language\language_file_helper $lang_helper)
|
||||
{
|
||||
$this->install_config = $config;
|
||||
$this->io_handler = $iohandler;
|
||||
$this->language_helper = $lang_helper;
|
||||
|
||||
parent::__construct(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function run()
|
||||
{
|
||||
// Check if data is sent
|
||||
if ($this->io_handler->get_input('submit_board', false))
|
||||
{
|
||||
$this->process_form();
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->request_form_data();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Process form data
|
||||
*/
|
||||
protected function process_form()
|
||||
{
|
||||
// Board data
|
||||
$default_lang = $this->io_handler->get_input('default_lang', '');
|
||||
$board_name = $this->io_handler->get_input('board_name', '', true);
|
||||
$board_desc = $this->io_handler->get_input('board_description', '', true);
|
||||
|
||||
// Check default lang
|
||||
$langs = $this->language_helper->get_available_languages();
|
||||
$lang_valid = false;
|
||||
|
||||
foreach ($langs as $lang)
|
||||
{
|
||||
if ($lang['iso'] === $default_lang)
|
||||
{
|
||||
$lang_valid = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$this->install_config->set('board_name', $board_name);
|
||||
$this->install_config->set('board_description', $board_desc);
|
||||
|
||||
if ($lang_valid)
|
||||
{
|
||||
$this->install_config->set('default_lang', $default_lang);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->request_form_data(true);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Request data from the user
|
||||
*
|
||||
* @param bool $use_request_data Whether to use submited data
|
||||
*
|
||||
* @throws \phpbb\install\exception\user_interaction_required_exception When the user is required to provide data
|
||||
*/
|
||||
protected function request_form_data($use_request_data = false)
|
||||
{
|
||||
if ($use_request_data)
|
||||
{
|
||||
$board_name = $this->io_handler->get_input('board_name', '', true);
|
||||
$board_desc = $this->io_handler->get_input('board_description', '', true);
|
||||
}
|
||||
else
|
||||
{
|
||||
$board_name = '{L_CONFIG_SITENAME}';
|
||||
$board_desc = '{L_CONFIG_SITE_DESC}';
|
||||
}
|
||||
|
||||
// Use language because we only check this to be valid
|
||||
$default_lang = $this->install_config->get('user_language', 'en');
|
||||
|
||||
$langs = $this->language_helper->get_available_languages();
|
||||
$lang_options = array();
|
||||
|
||||
foreach ($langs as $lang)
|
||||
{
|
||||
$lang_options[] = array(
|
||||
'value' => $lang['iso'],
|
||||
'label' => $lang['local_name'],
|
||||
'selected' => ($default_lang === $lang['iso']),
|
||||
);
|
||||
}
|
||||
|
||||
$board_form = array(
|
||||
'default_lang' => array(
|
||||
'label' => 'DEFAULT_LANGUAGE',
|
||||
'type' => 'select',
|
||||
'options' => $lang_options,
|
||||
),
|
||||
'board_name' => array(
|
||||
'label' => 'BOARD_NAME',
|
||||
'type' => 'text',
|
||||
'default' => $board_name,
|
||||
),
|
||||
'board_description' => array(
|
||||
'label' => 'BOARD_DESCRIPTION',
|
||||
'type' => 'text',
|
||||
'default' => $board_desc,
|
||||
),
|
||||
'submit_board' => array(
|
||||
'label' => 'SUBMIT',
|
||||
'type' => 'submit',
|
||||
),
|
||||
);
|
||||
|
||||
$this->io_handler->add_user_form_group('BOARD_CONFIG', $board_form);
|
||||
|
||||
throw new user_interaction_required_exception();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
static public function get_step_count()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function get_task_lang_name()
|
||||
{
|
||||
return '';
|
||||
}
|
||||
}
|
@ -0,0 +1,270 @@
|
||||
<?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\module\obtain_data\task;
|
||||
|
||||
use phpbb\install\exception\user_interaction_required_exception;
|
||||
|
||||
/**
|
||||
* This class requests and validates database information from the user
|
||||
*/
|
||||
class obtain_database_data extends \phpbb\install\task_base implements \phpbb\install\task_interface
|
||||
{
|
||||
/**
|
||||
* @var \phpbb\install\helper\database
|
||||
*/
|
||||
protected $database_helper;
|
||||
|
||||
/**
|
||||
* @var \phpbb\install\helper\config
|
||||
*/
|
||||
protected $install_config;
|
||||
|
||||
/**
|
||||
* @var \phpbb\install\helper\iohandler\iohandler_interface
|
||||
*/
|
||||
protected $io_handler;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param \phpbb\install\helper\database $database_helper Installer's database helper
|
||||
* @param \phpbb\install\helper\config $install_config Installer's config helper
|
||||
* @param \phpbb\install\helper\iohandler\iohandler_interface $iohandler Installer's input-output handler
|
||||
*/
|
||||
public function __construct(\phpbb\install\helper\database $database_helper,
|
||||
\phpbb\install\helper\config $install_config,
|
||||
\phpbb\install\helper\iohandler\iohandler_interface $iohandler)
|
||||
{
|
||||
$this->database_helper = $database_helper;
|
||||
$this->install_config = $install_config;
|
||||
$this->io_handler = $iohandler;
|
||||
|
||||
parent::__construct(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function run()
|
||||
{
|
||||
// Check if data is sent
|
||||
if ($this->io_handler->get_input('submit_database', false))
|
||||
{
|
||||
$this->process_form();
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->request_form_data();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Process form data
|
||||
*/
|
||||
protected function process_form()
|
||||
{
|
||||
// Collect database data
|
||||
$dbms = $this->io_handler->get_input('dbms', '');
|
||||
$dbhost = $this->io_handler->get_input('dbhost', '', true);
|
||||
$dbport = $this->io_handler->get_input('dbport', '');
|
||||
$dbuser = $this->io_handler->get_input('dbuser', '');
|
||||
$dbpasswd = $this->io_handler->get_raw_input('dbpasswd', '');
|
||||
$dbname = $this->io_handler->get_input('dbname', '');
|
||||
$table_prefix = $this->io_handler->get_input('table_prefix', '');
|
||||
|
||||
// Check database data
|
||||
$user_data_vaild = $this->check_database_data($dbms, $dbhost, $dbport, $dbuser, $dbpasswd, $dbname, $table_prefix);
|
||||
|
||||
// Save database data if it is correct
|
||||
if ($user_data_vaild)
|
||||
{
|
||||
$this->install_config->set('dbms', $dbms);
|
||||
$this->install_config->set('dbhost', $dbhost);
|
||||
$this->install_config->set('dbport', $dbport);
|
||||
$this->install_config->set('dbuser', $dbuser);
|
||||
$this->install_config->set('dbpasswd', $dbpasswd);
|
||||
$this->install_config->set('dbname', $dbname);
|
||||
$this->install_config->set('table_prefix', $table_prefix);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->request_form_data(true);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Request data from the user
|
||||
*
|
||||
* @param bool $use_request_data Whether to use submited data
|
||||
*
|
||||
* @throws \phpbb\install\exception\user_interaction_required_exception When the user is required to provide data
|
||||
*/
|
||||
protected function request_form_data($use_request_data = false)
|
||||
{
|
||||
if ($use_request_data)
|
||||
{
|
||||
$dbms = $this->io_handler->get_input('dbms', '');
|
||||
$dbhost = $this->io_handler->get_input('dbhost', '', true);
|
||||
$dbport = $this->io_handler->get_input('dbport', '');
|
||||
$dbuser = $this->io_handler->get_input('dbuser', '');
|
||||
$dbname = $this->io_handler->get_input('dbname', '');
|
||||
$table_prefix = $this->io_handler->get_input('table_prefix', 'phpbb_');
|
||||
}
|
||||
else
|
||||
{
|
||||
$dbms = '';
|
||||
$dbhost = '';
|
||||
$dbport = '';
|
||||
$dbuser = '';
|
||||
$dbname = '';
|
||||
$table_prefix = 'phpbb_';
|
||||
}
|
||||
|
||||
$dbms_select = array();
|
||||
foreach ($this->database_helper->get_available_dbms() as $dbms_key => $dbms_array)
|
||||
{
|
||||
$dbms_select[] = array(
|
||||
'value' => $dbms_key,
|
||||
'label' => 'DB_OPTION_' . strtoupper($dbms_key),
|
||||
'selected' => ($dbms_key === $dbms),
|
||||
);
|
||||
}
|
||||
|
||||
$database_form = array(
|
||||
'dbms' => array(
|
||||
'label' => 'DBMS',
|
||||
'type' => 'select',
|
||||
'options' => $dbms_select,
|
||||
),
|
||||
'dbhost' => array(
|
||||
'label' => 'DB_HOST',
|
||||
'description' => 'DB_HOST_EXPLAIN',
|
||||
'type' => 'text',
|
||||
'default' => $dbhost,
|
||||
),
|
||||
'dbport' => array(
|
||||
'label' => 'DB_PORT',
|
||||
'description' => 'DB_PORT_EXPLAIN',
|
||||
'type' => 'text',
|
||||
'default' => $dbport,
|
||||
),
|
||||
'dbuser' => array(
|
||||
'label' => 'DB_USERNAME',
|
||||
'type' => 'text',
|
||||
'default' => $dbuser,
|
||||
),
|
||||
'dbpasswd' => array(
|
||||
'label' => 'DB_PASSWORD',
|
||||
'type' => 'password',
|
||||
),
|
||||
'dbname' => array(
|
||||
'label' => 'DB_NAME',
|
||||
'type' => 'text',
|
||||
'default' => $dbname,
|
||||
),
|
||||
'table_prefix' => array(
|
||||
'label' => 'TABLE_PREFIX',
|
||||
'description' => 'TABLE_PREFIX_EXPLAIN',
|
||||
'type' => 'text',
|
||||
'default' => $table_prefix,
|
||||
),
|
||||
'submit_database' => array(
|
||||
'label' => 'SUBMIT',
|
||||
'type' => 'submit',
|
||||
),
|
||||
);
|
||||
|
||||
$this->io_handler->add_user_form_group('DB_CONFIG', $database_form);
|
||||
|
||||
// Require user interaction
|
||||
throw new user_interaction_required_exception();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check database data
|
||||
*
|
||||
* @param string $dbms Selected database type
|
||||
* @param string $dbhost Database host address
|
||||
* @param int $dbport Database port number
|
||||
* @param string $dbuser Database username
|
||||
* @param string $dbpass Database password
|
||||
* @param string $dbname Database name
|
||||
* @param string $table_prefix Database table prefix
|
||||
*
|
||||
* @return bool True if database data is correct, false otherwise
|
||||
*/
|
||||
protected function check_database_data($dbms, $dbhost, $dbport, $dbuser, $dbpass, $dbname, $table_prefix)
|
||||
{
|
||||
$available_dbms = $this->database_helper->get_available_dbms();
|
||||
$data_valid = true;
|
||||
|
||||
// Check if PHP has the database extensions for the specified DBMS
|
||||
if (!isset($available_dbms[$dbms]))
|
||||
{
|
||||
$this->io_handler->add_error_message('INST_ERR_NO_DB');
|
||||
$data_valid = false;
|
||||
}
|
||||
|
||||
// Validate table prefix
|
||||
$prefix_valid = $this->database_helper->validate_table_prefix($dbms, $table_prefix);
|
||||
if (is_array($prefix_valid))
|
||||
{
|
||||
foreach ($prefix_valid as $error)
|
||||
{
|
||||
$this->io_handler->add_error_message(
|
||||
$error['title'],
|
||||
(isset($error['description'])) ? $error['description'] : false
|
||||
);
|
||||
}
|
||||
|
||||
$data_valid = false;
|
||||
}
|
||||
|
||||
// Try to connect to database if all provided data is valid
|
||||
if ($data_valid)
|
||||
{
|
||||
$connect_test = $this->database_helper->check_database_connection($dbms, $dbhost, $dbport, $dbuser, $dbpass, $dbname, $table_prefix);
|
||||
if (is_array($connect_test))
|
||||
{
|
||||
foreach ($connect_test as $error)
|
||||
{
|
||||
$this->io_handler->add_error_message(
|
||||
$error['title'],
|
||||
(isset($error['description'])) ? $error['description'] : false
|
||||
);
|
||||
}
|
||||
|
||||
$data_valid = false;
|
||||
}
|
||||
}
|
||||
|
||||
return $data_valid;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
static public function get_step_count()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function get_task_lang_name()
|
||||
{
|
||||
return '';
|
||||
}
|
||||
}
|
@ -0,0 +1,173 @@
|
||||
<?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\module\obtain_data\task;
|
||||
|
||||
use phpbb\install\exception\user_interaction_required_exception;
|
||||
|
||||
class obtain_email_data extends \phpbb\install\task_base implements \phpbb\install\task_interface
|
||||
{
|
||||
/**
|
||||
* @var \phpbb\install\helper\config
|
||||
*/
|
||||
protected $install_config;
|
||||
|
||||
/**
|
||||
* @var \phpbb\install\helper\iohandler\iohandler_interface
|
||||
*/
|
||||
protected $io_handler;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param \phpbb\install\helper\config $config Installer's config
|
||||
* @param \phpbb\install\helper\iohandler\iohandler_interface $iohandler Installer's input-output handler
|
||||
*/
|
||||
public function __construct(\phpbb\install\helper\config $config,
|
||||
\phpbb\install\helper\iohandler\iohandler_interface $iohandler)
|
||||
{
|
||||
$this->install_config = $config;
|
||||
$this->io_handler = $iohandler;
|
||||
|
||||
parent::__construct(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function run()
|
||||
{
|
||||
// E-mail data
|
||||
$email_enable = $this->io_handler->get_input('email_enable', true);
|
||||
$smtp_delivery = $this->io_handler->get_input('smtp_delivery', '');
|
||||
$smtp_host = $this->io_handler->get_input('smtp_host', '');
|
||||
$smtp_port = $this->io_handler->get_input('smtp_port', '');
|
||||
$smtp_auth = $this->io_handler->get_input('smtp_auth', '');
|
||||
$smtp_user = $this->io_handler->get_input('smtp_user', '');
|
||||
$smtp_passwd = $this->io_handler->get_input('smtp_pass', '');
|
||||
|
||||
$auth_methods = array('PLAIN', 'LOGIN', 'CRAM-MD5', 'DIGEST-MD5', 'POP-BEFORE-SMTP');
|
||||
|
||||
// Check if data is sent
|
||||
if ($this->io_handler->get_input('submit_email', false))
|
||||
{
|
||||
$this->install_config->set('email_enable', $email_enable);
|
||||
$this->install_config->set('smtp_delivery', $smtp_delivery);
|
||||
$this->install_config->set('smtp_host', $smtp_host);
|
||||
$this->install_config->set('smtp_port', $smtp_port);
|
||||
$this->install_config->set('smtp_auth', $smtp_auth);
|
||||
$this->install_config->set('smtp_user', $smtp_user);
|
||||
$this->install_config->set('smtp_pass', $smtp_passwd);
|
||||
}
|
||||
else
|
||||
{
|
||||
$auth_options = array();
|
||||
foreach ($auth_methods as $method)
|
||||
{
|
||||
$auth_options[] = array(
|
||||
'value' => $method,
|
||||
'label' => 'SMTP_' . str_replace('-', '_', $method),
|
||||
'selected' => false,
|
||||
);
|
||||
}
|
||||
|
||||
$email_form = array(
|
||||
'email_enable' => array(
|
||||
'label' => 'ENABLE_EMAIL',
|
||||
'description' => 'ENABLE_EMAIL_EXPLAIN',
|
||||
'type' => 'radio',
|
||||
'options' => array(
|
||||
array(
|
||||
'value' => 1,
|
||||
'label' => 'ENABLE',
|
||||
'selected' => true,
|
||||
),
|
||||
array(
|
||||
'value' => 0,
|
||||
'label' => 'DISABLE',
|
||||
'selected' => false,
|
||||
),
|
||||
),
|
||||
),
|
||||
'smtp_delivery' => array(
|
||||
'label' => 'USE_SMTP',
|
||||
'description' => 'USE_SMTP_EXPLAIN',
|
||||
'type' => 'radio',
|
||||
'options' => array(
|
||||
array(
|
||||
'value' => 0,
|
||||
'label' => 'NO',
|
||||
'selected' => true,
|
||||
),
|
||||
array(
|
||||
'value' => 1,
|
||||
'label' => 'YES',
|
||||
'selected' => false,
|
||||
),
|
||||
),
|
||||
),
|
||||
'smtp_host' => array(
|
||||
'label' => 'SMTP_SERVER',
|
||||
'type' => 'text',
|
||||
'default' => $smtp_host,
|
||||
),
|
||||
'smtp_port' => array(
|
||||
'label' => 'SMTP_PORT',
|
||||
'type' => 'text',
|
||||
'default' => $smtp_port,
|
||||
),
|
||||
'smtp_auth' => array(
|
||||
'label' => 'SMTP_AUTH_METHOD',
|
||||
'description' => 'SMTP_AUTH_METHOD_EXPLAIN',
|
||||
'type' => 'select',
|
||||
'options' => $auth_options,
|
||||
),
|
||||
'smtp_user' => array(
|
||||
'label' => 'SMTP_USERNAME',
|
||||
'description' => 'SMTP_USERNAME_EXPLAIN',
|
||||
'type' => 'text',
|
||||
'default' => $smtp_user,
|
||||
),
|
||||
'smtp_pass' => array(
|
||||
'label' => 'SMTP_PASSWORD',
|
||||
'description' => 'SMTP_PASSWORD_EXPLAIN',
|
||||
'type' => 'password',
|
||||
),
|
||||
'submit_email' => array(
|
||||
'label' => 'SUBMIT',
|
||||
'type' => 'submit',
|
||||
),
|
||||
);
|
||||
|
||||
$this->io_handler->add_user_form_group('EMAIL_CONFIG', $email_form);
|
||||
|
||||
throw new user_interaction_required_exception();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
static public function get_step_count()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function get_task_lang_name()
|
||||
{
|
||||
return '';
|
||||
}
|
||||
}
|
@ -0,0 +1,167 @@
|
||||
<?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\module\obtain_data\task;
|
||||
|
||||
use phpbb\install\exception\user_interaction_required_exception;
|
||||
use phpbb\install\helper\config;
|
||||
use phpbb\install\helper\iohandler\iohandler_interface;
|
||||
use phpbb\install\task_base;
|
||||
|
||||
class obtain_file_updater_method extends task_base
|
||||
{
|
||||
/**
|
||||
* @var array Supported compression methods
|
||||
*
|
||||
* Note: .tar is assumed to be supported, but not in the list
|
||||
*/
|
||||
protected $available_methods;
|
||||
|
||||
/**
|
||||
* @var \phpbb\install\helper\config
|
||||
*/
|
||||
protected $installer_config;
|
||||
|
||||
/**
|
||||
* @var \phpbb\install\helper\iohandler\iohandler_interface
|
||||
*/
|
||||
protected $iohandler;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param config $installer_config
|
||||
* @param iohandler_interface $iohandler
|
||||
*/
|
||||
public function __construct(config $installer_config, iohandler_interface $iohandler)
|
||||
{
|
||||
$this->installer_config = $installer_config;
|
||||
$this->iohandler = $iohandler;
|
||||
|
||||
$this->available_methods = array('.tar.gz' => 'zlib', '.tar.bz2' => 'bz2', '.zip' => 'zlib');
|
||||
|
||||
parent::__construct(false);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function check_requirements()
|
||||
{
|
||||
return $this->installer_config->get('do_update_files', false);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function run()
|
||||
{
|
||||
// Check if data is sent
|
||||
if ($this->iohandler->get_input('submit_update_file', false))
|
||||
{
|
||||
$supported_methods = array('compression', 'ftp', 'direct_file');
|
||||
$method = $this->iohandler->get_input('method', 'compression');
|
||||
$update_method = (in_array($method, $supported_methods, true)) ? $method : 'compression';
|
||||
$this->installer_config->set('file_update_method', $update_method);
|
||||
|
||||
$compression = $this->iohandler->get_input('compression_method', '.zip');
|
||||
$supported_methods = array_keys($this->available_methods);
|
||||
$supported_methods[] = '.tar';
|
||||
$compression = (in_array($compression, $supported_methods, true)) ? $compression : '.zip';
|
||||
$this->installer_config->set('file_update_compression', $compression);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->iohandler->add_user_form_group('UPDATE_FILE_METHOD_TITLE', array(
|
||||
'method' => array(
|
||||
'label' => 'UPDATE_FILE_METHOD',
|
||||
'type' => 'select',
|
||||
'options' => array(
|
||||
array(
|
||||
'value' => 'compression',
|
||||
'label' => 'UPDATE_FILE_METHOD_DOWNLOAD',
|
||||
'selected' => true,
|
||||
),
|
||||
array(
|
||||
'value' => 'ftp',
|
||||
'label' => 'UPDATE_FILE_METHOD_FTP',
|
||||
'selected' => false,
|
||||
),
|
||||
array(
|
||||
'value' => 'direct_file',
|
||||
'label' => 'UPDATE_FILE_METHOD_FILESYSTEM',
|
||||
'selected' => false,
|
||||
),
|
||||
),
|
||||
),
|
||||
'compression_method' => array(
|
||||
'label' => 'SELECT_DOWNLOAD_FORMAT',
|
||||
'type' => 'select',
|
||||
'options' => $this->get_available_compression_methods(),
|
||||
),
|
||||
'submit_update_file' => array(
|
||||
'label' => 'SUBMIT',
|
||||
'type' => 'submit',
|
||||
),
|
||||
));
|
||||
|
||||
throw new user_interaction_required_exception();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns form elements in an array of available compression methods
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function get_available_compression_methods()
|
||||
{
|
||||
$methods[] = array(
|
||||
'value' => '.tar',
|
||||
'label' => '.tar',
|
||||
'selected' => true,
|
||||
);
|
||||
|
||||
foreach ($this->available_methods as $type => $module)
|
||||
{
|
||||
if (!@extension_loaded($module))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
$methods[] = array(
|
||||
'value' => $type,
|
||||
'label' => $type,
|
||||
'selected' => false,
|
||||
);
|
||||
}
|
||||
|
||||
return $methods;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
static public function get_step_count()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function get_task_lang_name()
|
||||
{
|
||||
return '';
|
||||
}
|
||||
}
|
@ -0,0 +1,202 @@
|
||||
<?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\module\obtain_data\task;
|
||||
|
||||
use phpbb\install\exception\user_interaction_required_exception;
|
||||
|
||||
/**
|
||||
* This class requests and saves some information about the server
|
||||
*/
|
||||
class obtain_server_data extends \phpbb\install\task_base implements \phpbb\install\task_interface
|
||||
{
|
||||
/**
|
||||
* @var \phpbb\install\helper\config
|
||||
*/
|
||||
protected $install_config;
|
||||
|
||||
/**
|
||||
* @var \phpbb\install\helper\iohandler\iohandler_interface
|
||||
*/
|
||||
protected $io_handler;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param \phpbb\install\helper\config $config Installer's config
|
||||
* @param \phpbb\install\helper\iohandler\iohandler_interface $iohandler Installer's input-output handler
|
||||
*/
|
||||
public function __construct(\phpbb\install\helper\config $config,
|
||||
\phpbb\install\helper\iohandler\iohandler_interface $iohandler)
|
||||
{
|
||||
$this->install_config = $config;
|
||||
$this->io_handler = $iohandler;
|
||||
|
||||
parent::__construct(true);
|
||||
}
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function run()
|
||||
{
|
||||
$cookie_secure = $this->io_handler->is_secure();
|
||||
$server_protocol = ($this->io_handler->is_secure()) ? 'https://' : 'http://';
|
||||
$server_port = $this->io_handler->get_server_variable('SERVER_PORT', 0);
|
||||
|
||||
// HTTP_HOST is having the correct browser url in most cases...
|
||||
$server_name = strtolower(htmlspecialchars_decode($this->io_handler->get_header_variable(
|
||||
'Host',
|
||||
$this->io_handler->get_server_variable('SERVER_NAME')
|
||||
)));
|
||||
|
||||
// HTTP HOST can carry a port number...
|
||||
if (strpos($server_name, ':') !== false)
|
||||
{
|
||||
$server_name = substr($server_name, 0, strpos($server_name, ':'));
|
||||
}
|
||||
|
||||
$script_path = htmlspecialchars_decode($this->io_handler->get_server_variable('PHP_SELF'));
|
||||
|
||||
if (!$script_path)
|
||||
{
|
||||
$script_path = htmlspecialchars_decode($this->io_handler->get_server_variable('REQUEST_URI'));
|
||||
}
|
||||
|
||||
$script_path = str_replace(array('\\', '//'), '/', $script_path);
|
||||
$script_path = trim(dirname(dirname(dirname($script_path)))); // Because we are in install/app.php/route_name
|
||||
|
||||
// Server data
|
||||
$cookie_secure = $this->io_handler->get_input('cookie_secure', $cookie_secure);
|
||||
$server_protocol = $this->io_handler->get_input('server_protocol', $server_protocol);
|
||||
$force_server_vars = $this->io_handler->get_input('force_server_vars', 0);
|
||||
$server_name = $this->io_handler->get_input('server_name', $server_name);
|
||||
$server_port = $this->io_handler->get_input('server_port', $server_port);
|
||||
$script_path = $this->io_handler->get_input('script_path', $script_path);
|
||||
|
||||
// Clean up script path
|
||||
if ($script_path !== '/')
|
||||
{
|
||||
// Adjust destination path (no trailing slash)
|
||||
if (substr($script_path, -1) === '/')
|
||||
{
|
||||
$script_path = substr($script_path, 0, -1);
|
||||
}
|
||||
|
||||
$script_path = str_replace(array('../', './'), '', $script_path);
|
||||
|
||||
if ($script_path[0] !== '/')
|
||||
{
|
||||
$script_path = '/' . $script_path;
|
||||
}
|
||||
}
|
||||
|
||||
// Check if data is sent
|
||||
if ($this->io_handler->get_input('submit_server', false))
|
||||
{
|
||||
$this->install_config->set('cookie_secure', $cookie_secure);
|
||||
$this->install_config->set('server_protocol', $server_protocol);
|
||||
$this->install_config->set('force_server_vars', $force_server_vars);
|
||||
$this->install_config->set('server_name', $server_name);
|
||||
$this->install_config->set('server_port', $server_port);
|
||||
$this->install_config->set('script_path', $script_path);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Render form
|
||||
$server_form = array(
|
||||
'cookie_secure' => array(
|
||||
'label' => 'COOKIE_SECURE',
|
||||
'description' => 'COOKIE_SECURE_EXPLAIN',
|
||||
'type' => 'radio',
|
||||
'options' => array(
|
||||
array(
|
||||
'value' => 0,
|
||||
'label' => 'NO',
|
||||
'selected' => (!$cookie_secure),
|
||||
),
|
||||
array(
|
||||
'value' => 1,
|
||||
'label' => 'YES',
|
||||
'selected' => ($cookie_secure),
|
||||
),
|
||||
),
|
||||
),
|
||||
'force_server_vars' => array(
|
||||
'label' => 'FORCE_SERVER_VARS',
|
||||
'description' => 'FORCE_SERVER_VARS_EXPLAIN',
|
||||
'type' => 'radio',
|
||||
'options' => array(
|
||||
array(
|
||||
'value' => 0,
|
||||
'label' => 'NO',
|
||||
'selected' => true,
|
||||
),
|
||||
array(
|
||||
'value' => 1,
|
||||
'label' => 'YES',
|
||||
'selected' => false,
|
||||
),
|
||||
),
|
||||
),
|
||||
'server_protocol' => array(
|
||||
'label' => 'SERVER_PROTOCOL',
|
||||
'description' => 'SERVER_PROTOCOL_EXPLAIN',
|
||||
'type' => 'text',
|
||||
'default' => $server_protocol,
|
||||
),
|
||||
'server_name' => array(
|
||||
'label' => 'SERVER_NAME',
|
||||
'description' => 'SERVER_NAME_EXPLAIN',
|
||||
'type' => 'text',
|
||||
'default' => $server_name,
|
||||
),
|
||||
'server_port' => array(
|
||||
'label' => 'SERVER_PORT',
|
||||
'description' => 'SERVER_PORT_EXPLAIN',
|
||||
'type' => 'text',
|
||||
'default' => $server_port,
|
||||
),
|
||||
'script_path' => array(
|
||||
'label' => 'SCRIPT_PATH',
|
||||
'description' => 'SCRIPT_PATH_EXPLAIN',
|
||||
'type' => 'text',
|
||||
'default' => $script_path,
|
||||
),
|
||||
'submit_server' => array(
|
||||
'label' => 'SUBMIT',
|
||||
'type' => 'submit',
|
||||
)
|
||||
);
|
||||
|
||||
$this->io_handler->add_user_form_group('SERVER_CONFIG', $server_form);
|
||||
|
||||
throw new user_interaction_required_exception();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
static public function get_step_count()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function get_task_lang_name()
|
||||
{
|
||||
return '';
|
||||
}
|
||||
}
|
@ -0,0 +1,113 @@
|
||||
<?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\module\obtain_data\task;
|
||||
|
||||
use phpbb\install\exception\user_interaction_required_exception;
|
||||
use phpbb\install\helper\config;
|
||||
use phpbb\install\helper\iohandler\iohandler_interface;
|
||||
use phpbb\install\task_base;
|
||||
|
||||
class obtain_update_files extends task_base
|
||||
{
|
||||
/**
|
||||
* @var config
|
||||
*/
|
||||
protected $installer_config;
|
||||
|
||||
/**
|
||||
* @var iohandler_interface
|
||||
*/
|
||||
protected $iohandler;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $phpbb_root_path;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $php_ext;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param config $config
|
||||
* @param iohandler_interface $iohandler
|
||||
* @param string $phpbb_root_path
|
||||
* @param string $php_ext
|
||||
*/
|
||||
public function __construct(config $config, iohandler_interface $iohandler, $phpbb_root_path, $php_ext)
|
||||
{
|
||||
$this->installer_config = $config;
|
||||
$this->iohandler = $iohandler;
|
||||
$this->phpbb_root_path = $phpbb_root_path;
|
||||
$this->php_ext = $php_ext;
|
||||
|
||||
parent::__construct(false);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function check_requirements()
|
||||
{
|
||||
return $this->installer_config->get('do_update_files', false);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function run()
|
||||
{
|
||||
// Load update info file
|
||||
// The file should be checked in the requirements, so we assume that it exists
|
||||
$update_info_file = $this->phpbb_root_path . 'install/update/index.' . $this->php_ext;
|
||||
include($update_info_file);
|
||||
$info = (empty($update_info) || !is_array($update_info)) ? false : $update_info;
|
||||
|
||||
// If the file is invalid, abort mission
|
||||
if (!$info)
|
||||
{
|
||||
$this->iohandler->add_error_message('WRONG_INFO_FILE_FORMAT');
|
||||
throw new user_interaction_required_exception();
|
||||
}
|
||||
|
||||
// Replace .php with $this->php_ext if needed
|
||||
if ($this->php_ext !== 'php')
|
||||
{
|
||||
$custom_extension = '.' . $this->php_ext;
|
||||
$info['files'] = preg_replace('#\.php$#i', $custom_extension, $info['files']);
|
||||
}
|
||||
|
||||
// Save update info
|
||||
$this->installer_config->set('update_info_unprocessed', $info);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
static public function get_step_count()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function get_task_lang_name()
|
||||
{
|
||||
return '';
|
||||
}
|
||||
}
|
@ -0,0 +1,163 @@
|
||||
<?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\module\obtain_data\task;
|
||||
|
||||
use phpbb\install\exception\user_interaction_required_exception;
|
||||
use phpbb\install\helper\config;
|
||||
use phpbb\install\helper\iohandler\iohandler_interface;
|
||||
use phpbb\install\helper\update_helper;
|
||||
use phpbb\install\task_base;
|
||||
|
||||
class obtain_update_ftp_data extends task_base
|
||||
{
|
||||
/**
|
||||
* @var \phpbb\install\helper\config
|
||||
*/
|
||||
protected $installer_config;
|
||||
|
||||
/**
|
||||
* @var \phpbb\install\helper\iohandler\iohandler_interface
|
||||
*/
|
||||
protected $iohandler;
|
||||
|
||||
/**
|
||||
* @var update_helper
|
||||
*/
|
||||
protected $update_helper;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $php_ext;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param config $installer_config
|
||||
* @param iohandler_interface $iohandler
|
||||
* @param update_helper $update_helper
|
||||
* @param string $php_ext
|
||||
*/
|
||||
public function __construct(config $installer_config, iohandler_interface $iohandler, update_helper $update_helper, $php_ext)
|
||||
{
|
||||
$this->installer_config = $installer_config;
|
||||
$this->iohandler = $iohandler;
|
||||
$this->update_helper = $update_helper;
|
||||
$this->php_ext = $php_ext;
|
||||
|
||||
parent::__construct(false);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function check_requirements()
|
||||
{
|
||||
return ($this->installer_config->get('do_update_files', false) &&
|
||||
($this->installer_config->get('file_update_method', '') === 'ftp')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function run()
|
||||
{
|
||||
if ($this->iohandler->get_input('submit_ftp', false))
|
||||
{
|
||||
$this->update_helper->include_file('includes/functions_transfer.' . $this->php_ext);
|
||||
|
||||
$method = 'ftp';
|
||||
$methods = \transfer::methods();
|
||||
if (!in_array($method, $methods, true))
|
||||
{
|
||||
$method = $methods[0];
|
||||
}
|
||||
|
||||
$ftp_host = $this->iohandler->get_input('ftp_host', '');
|
||||
$ftp_user = $this->iohandler->get_input('ftp_user', '');
|
||||
$ftp_pass = htmlspecialchars_decode($this->iohandler->get_input('ftp_pass', ''));
|
||||
$ftp_path = $this->iohandler->get_input('ftp_path', '');
|
||||
$ftp_port = $this->iohandler->get_input('ftp_port', 21);
|
||||
$ftp_time = $this->iohandler->get_input('ftp_timeout', 10);
|
||||
|
||||
$this->installer_config->set('ftp_host', $ftp_host);
|
||||
$this->installer_config->set('ftp_user', $ftp_user);
|
||||
$this->installer_config->set('ftp_pass', $ftp_pass);
|
||||
$this->installer_config->set('ftp_path', $ftp_path);
|
||||
$this->installer_config->set('ftp_port', (int) $ftp_port);
|
||||
$this->installer_config->set('ftp_timeout', (int) $ftp_time);
|
||||
$this->installer_config->set('ftp_method', $method);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->iohandler->add_user_form_group('FTP_SETTINGS', array(
|
||||
'ftp_host' => array(
|
||||
'label' => 'FTP_HOST',
|
||||
'description' => 'FTP_HOST_EXPLAIN',
|
||||
'type' => 'text',
|
||||
),
|
||||
'ftp_user' => array(
|
||||
'label' => 'FTP_USERNAME',
|
||||
'description' => 'FTP_USERNAME_EXPLAIN',
|
||||
'type' => 'text',
|
||||
),
|
||||
'ftp_pass' => array(
|
||||
'label' => 'FTP_PASSWORD',
|
||||
'description' => 'FTP_PASSWORD_EXPLAIN',
|
||||
'type' => 'password',
|
||||
),
|
||||
'ftp_path' => array(
|
||||
'label' => 'FTP_ROOT_PATH',
|
||||
'description' => 'FTP_ROOT_PATH_EXPLAIN',
|
||||
'type' => 'text',
|
||||
),
|
||||
'ftp_port' => array(
|
||||
'label' => 'FTP_PORT',
|
||||
'description' => 'FTP_PORT_EXPLAIN',
|
||||
'type' => 'text',
|
||||
'default' => 21,
|
||||
),
|
||||
'ftp_timeout' => array(
|
||||
'label' => 'FTP_TIMEOUT',
|
||||
'description' => 'FTP_TIMEOUT_EXPLAIN',
|
||||
'type' => 'text',
|
||||
'default' => 10,
|
||||
),
|
||||
'submit_ftp' => array(
|
||||
'label' => 'SUBMIT',
|
||||
'type' => 'submit',
|
||||
),
|
||||
));
|
||||
|
||||
throw new user_interaction_required_exception();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
static public function get_step_count()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function get_task_lang_name()
|
||||
{
|
||||
return '';
|
||||
}
|
||||
}
|
@ -0,0 +1,123 @@
|
||||
<?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\module\obtain_data\task;
|
||||
|
||||
use phpbb\install\exception\user_interaction_required_exception;
|
||||
use phpbb\install\helper\config;
|
||||
use phpbb\install\helper\iohandler\iohandler_interface;
|
||||
use phpbb\install\task_base;
|
||||
|
||||
class obtain_update_settings extends task_base
|
||||
{
|
||||
/**
|
||||
* @var \phpbb\install\helper\config
|
||||
*/
|
||||
protected $installer_config;
|
||||
|
||||
/**
|
||||
* @var \phpbb\install\helper\iohandler\iohandler_interface
|
||||
*/
|
||||
protected $iohandler;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param config $installer_config
|
||||
* @param iohandler_interface $iohandler
|
||||
*/
|
||||
public function __construct(config $installer_config, iohandler_interface $iohandler)
|
||||
{
|
||||
$this->installer_config = $installer_config;
|
||||
$this->iohandler = $iohandler;
|
||||
|
||||
parent::__construct(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function run()
|
||||
{
|
||||
// Check if data is sent
|
||||
if ($this->iohandler->get_input('submit_update', false))
|
||||
{
|
||||
$update_files = $this->iohandler->get_input('update_type', 'all') === 'all';
|
||||
|
||||
if ($this->installer_config->get('disable_filesystem_update', false) && $update_files)
|
||||
{
|
||||
$this->iohandler->add_error_message('UPDATE_FILES_NOT_FOUND');
|
||||
|
||||
throw new user_interaction_required_exception();
|
||||
}
|
||||
|
||||
$this->installer_config->set('do_update_files', $update_files);
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($this->installer_config->get('disable_filesystem_update', false))
|
||||
{
|
||||
$options[] = array(
|
||||
'value' => 'db_only',
|
||||
'label' => 'UPDATE_TYPE_DB_ONLY',
|
||||
'selected' => true,
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
$options = array(
|
||||
array(
|
||||
'value' => 'all',
|
||||
'label' => 'UPDATE_TYPE_ALL',
|
||||
'selected' => true,
|
||||
),
|
||||
array(
|
||||
'value' => 'db_only',
|
||||
'label' => 'UPDATE_TYPE_DB_ONLY',
|
||||
'selected' => false,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
$this->iohandler->add_user_form_group('UPDATE_TYPE', array(
|
||||
'update_type' => array(
|
||||
'label' => 'UPDATE_TYPE',
|
||||
'type' => 'radio',
|
||||
'options' => $options,
|
||||
),
|
||||
'submit_update' => array(
|
||||
'label' => 'SUBMIT',
|
||||
'type' => 'submit',
|
||||
),
|
||||
));
|
||||
|
||||
throw new user_interaction_required_exception();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
static public function get_step_count()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function get_task_lang_name()
|
||||
{
|
||||
return '';
|
||||
}
|
||||
}
|
@ -0,0 +1,33 @@
|
||||
<?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\module\obtain_data;
|
||||
|
||||
class update_module extends \phpbb\install\module_base
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function get_navigation_stage_path()
|
||||
{
|
||||
return array('update', 0, 'obtain_data');
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function get_step_count()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user