aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMeik Sievertsen <acydburn@phpbb.com>2007-01-24 11:29:56 +0000
committerMeik Sievertsen <acydburn@phpbb.com>2007-01-24 11:29:56 +0000
commit9e5c25504e275d8de071f2efafa349ebee21063c (patch)
tree86d37c1ed2b20eca9575084be7668d7b32dcf644
parent180a5a243d03803fef0d32a6aaa2d6899a83dfcc (diff)
downloadforums-9e5c25504e275d8de071f2efafa349ebee21063c.tar
forums-9e5c25504e275d8de071f2efafa349ebee21063c.tar.gz
forums-9e5c25504e275d8de071f2efafa349ebee21063c.tar.bz2
forums-9e5c25504e275d8de071f2efafa349ebee21063c.tar.xz
forums-9e5c25504e275d8de071f2efafa349ebee21063c.zip
- added confirm box to ucp zebra (adding fried/foe)
- permission fixes for conversions - use more appropiate error message within convertor if source tables could not be found - other tiny fixes git-svn-id: file:///svn/phpbb/trunk@6925 89ea8834-ac86-4346-8a33-228a782c2dd0
-rw-r--r--phpBB/includes/acp/acp_ban.php14
-rw-r--r--phpBB/includes/acp/acp_language.php11
-rw-r--r--phpBB/includes/functions_module.php2
-rw-r--r--phpBB/includes/functions_transfer.php6
-rw-r--r--phpBB/includes/functions_upload.php4
-rw-r--r--phpBB/includes/functions_user.php3
-rw-r--r--phpBB/includes/mcp/mcp_ban.php14
-rw-r--r--phpBB/includes/ucp/ucp_zebra.php261
-rw-r--r--phpBB/install/convertors/functions_phpbb20.php27
-rw-r--r--phpBB/install/install_convert.php2
-rw-r--r--phpBB/language/en/acp/common.php1
-rw-r--r--phpBB/language/en/acp/groups.php10
-rw-r--r--phpBB/language/en/acp/language.php1
-rw-r--r--phpBB/language/en/acp/users.php9
-rw-r--r--phpBB/language/en/common.php1
-rwxr-xr-xphpBB/language/en/install.php2
-rw-r--r--phpBB/memberlist.php2
17 files changed, 213 insertions, 157 deletions
diff --git a/phpBB/includes/acp/acp_ban.php b/phpBB/includes/acp/acp_ban.php
index d28319c731..bd05cf7b1c 100644
--- a/phpBB/includes/acp/acp_ban.php
+++ b/phpBB/includes/acp/acp_ban.php
@@ -40,17 +40,23 @@ class acp_ban
$ban_reason = request_var('banreason', '', true);
$ban_give_reason = request_var('bangivereason', '', true);
- user_ban($mode, $ban, $ban_len, $ban_len_other, $ban_exclude, $ban_reason, $ban_give_reason);
+ if ($ban)
+ {
+ user_ban($mode, $ban, $ban_len, $ban_len_other, $ban_exclude, $ban_reason, $ban_give_reason);
- trigger_error($user->lang['BAN_UPDATE_SUCCESSFUL'] . adm_back_link($this->u_action));
+ trigger_error($user->lang['BAN_UPDATE_SUCCESSFUL'] . adm_back_link($this->u_action));
+ }
}
else if ($unbansubmit)
{
$ban = request_var('unban', array(''));
- user_unban($mode, $ban);
+ if ($ban)
+ {
+ user_unban($mode, $ban);
- trigger_error($user->lang['BAN_UPDATE_SUCCESSFUL'] . adm_back_link($this->u_action));
+ trigger_error($user->lang['BAN_UPDATE_SUCCESSFUL'] . adm_back_link($this->u_action));
+ }
}
// Define language vars
diff --git a/phpBB/includes/acp/acp_language.php b/phpBB/includes/acp/acp_language.php
index 153c200aeb..5064e1848f 100644
--- a/phpBB/includes/acp/acp_language.php
+++ b/phpBB/includes/acp/acp_language.php
@@ -320,7 +320,16 @@ class acp_language
}
$transfer->rename($lang_path . $file, $lang_path . $file . '.bak');
- $transfer->copy_file('store/' . $lang_path . $file, $lang_path . $file);
+ $result = $transfer->copy_file('store/' . $lang_path . $file, $lang_path . $file);
+
+ if ($result === false)
+ {
+ // If failed, try to rename again and print error out...
+ $transfer->rename($lang_path . $file . '.bak', $lang_path . $file);
+
+ trigger_error($user->lang['UPLOAD_FAILED'] . adm_back_link($this->u_action . '&amp;action=details&amp;id=' . $lang_id . '&amp;language_file=' . urlencode($selected_lang_file)), E_USER_WARNING);
+ }
+
$transfer->close_session();
// Remove from storage folder
diff --git a/phpBB/includes/functions_module.php b/phpBB/includes/functions_module.php
index 1ad543c298..d45358327f 100644
--- a/phpBB/includes/functions_module.php
+++ b/phpBB/includes/functions_module.php
@@ -445,7 +445,7 @@ class p_master
}
// Add url_extra parameter to u_action url
- if ($this->module_ary[$this->active_module_row_id]['url_extra'])
+ if (!empty($this->module_ary) && $this->active_module !== false && $this->module_ary[$this->active_module_row_id]['url_extra'])
{
$this->module->u_action .= $this->module_ary[$this->active_module_row_id]['url_extra'];
}
diff --git a/phpBB/includes/functions_transfer.php b/phpBB/includes/functions_transfer.php
index 8c00f2b1dd..883c9a7177 100644
--- a/phpBB/includes/functions_transfer.php
+++ b/phpBB/includes/functions_transfer.php
@@ -32,8 +32,8 @@ class transfer
{
global $phpbb_root_path;
- $this->file_perms = 644;
- $this->dir_perms = 777;
+ $this->file_perms = '0644';
+ $this->dir_perms = '0777';
// We use the store directory as temporary path to circumvent open basedir restrictions
$this->tmp_path = $phpbb_root_path . 'store/';
@@ -382,7 +382,7 @@ class ftp extends transfer
}
else
{
- $chmod_cmd = 'CHMOD 0' . $perms . ' ' . $file;
+ $chmod_cmd = 'CHMOD ' . $perms . ' ' . $file;
$err = $this->_site($chmod_cmd);
}
diff --git a/phpBB/includes/functions_upload.php b/phpBB/includes/functions_upload.php
index e28c7fa64f..33556e1893 100644
--- a/phpBB/includes/functions_upload.php
+++ b/phpBB/includes/functions_upload.php
@@ -50,8 +50,8 @@ class filespec
$this->filename = $upload_ary['tmp_name'];
$this->filesize = $upload_ary['size'];
- $this->realname = $this->uploadname = trim(htmlspecialchars(basename($upload_ary['name'])));
- $this->mimetype = $upload_ary['type'];
+ $name = trim(htmlspecialchars(basename($upload_ary['name'])));
+ $this->realname = $this->uploadname = (STRIP) ? stripslashes($name) : $name;
// Opera adds the name to the mime type
$this->mimetype = (strpos($this->mimetype, '; name') !== false) ? str_replace(strstr($this->mimetype, '; name'), '', $this->mimetype) : $this->mimetype;
diff --git a/phpBB/includes/functions_user.php b/phpBB/includes/functions_user.php
index 7cceda0dd2..e9297d490f 100644
--- a/phpBB/includes/functions_user.php
+++ b/phpBB/includes/functions_user.php
@@ -825,6 +825,9 @@ function user_ban($mode, $ban, $ban_len, $ban_len_other, $ban_exclude, $ban_reas
AND ban_exclude = $ban_exclude";
$result = $db->sql_query($sql);
+ // Reset $sql_where, because we use it later...
+ $sql_where = '';
+
if ($row = $db->sql_fetchrow($result))
{
$banlist_ary_tmp = array();
diff --git a/phpBB/includes/mcp/mcp_ban.php b/phpBB/includes/mcp/mcp_ban.php
index 5a7240143a..aea2466888 100644
--- a/phpBB/includes/mcp/mcp_ban.php
+++ b/phpBB/includes/mcp/mcp_ban.php
@@ -43,17 +43,23 @@ class mcp_ban
$ban_reason = request_var('banreason', '', true);
$ban_give_reason = request_var('bangivereason', '', true);
- user_ban($mode, $ban, $ban_len, $ban_len_other, $ban_exclude, $ban_reason, $ban_give_reason);
+ if ($ban)
+ {
+ user_ban($mode, $ban, $ban_len, $ban_len_other, $ban_exclude, $ban_reason, $ban_give_reason);
- trigger_error($user->lang['BAN_UPDATE_SUCCESSFUL'] . '<br /><br /><a href="' . $this->u_action . '">&laquo; ' . $user->lang['BACK_TO_PREV'] . '</a>');
+ trigger_error($user->lang['BAN_UPDATE_SUCCESSFUL'] . '<br /><br /><a href="' . $this->u_action . '">&laquo; ' . $user->lang['BACK_TO_PREV'] . '</a>');
+ }
}
else if ($unbansubmit)
{
$ban = request_var('unban', array(''));
- user_unban($mode, $ban);
+ if ($ban)
+ {
+ user_unban($mode, $ban);
- trigger_error($user->lang['BAN_UPDATE_SUCCESSFUL'] . '<br /><br /><a href="' . $this->u_action . '">&laquo; ' . $user->lang['BACK_TO_PREV'] . '</a>');
+ trigger_error($user->lang['BAN_UPDATE_SUCCESSFUL'] . '<br /><br /><a href="' . $this->u_action . '">&laquo; ' . $user->lang['BACK_TO_PREV'] . '</a>');
+ }
}
// Ban length options
diff --git a/phpBB/includes/ucp/ucp_zebra.php b/phpBB/includes/ucp/ucp_zebra.php
index a3155870d8..3c9abfe5b4 100644
--- a/phpBB/includes/ucp/ucp_zebra.php
+++ b/phpBB/includes/ucp/ucp_zebra.php
@@ -40,159 +40,174 @@ class ucp_zebra
$data[$var] = request_var($var, $default, true);
}
- if ($data['add'])
+ if (!empty($data['add']) || sizeof($data['usernames']))
{
- $data['add'] = array_map('trim', array_map('utf8_clean_string', explode("\n", $data['add'])));
-
- // Do these name/s exist on a list already? If so, ignore ... we could be
- // 'nice' and automatically handle names added to one list present on
- // the other (by removing the existing one) ... but I have a feeling this
- // may lead to complaints
- $sql = 'SELECT z.*, u.username, u.username_clean
- FROM ' . ZEBRA_TABLE . ' z, ' . USERS_TABLE . ' u
- WHERE z.user_id = ' . $user->data['user_id'] . '
- AND u.user_id = z.zebra_id';
- $result = $db->sql_query($sql);
-
- $friends = $foes = array();
- while ($row = $db->sql_fetchrow($result))
+ if (confirm_box(true))
{
- if ($row['friend'])
+ if ($data['add'])
{
- $friends[] = utf8_clean_string($row['username']);
- }
- else
- {
- $foes[] = utf8_clean_string($row['username']);
- }
- }
- $db->sql_freeresult($result);
-
- // remove friends from the username array
- $n = sizeof($data['add']);
- $data['add'] = array_diff($data['add'], $friends);
-
- if (sizeof($data['add']) < $n && $mode == 'foes')
- {
- $error[] = $user->lang['NOT_ADDED_FOES_FRIENDS'];
- }
-
- // remove foes from the username array
- $n = sizeof($data['add']);
- $data['add'] = array_diff($data['add'], $foes);
-
- if (sizeof($data['add']) < $n && $mode == 'friends')
- {
- $error[] = $user->lang['NOT_ADDED_FRIENDS_FOES'];
- }
+ $data['add'] = array_map('trim', array_map('utf8_clean_string', explode("\n", $data['add'])));
+
+ // Do these name/s exist on a list already? If so, ignore ... we could be
+ // 'nice' and automatically handle names added to one list present on
+ // the other (by removing the existing one) ... but I have a feeling this
+ // may lead to complaints
+ $sql = 'SELECT z.*, u.username, u.username_clean
+ FROM ' . ZEBRA_TABLE . ' z, ' . USERS_TABLE . ' u
+ WHERE z.user_id = ' . $user->data['user_id'] . '
+ AND u.user_id = z.zebra_id';
+ $result = $db->sql_query($sql);
+
+ $friends = $foes = array();
+ while ($row = $db->sql_fetchrow($result))
+ {
+ if ($row['friend'])
+ {
+ $friends[] = utf8_clean_string($row['username']);
+ }
+ else
+ {
+ $foes[] = utf8_clean_string($row['username']);
+ }
+ }
+ $db->sql_freeresult($result);
- // remove the user himself from the username array
- $n = sizeof($data['add']);
- $data['add'] = array_diff($data['add'], array(utf8_clean_string($user->data['username'])));
+ // remove friends from the username array
+ $n = sizeof($data['add']);
+ $data['add'] = array_diff($data['add'], $friends);
- if (sizeof($data['add']) < $n)
- {
- $error[] = $user->lang['NOT_ADDED_' . $l_mode . '_SELF'];
- }
+ if (sizeof($data['add']) < $n && $mode == 'foes')
+ {
+ $error[] = $user->lang['NOT_ADDED_FOES_FRIENDS'];
+ }
- unset($friends, $foes, $n);
+ // remove foes from the username array
+ $n = sizeof($data['add']);
+ $data['add'] = array_diff($data['add'], $foes);
- if (sizeof($data['add']))
- {
- $sql = 'SELECT user_id, user_type
- FROM ' . USERS_TABLE . '
- WHERE ' . $db->sql_in_set('username_clean', $data['add']) . '
- AND user_type <> ' . USER_INACTIVE;
- $result = $db->sql_query($sql);
-
- $user_id_ary = array();
- while ($row = $db->sql_fetchrow($result))
- {
- if ($row['user_id'] != ANONYMOUS && $row['user_type'] != USER_IGNORE)
+ if (sizeof($data['add']) < $n && $mode == 'friends')
{
- $user_id_ary[] = $row['user_id'];
+ $error[] = $user->lang['NOT_ADDED_FRIENDS_FOES'];
}
- else
+
+ // remove the user himself from the username array
+ $n = sizeof($data['add']);
+ $data['add'] = array_diff($data['add'], array(utf8_clean_string($user->data['username'])));
+
+ if (sizeof($data['add']) < $n)
{
- $error[] = $user->lang['NOT_ADDED_' . $l_mode . '_ANONYMOUS'];
+ $error[] = $user->lang['NOT_ADDED_' . $l_mode . '_SELF'];
}
- }
- $db->sql_freeresult($result);
- if (sizeof($user_id_ary))
- {
- // Remove users from foe list if they are admins or moderators
- if ($mode == 'foes')
+ unset($friends, $foes, $n);
+
+ if (sizeof($data['add']))
{
- $perms = array();
- foreach ($auth->acl_get_list($user_id_ary, array('a_', 'm_')) as $forum_id => $forum_ary)
+ $sql = 'SELECT user_id, user_type
+ FROM ' . USERS_TABLE . '
+ WHERE ' . $db->sql_in_set('username_clean', $data['add']) . '
+ AND user_type <> ' . USER_INACTIVE;
+ $result = $db->sql_query($sql);
+
+ $user_id_ary = array();
+ while ($row = $db->sql_fetchrow($result))
{
- foreach ($forum_ary as $auth_option => $user_ary)
+ if ($row['user_id'] != ANONYMOUS && $row['user_type'] != USER_IGNORE)
{
- $perms = array_merge($perms, $user_ary);
+ $user_id_ary[] = $row['user_id'];
+ }
+ else
+ {
+ $error[] = $user->lang['NOT_ADDED_' . $l_mode . '_ANONYMOUS'];
}
}
+ $db->sql_freeresult($result);
- $perms = array_unique($perms);
-
- if (sizeof($perms))
+ if (sizeof($user_id_ary))
{
- $error[] = $user->lang['NOT_ADDED_FOES_MOD_ADMIN'];
- }
+ // Remove users from foe list if they are admins or moderators
+ if ($mode == 'foes')
+ {
+ $perms = array();
+ foreach ($auth->acl_get_list($user_id_ary, array('a_', 'm_')) as $forum_id => $forum_ary)
+ {
+ foreach ($forum_ary as $auth_option => $user_ary)
+ {
+ $perms = array_merge($perms, $user_ary);
+ }
+ }
+
+ $perms = array_unique($perms);
+
+ if (sizeof($perms))
+ {
+ $error[] = $user->lang['NOT_ADDED_FOES_MOD_ADMIN'];
+ }
+
+ // This may not be right ... it may yield true when perms equate to deny
+ $user_id_ary = array_diff($user_id_ary, $perms);
+ unset($perms);
+ }
- // This may not be right ... it may yield true when perms equate to deny
- $user_id_ary = array_diff($user_id_ary, $perms);
- unset($perms);
- }
+ if (sizeof($user_id_ary))
+ {
+ $sql_mode = ($mode == 'friends') ? 'friend' : 'foe';
- if (sizeof($user_id_ary))
- {
- $sql_mode = ($mode == 'friends') ? 'friend' : 'foe';
+ $sql_ary = array();
+ foreach ($user_id_ary as $zebra_id)
+ {
+ $sql_ary[] = array(
+ 'user_id' => $user->data['user_id'],
+ 'zebra_id' => (int) $zebra_id,
+ $sql_mode => 1
+ );
+ }
- $sql_ary = array();
- foreach ($user_id_ary as $zebra_id)
+ $db->sql_multi_insert(ZEBRA_TABLE, $sql_ary);
+
+ $updated = true;
+ }
+ unset($user_id_ary);
+ }
+ else if (!sizeof($error))
{
- $sql_ary[] = array(
- 'user_id' => $user->data['user_id'],
- 'zebra_id' => (int) $zebra_id,
- $sql_mode => 1
- );
+ $error[] = $user->lang['USER_NOT_FOUND_OR_INACTIVE'];
}
-
- $db->sql_multi_insert(ZEBRA_TABLE, $sql_ary);
-
- $updated = true;
}
- unset($user_id_ary);
}
- else if (!sizeof($error))
+ else if (sizeof($data['usernames']))
{
- $error[] = $user->lang['USER_NOT_FOUND_OR_INACTIVE'];
- }
- }
- }
- else if (sizeof($data['usernames']))
- {
- // Force integer values
- $data['usernames'] = array_map('intval', $data['usernames']);
+ // Force integer values
+ $data['usernames'] = array_map('intval', $data['usernames']);
- $sql = 'DELETE FROM ' . ZEBRA_TABLE . '
- WHERE user_id = ' . $user->data['user_id'] . '
- AND ' . $db->sql_in_set('zebra_id', $data['usernames']);
- $db->sql_query($sql);
+ $sql = 'DELETE FROM ' . ZEBRA_TABLE . '
+ WHERE user_id = ' . $user->data['user_id'] . '
+ AND ' . $db->sql_in_set('zebra_id', $data['usernames']);
+ $db->sql_query($sql);
- $updated = true;
- }
+ $updated = true;
+ }
- if ($updated)
- {
- meta_refresh(3, $this->u_action);
- $message = $user->lang[$l_mode . '_UPDATED'] . '<br />' . implode('<br />', $error) . ((sizeof($error)) ? '<br />' : '') . '<br />' . sprintf($user->lang['RETURN_UCP'], '<a href="' . $this->u_action . '">', '</a>');
- trigger_error($message);
- }
- else
- {
- $template->assign_var('ERROR', implode('<br />', $error));
+ if ($updated)
+ {
+ meta_refresh(3, $this->u_action);
+ $message = $user->lang[$l_mode . '_UPDATED'] . '<br />' . implode('<br />', $error) . ((sizeof($error)) ? '<br />' : '') . '<br />' . sprintf($user->lang['RETURN_UCP'], '<a href="' . $this->u_action . '">', '</a>');
+ trigger_error($message);
+ }
+ else
+ {
+ $template->assign_var('ERROR', implode('<br />', $error));
+ }
+ }
+ else
+ {
+ confirm_box(false, $user->lang['CONFIRM_OPERATION'], build_hidden_fields(array(
+ 'mode' => $mode,
+ 'submit' => true,
+ 'usernames' => $data['usernames'],
+ 'add' => $data['add']))
+ );
+ }
}
}
diff --git a/phpBB/install/convertors/functions_phpbb20.php b/phpBB/install/convertors/functions_phpbb20.php
index 043441c54b..05daae473b 100644
--- a/phpBB/install/convertors/functions_phpbb20.php
+++ b/phpBB/install/convertors/functions_phpbb20.php
@@ -390,7 +390,7 @@ function phpbb_get_birthday($birthday = '')
$day = substr($birthday, 2, 2);
$year = substr($birthday, -4);
- return sprintf('%02d-%02d-%04d', $day, $month, $year);
+ return sprintf('%2d-%2d-%4d', $day, $month, $year);
}
else
{
@@ -656,6 +656,13 @@ function phpbb_convert_authentication($mode)
$auth_sql .= ', {ADMINISTRATORS} FROM ' . $convert->src_table_prefix . 'users WHERE user_level = 1';
user_group_auth('administrators', $auth_sql);
+
+ // Put administrators into global moderators group too...
+ $auth_sql = 'SELECT ';
+ $auth_sql .= (!empty($config['increment_user_id'])) ? 'user_id + 1 as user_id' : 'user_id';
+ $auth_sql .= ', {GLOBAL_MODERATORS} FROM ' . $convert->src_table_prefix . 'users WHERE user_level = 1';
+
+ user_group_auth('global_moderators', $auth_sql);
}
else if ($mode == 'first')
{
@@ -801,16 +808,24 @@ function phpbb_convert_authentication($mode)
}
else if ($mode == 'second')
{
- // Assign permission roles
+ // Assign permission roles and other default permissions
- // By default all converted administrators are given full access
- // @todo Review the implications of this - we might want to remove access to clear logs, view phpinfo, etc
- mass_auth('group_role', 0, 'administrators', 'ADMIN_FULL');
- mass_auth('group_role', 0, 'administrators', 'MOD_FULL');
+ // guests having u_download and u_search ability
+ $db->sql_query('INSERT INTO ' . ACL_GROUPS_TABLE . ' (group_id, forum_id, auth_option_id, auth_role_id, auth_setting) SELECT ' . get_group_id('guests') . ', 0, auth_option_id, 0, 1 FROM ' . ACL_OPTIONS_TABLE . " WHERE auth_option IN ('u_', 'u_download', 'u_search')");
+
+ // administrators/global mods having full user features
mass_auth('group_role', 0, 'administrators', 'USER_FULL');
+ mass_auth('group_role', 0, 'global_moderators', 'USER_FULL');
+
+ // By default all converted administrators are given standard access (the founder still have full access)
+ mass_auth('group_role', 0, 'administrators', 'ADMIN_STANDARD');
// All registered users are assigned the standard user role
mass_auth('group_role', 0, 'registered', 'USER_STANDARD');
+ mass_auth('group_role', 0, 'registered_coppa', 'USER_STANDARD');
+
+ // Instead of administrators being global moderators we give the MOD_FULL role to global mods (admins already assigned to this group)
+ mass_auth('group_role', 0, 'global_moderators', 'MOD_FULL');
// And now those who have had their avatar rights removed get assigned a more restrictive role
$sql = 'SELECT user_id FROM ' . $convert->src_table_prefix . 'users
diff --git a/phpBB/install/install_convert.php b/phpBB/install/install_convert.php
index 3ae6b8be1c..83988ff05f 100644
--- a/phpBB/install/install_convert.php
+++ b/phpBB/install/install_convert.php
@@ -139,7 +139,7 @@ class install_convert extends module
// Let's see if there is a conversion in the works...
$options = array();
- if (isset($config['convert_progress']))
+ if (!empty($config['convert_progress']) && !empty($config['convert_options']))
{
$options = unserialize($config['convert_progress']);
$options = array_merge($options, unserialize($config['convert_options']));
diff --git a/phpBB/language/en/acp/common.php b/phpBB/language/en/acp/common.php
index d58c83a7ea..a35e239a81 100644
--- a/phpBB/language/en/acp/common.php
+++ b/phpBB/language/en/acp/common.php
@@ -202,7 +202,6 @@ $lang = array_merge($lang, array(
'COLOUR_SWATCH' => 'Web-safe colour swatch',
'CONFIG_UPDATED' => 'Configuration updated successfully.',
- 'CONFIRM_OPERATION' => 'Are you sure you wish to carry out this operation?',
'DEACTIVATE' => 'Deactivate',
'DIMENSIONS' => 'Dimensions',
diff --git a/phpBB/language/en/acp/groups.php b/phpBB/language/en/acp/groups.php
index ec40ddbdf4..dbe22e2154 100644
--- a/phpBB/language/en/acp/groups.php
+++ b/phpBB/language/en/acp/groups.php
@@ -41,7 +41,7 @@ $lang = array_merge($lang, array(
'GROUPS_NO_MEMBERS' => 'This group has no members',
'GROUPS_NO_MODS' => 'No group leaders defined',
- 'GROUP_APPROVE' => 'Approve',
+ 'GROUP_APPROVE' => 'Approve member',
'GROUP_APPROVED' => 'Approved members',
'GROUP_AVATAR' => 'Group avatar',
'GROUP_AVATAR_EXPLAIN' => 'This image will be displayed in the Group Control Panel.',
@@ -49,11 +49,11 @@ $lang = array_merge($lang, array(
'GROUP_COLOR' => 'Group colour',
'GROUP_COLOR_EXPLAIN' => 'Defines the colour members usernames will appear in, leave blank for user default.',
'GROUP_CREATED' => 'Group has been created successfully.',
- 'GROUP_DEFAULT' => 'Default',
+ 'GROUP_DEFAULT' => 'Make group default for member',
'GROUP_DEFS_UPDATED' => 'Default group set for all selected members.',
- 'GROUP_DELETE' => 'Delete',
+ 'GROUP_DELETE' => 'Remove member from group',
'GROUP_DELETED' => 'Group deleted and user default groups set successfully.',
- 'GROUP_DEMOTE' => 'Demote',
+ 'GROUP_DEMOTE' => 'Demote group leader',
'GROUP_DESC' => 'Group description',
'GROUP_DETAILS' => 'Group details',
'GROUP_DST' => 'Group daylight savings',
@@ -78,7 +78,7 @@ $lang = array_merge($lang, array(
'GROUP_NAME' => 'Group name',
'GROUP_OPEN' => 'Open',
'GROUP_PENDING' => 'Pending members',
- 'GROUP_PROMOTE' => 'Promote',
+ 'GROUP_PROMOTE' => 'Promote to group leader',
'GROUP_RANK' => 'Group rank',
'GROUP_RECEIVE_PM' => 'Group able to receive private messages',
'GROUP_REQUEST' => 'Request',
diff --git a/phpBB/language/en/acp/language.php b/phpBB/language/en/acp/language.php
index eaad88a9f7..4c60fdc116 100644
--- a/phpBB/language/en/acp/language.php
+++ b/phpBB/language/en/acp/language.php
@@ -87,6 +87,7 @@ $lang = array_merge($lang, array(
'UNABLE_TO_WRITE_FILE' => 'The file could not be written to %s.',
'UPLOAD_COMPLETED' => 'The upload was completed successfully.',
+ 'UPLOAD_FAILED' => 'The upload failed for unkown reasons. You may need to replace the relevant file manually.',
'UPLOAD_METHOD' => 'Upload method',
'UPLOAD_SETTINGS' => 'Upload settings',
diff --git a/phpBB/language/en/acp/users.php b/phpBB/language/en/acp/users.php
index 2424a88e2b..41deacbcaf 100644
--- a/phpBB/language/en/acp/users.php
+++ b/phpBB/language/en/acp/users.php
@@ -58,10 +58,11 @@ $lang = array_merge($lang, array(
'FOUNDER' => 'Founder',
'FOUNDER_EXPLAIN' => 'Founders have all admin permissions and can never be banned, deleted or altered by non-founder members',
- 'GROUP_DEFAULT' => 'Default',
- 'GROUP_DELETE' => 'Delete',
- 'GROUP_DEMOTE' => 'Demote',
- 'GROUP_PROMOTE' => 'Promote',
+ 'GROUP_APPROVE' => 'Approve member',
+ 'GROUP_DEFAULT' => 'Make group default for member',
+ 'GROUP_DELETE' => 'Remove member from group',
+ 'GROUP_DEMOTE' => 'Demote group leader',
+ 'GROUP_PROMOTE' => 'Promote to group leader',
'IP_WHOIS_FOR' => 'IP whois for %s',
diff --git a/phpBB/language/en/common.php b/phpBB/language/en/common.php
index c5f2cc0e78..3f00ca609b 100644
--- a/phpBB/language/en/common.php
+++ b/phpBB/language/en/common.php
@@ -110,6 +110,7 @@ $lang = array_merge($lang, array(
'CONFIRM_CODE' => 'Confirmation code',
'CONFIRM_CODE_EXPLAIN' => 'Enter the code exactly as you see it in the image, it is case insensitive. Please note that a zero does not exist.',
'CONFIRM_CODE_WRONG' => 'The confirmation code you entered was incorrect.',
+ 'CONFIRM_OPERATION' => 'Are you sure you wish to carry out this operation?',
'CONGRATULATIONS' => 'Congratulations to',
'CONNECTION_FAILED' => 'Connection failed',
'CONNECTION_SUCCESS' => 'Connection was successful!',
diff --git a/phpBB/language/en/install.php b/phpBB/language/en/install.php
index 18d70cd112..f43ba97bb2 100755
--- a/phpBB/language/en/install.php
+++ b/phpBB/language/en/install.php
@@ -123,7 +123,7 @@ $lang = array_merge($lang, array(
'DB_USERNAME' => 'Database username',
'DB_TEST' => 'Test connection',
'DEFAULT_LANG' => 'Default board language',
- 'DEFAULT_PREFIX_IS' => 'The default table prefix for %1$s is <strong>%2$s</strong>',
+ 'DEFAULT_PREFIX_IS' => 'The convertor was not able to find tables with the specified prefix. Please make sure you have the old within the same database as your phpBB 3.0.x installation. The default table prefix for %1$s is <strong>%2$s</strong>',
'DEV_NO_TEST_FILE' => 'No value has been specified for the test_file variable in the convertor. If you are a user of this convertor, you should not be seeing this error, please report this message to the convertor author. If you are a convertor author, you must specify the name of a file which exists in the source forum to allow the path to it to be verified.',
'DIRECTORIES_AND_FILES' => 'Directory and file setup',
'DISABLE_KEYS' => 'Disabling keys',
diff --git a/phpBB/memberlist.php b/phpBB/memberlist.php
index 31647cfe89..ee467edff6 100644
--- a/phpBB/memberlist.php
+++ b/phpBB/memberlist.php
@@ -518,7 +518,7 @@ switch ($mode)
'U_ADD_FRIEND' => (!$friend) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=zebra&amp;add=' . urlencode(htmlspecialchars_decode($member['username']))) : '',
'U_ADD_FOE' => (!$foe) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=zebra&amp;mode=foes&amp;add=' . urlencode(htmlspecialchars_decode($member['username']))) : '',
'U_REMOVE_FRIEND' => ($friend) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=zebra&amp;remove=1&amp;usernames[]=' . $user_id) : '',
- 'U_REMOVE_FOE' => ($foe) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=zebra&amp;remove=1&amp;usernames[]=' . $user_id) : '',
+ 'U_REMOVE_FOE' => ($foe) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=zebra&amp;remove=1&amp;mode=foes&amp;usernames[]=' . $user_id) : '',
));
if (!empty($profile_fields['row']))