[feature/migrations] Add language strings for migrations errors

Unfulfillable returns string of the missing dependency name now if
the migration is unfulfillable (this is significantly more helpful).

PHPBB3-11351
This commit is contained in:
Nathaniel Guse 2013-02-09 20:56:42 -06:00
parent fa33eae556
commit cacaffee6e
5 changed files with 71 additions and 14 deletions

View file

@ -49,7 +49,7 @@ class phpbb_db_migration_tool_config implements phpbb_db_migration_tool_interfac
{ {
if (isset($this->config[$config_name])) if (isset($this->config[$config_name]))
{ {
throw new phpbb_db_migration_exception('CONFIG_ALREADY_EXISTS', $config_name); throw new phpbb_db_migration_exception('CONFIG_ALREADY_EXIST', $config_name);
} }
$this->config->set($config_name, $config_value, !$is_dynamic); $this->config->set($config_name, $config_value, !$is_dynamic);

View file

@ -242,14 +242,14 @@ class phpbb_db_migration_tool_module implements phpbb_db_migration_tool_interfac
if (!$module_id) if (!$module_id)
{ {
throw new phpbb_db_migration_exception('MODULE_PARENT_NOT_EXIST', $parent); throw new phpbb_db_migration_exception('MODULE_NOT_EXIST', $parent);
} }
$parent = $data['parent_id'] = $module_id; $parent = $data['parent_id'] = $module_id;
} }
else if (!$this->exists($class, false, $parent)) else if (!$this->exists($class, false, $parent))
{ {
throw new phpbb_db_migration_exception('MODULE_PARENT_NOT_EXIST', $parent); throw new phpbb_db_migration_exception('MODULE_NOT_EXIST', $parent);
} }
if ($this->exists($class, $parent, $data['module_langname'])) if ($this->exists($class, $parent, $data['module_langname']))
@ -477,7 +477,7 @@ class phpbb_db_migration_tool_module implements phpbb_db_migration_tool_interfac
$result = $acp_modules->delete_module($module_id); $result = $acp_modules->delete_module($module_id);
if (!empty($result)) if (!empty($result))
{ {
throw new phpbb_db_migration_exception('CANNOT_REMOVE_MODULE', $module_id); throw new phpbb_db_migration_exception('MODULE_NOT_REMOVABLE', $module_id, $result);
} }
} }

View file

@ -107,7 +107,7 @@ class phpbb_db_migration_tool_permission implements phpbb_db_migration_tool_inte
{ {
if ($this->exists($auth_option, $global)) if ($this->exists($auth_option, $global))
{ {
throw new phpbb_db_migration_exception('PERMISSION_ALREADY_EXISTS', $auth_option); throw new phpbb_db_migration_exception('PERMISSION_ALREADY_EXIST', $auth_option);
} }
// We've added permissions, so set to true to notify the user. // We've added permissions, so set to true to notify the user.
@ -252,7 +252,7 @@ class phpbb_db_migration_tool_permission implements phpbb_db_migration_tool_inte
if ($role_id) if ($role_id)
{ {
throw new phpbb_db_migration_exception('ROLE_ALREADY_EXISTS', $old_role_name); return;
} }
$sql = 'SELECT MAX(role_order) AS max_role_order $sql = 'SELECT MAX(role_order) AS max_role_order
@ -290,7 +290,7 @@ class phpbb_db_migration_tool_permission implements phpbb_db_migration_tool_inte
if (!$role_id) if (!$role_id)
{ {
throw new phpbb_db_migration_exception('ROLE_NOT_EXISTS', $old_role_name); throw new phpbb_db_migration_exception('ROLE_NOT_EXIST', $old_role_name);
} }
$sql = 'UPDATE ' . ACL_ROLES_TABLE . " $sql = 'UPDATE ' . ACL_ROLES_TABLE . "

View file

@ -228,9 +228,10 @@ class phpbb_db_migrator
{ {
foreach ($this->migrations as $name) foreach ($this->migrations as $name)
{ {
if ($this->unfulfillable($name)) $unfulfillable = $this->unfulfillable($name);
if ($unfulfillable !== false)
{ {
throw new phpbb_db_migration_exception('MIGRATION NOT FULFILLABLE', $name); throw new phpbb_db_migration_exception('MIGRATION_NOT_FULFILLABLE', $name, $unfulfillable);
} }
} }
} }
@ -674,13 +675,13 @@ class phpbb_db_migrator
* Checks if a migration's dependencies can even theoretically be satisfied. * Checks if a migration's dependencies can even theoretically be satisfied.
* *
* @param string $name The class name of the migration * @param string $name The class name of the migration
* @return bool Whether the migration cannot be fulfilled * @return bool|string False if fulfillable, string of missing migration name if unfulfillable
*/ */
public function unfulfillable($name) public function unfulfillable($name)
{ {
if (isset($this->migration_state[$name])) if (isset($this->migration_state[$name]))
{ {
return false; return $name;
} }
if (!class_exists($name)) if (!class_exists($name))
@ -693,9 +694,10 @@ class phpbb_db_migrator
foreach ($depends as $depend) foreach ($depends as $depend)
{ {
if ($this->unfulfillable($depend)) $unfulfillable = $this->unfulfillable($depend);
if ($unfulfillable !== false)
{ {
return true; return $unfulfillable;
} }
} }
@ -715,7 +717,7 @@ class phpbb_db_migrator
{ {
// skip unfulfillable migrations, but fulfillables mean we // skip unfulfillable migrations, but fulfillables mean we
// are not finished yet // are not finished yet
if ($this->unfulfillable($name)) if ($this->unfulfillable($name) !== false)
{ {
continue; continue;
} }

View file

@ -0,0 +1,55 @@
<?php
/**
*
* migrator [English]
*
* @package language
* @copyright (c) 2013 phpBB Group
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
*
*/
/**
* DO NOT CHANGE
*/
if (!defined('IN_PHPBB'))
{
exit;
}
if (empty($lang) || !is_array($lang))
{
$lang = array();
}
// DEVELOPERS PLEASE NOTE
//
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
//
// Placeholders can now contain order information, e.g. instead of
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
// translators to re-order the output of data while ensuring it remains correct
//
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
// equally where a string contains only two placeholders which are used to wrap text
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
$lang = array_merge($lang, array(
'CONFIG_ALREADY_EXIST' => 'The config setting "%s" unexpectedly already exists.',
'CONFIG_NOT_EXIST' => 'The config setting "%s" unexpectedly does not exist.',
'GROUP_NOT_EXIST' => 'The group "%s" unexpectedly does not exist.',
'MIGRATION_NOT_FULFILLABLE' => 'The migration "%1$s" is not fulfillable, missing migration "%2$s".',
'MODULE_ALREADY_EXIST' => 'The module "%s" unexpectedly already exists.',
'MODULE_ERROR' => 'An error occured while creating a module: %s',
'MODULE_INFO_FILE_NOT_EXIST' => 'A required module info file is missing: %2$s',
'MODULE_NOT_EXIST' => 'A required module does not exist: %s',
'MODULE_NOT_REMOVABLE' => 'Module %1$s was unable to be removed: %2$s',
'PERMISSION_ALREADY_EXIST' => 'The permission setting "%s" unexpectedly already exists.',
'PERMISSION_NOT_EXIST' => 'The permission setting "%s" unexpectedly does not exist.',
'ROLE_NOT_EXIST' => 'The permission role "%s" unexpectedly does not exist.',
));