protected static function install_board()
{
global $phpbb_root_path, $phpEx, $db;
self::recreate_database(self::$config);
$config_file = $phpbb_root_path . "config.{$phpEx}";
$config_file_dev = $phpbb_root_path . "config_dev.{$phpEx}";
$config_file_test = $phpbb_root_path . "config_test.{$phpEx}";
if (file_exists($config_file)) {
if (!file_exists($config_file_dev)) {
rename($config_file, $config_file_dev);
} else {
unlink($config_file);
}
}
$container_builder = new \phpbb\di\container_builder($phpbb_root_path, $phpEx);
$container = $container_builder->with_environment('installer')->without_extensions()->without_cache()->with_custom_parameters(['core.disable_super_globals' => false, 'installer.create_config_file.options' => ['debug' => true, 'environment' => 'test'], 'cache.driver.class' => 'phpbb\\cache\\driver\\file'])->without_compiled_container()->get_container();
$container->register('installer.install_finish.notify_user')->setSynthetic(true);
$container->set('installer.install_finish.notify_user', new phpbb_mock_null_installer_task());
$container->compile();
$language = $container->get('language');
$language->add_lang(array('common', 'acp/common', 'acp/board', 'install', 'posting'));
$iohandler_factory = $container->get('installer.helper.iohandler_factory');
$iohandler_factory->set_environment('cli');
$iohandler = $iohandler_factory->get();
$parseURL = parse_url(self::$config['phpbb_functional_url']);
$output = new \Symfony\Component\Console\Output\NullOutput();
$style = new \Symfony\Component\Console\Style\SymfonyStyle(new \Symfony\Component\Console\Input\ArrayInput(array()), $output);
$iohandler->set_style($style, $output);
$installer = $container->get('installer.installer.install');
$installer->set_iohandler($iohandler);
// Set data
$iohandler->set_input('admin_name', 'admin');
$iohandler->set_input('admin_pass1', 'adminadmin');
$iohandler->set_input('admin_pass2', 'adminadmin');
$iohandler->set_input('board_email', '[email protected]');
$iohandler->set_input('submit_admin', 'submit');
$iohandler->set_input('default_lang', 'en');
$iohandler->set_input('board_name', 'yourdomain.com');
$iohandler->set_input('board_description', 'A short text to describe your forum');
$iohandler->set_input('submit_board', 'submit');
$iohandler->set_input('dbms', str_replace('phpbb\\db\\driver\\', '', self::$config['dbms']));
$iohandler->set_input('dbhost', self::$config['dbhost']);
$iohandler->set_input('dbport', self::$config['dbport']);
$iohandler->set_input('dbuser', self::$config['dbuser']);
$iohandler->set_input('dbpasswd', self::$config['dbpasswd']);
$iohandler->set_input('dbname', self::$config['dbname']);
$iohandler->set_input('table_prefix', self::$config['table_prefix']);
$iohandler->set_input('submit_database', 'submit');
$iohandler->set_input('email_enable', true);
$iohandler->set_input('smtp_delivery', '1');
$iohandler->set_input('smtp_host', 'nxdomain.phpbb.com');
$iohandler->set_input('smtp_auth', 'PLAIN');
$iohandler->set_input('smtp_user', 'nxuser');
$iohandler->set_input('smtp_pass', 'nxpass');
$iohandler->set_input('submit_email', 'submit');
$iohandler->set_input('cookie_secure', '0');
$iohandler->set_input('server_protocol', '0');
$iohandler->set_input('force_server_vars', $parseURL['scheme'] . '://');
$iohandler->set_input('server_name', $parseURL['host']);
$iohandler->set_input('server_port', isset($parseURL['port']) ? (int) $parseURL['port'] : 80);
$iohandler->set_input('script_path', $parseURL['path']);
$iohandler->set_input('submit_server', 'submit');
$installer->run();
copy($config_file, $config_file_test);
self::$install_success = true;
if (file_exists($phpbb_root_path . 'store/install_config.php')) {
self::$install_success = false;
@unlink($phpbb_root_path . 'store/install_config.php');
}
if (file_exists($phpbb_root_path . 'cache/install_lock')) {
@unlink($phpbb_root_path . 'cache/install_lock');
}
global $phpbb_container;
$phpbb_container->reset();
$blacklist = ['phpbb_class_loader_mock', 'phpbb_class_loader_ext', 'phpbb_class_loader'];
foreach (array_keys($GLOBALS) as $key) {
if (is_object($GLOBALS[$key]) && !in_array($key, $blacklist, true)) {
unset($GLOBALS[$key]);
}
}
}