[ticket/11574] Fix various path issues in the updater

PHPBB3-11574
This commit is contained in:
Igor Wiedler 2013-07-13 16:47:15 -04:00
parent 51ab2c710e
commit d6de892ee4
3 changed files with 29 additions and 30 deletions

View file

@ -53,7 +53,7 @@ function phpbb_create_container(array $extensions, $phpbb_root_path, $php_ext)
*/
function phpbb_create_install_container($phpbb_root_path, $php_ext)
{
$other_config_path = $phpbb_root_path . 'install/update/new/config';
$other_config_path = $phpbb_root_path . 'install/update/new/config/';
$config_path = file_exists($other_config_path . 'services.yml') ? $other_config_path : $phpbb_root_path . 'config';
$core = new phpbb_di_extension_core($config_path);
@ -73,6 +73,30 @@ function phpbb_create_install_container($phpbb_root_path, $php_ext)
return $container;
}
/**
* Create updater container
*
* @param string $phpbb_root_path Root path
* @param string $php_ext PHP Extension
* @param array $config_path Path to config directory
* @return ContainerBuilder object (compiled)
*/
function phpbb_create_update_container($phpbb_root_path, $php_ext, $config_path)
{
return phpbb_create_compiled_container(
array(
new phpbb_di_extension_config($phpbb_root_path . 'config.' . $php_ext),
new phpbb_di_extension_core($config_path),
),
array(
new phpbb_di_pass_collection_pass(),
new phpbb_di_pass_kernel_pass(),
),
$phpbb_root_path,
$php_ext
);
}
/**
* Create a compiled ContainerBuilder object
*

View file

@ -121,8 +121,8 @@ $phpbb_class_loader = new phpbb_class_loader('phpbb_', "{$phpbb_root_path}includ
$phpbb_class_loader->register();
// Set up container (must be done here because extensions table may not exist)
$other_config_path = $phpbb_root_path . 'install/update/new/config';
$config_path = file_exists($other_config_path . 'services.yml') ? $other_config_path : $phpbb_root_path;
$other_config_path = $phpbb_root_path . 'install/update/new/config/';
$config_path = file_exists($other_config_path . 'services.yml') ? $other_config_path : $phpbb_root_path . 'config';
$container_extensions = array(
new phpbb_di_extension_config($phpbb_root_path . 'config.' . $phpEx),
@ -130,7 +130,6 @@ $container_extensions = array(
);
$container_passes = array(
new phpbb_di_pass_collection_pass(),
//new phpbb_di_pass_kernel_pass(),
);
$phpbb_container = phpbb_create_container($container_extensions, $phpbb_root_path, $phpEx);

View file

@ -75,7 +75,7 @@ class install_update extends module
global $request, $phpbb_admin_path, $phpbb_adm_relative_path, $phpbb_container;
// Create a normal container now
$phpbb_container = phpbb_create_default_container($phpbb_root_path, $phpEx);
$phpbb_container = phpbb_create_update_container($phpbb_root_path, $phpEx, $phpbb_root_path . 'install/update/new/config');
// Writes into global $cache
$cache = $phpbb_container->get('cache');
@ -125,7 +125,7 @@ class install_update extends module
$config['default_lang'] = $language;
$user->data['user_lang'] = $language;
$user->setup(array('common', 'acp/common', 'acp/board', 'install', 'posting'));
$user->add_lang(array('common', 'acp/common', 'acp/board', 'install', 'posting'));
// Reset the default_lang
$config['default_lang'] = $config_default_lang;
@ -302,30 +302,6 @@ class install_update extends module
break;
case 'update_db':
// Make sure the database update is valid for the latest version
$valid = false;
$updates_to_version = '';
if (file_exists($phpbb_root_path . 'install/database_update.' . $phpEx))
{
include_once($phpbb_root_path . 'install/database_update.' . $phpEx);
if ($updates_to_version === $this->update_info['version']['to'])
{
$valid = true;
}
}
// Should not happen at all
if (!$valid)
{
trigger_error($user->lang['DATABASE_UPDATE_INFO_OLD'], E_USER_ERROR);
}
// Just a precaution
$cache->purge();
// Redirect the user to the database update script with some explanations...
$template->assign_vars(array(
'S_DB_UPDATE' => true,