From b8dfbfe390590c16cc6a9a829ce17d55482ae230 Mon Sep 17 00:00:00 2001 From: MateBartus Date: Tue, 24 Feb 2015 21:06:53 +0100 Subject: [PATCH 1/3] [ticket/13636] Deleting inactive user in acp_users gives unexpected link Success message did not provide the expected "previous page" link (acp_inactive was expected, but the link took users to acp_users) if the acp_users module was accessed by navigating from the inactive user list to acp_users and then deleting inactive user. PHPBB3-13636 --- phpBB/includes/acp/acp_inactive.php | 2 +- phpBB/includes/acp/acp_users.php | 25 ++++++++++++++++++++----- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/phpBB/includes/acp/acp_inactive.php b/phpBB/includes/acp/acp_inactive.php index e96c42de05..473ef01b6a 100644 --- a/phpBB/includes/acp/acp_inactive.php +++ b/phpBB/includes/acp/acp_inactive.php @@ -271,7 +271,7 @@ class acp_inactive 'REMINDED_EXPLAIN' => $user->lang('USER_LAST_REMINDED', (int) $row['user_reminded'], $user->format_date($row['user_reminded_time'])), - 'USERNAME_FULL' => get_username_string('full', $row['user_id'], $row['username'], $row['user_colour'], false, append_sid("{$phpbb_admin_path}index.$phpEx", 'i=users&mode=overview')), + 'USERNAME_FULL' => get_username_string('full', $row['user_id'], $row['username'], $row['user_colour'], false, append_sid("{$phpbb_admin_path}index.$phpEx", 'i=users&mode=overview&referer=acp_inactive')), 'USERNAME' => get_username_string('username', $row['user_id'], $row['username'], $row['user_colour']), 'USER_COLOR' => get_username_string('colour', $row['user_id'], $row['username'], $row['user_colour']), diff --git a/phpBB/includes/acp/acp_users.php b/phpBB/includes/acp/acp_users.php index 3c957a7093..05852bff6d 100644 --- a/phpBB/includes/acp/acp_users.php +++ b/phpBB/includes/acp/acp_users.php @@ -44,6 +44,10 @@ class acp_users $user_id = request_var('u', 0); $action = request_var('action', ''); + $referer = request_var('referer', ''); + $referer_tag = "referer=$referer"; + $referer_url = append_sid("{$phpbb_admin_path}index.$phpEx", "i=$referer"); + $submit = (isset($_POST['update']) && !isset($_POST['cancel'])) ? true : false; $form_name = 'acp_users'; @@ -146,9 +150,9 @@ class acp_users } $template->assign_vars(array( - 'U_BACK' => $this->u_action, + 'U_BACK' => ( (empty($referer)) ? $this->u_action : $referer_url ), 'U_MODE_SELECT' => append_sid("{$phpbb_admin_path}index.$phpEx", "i=$id&u=$user_id"), - 'U_ACTION' => $this->u_action . '&u=' . $user_id, + 'U_ACTION' => $this->u_action . '&u=' . $user_id . ( (empty($referer)) ? '' : '&' . $referer_tag ), 'S_FORM_OPTIONS' => $s_form_options, 'MANAGED_USERNAME' => $user_row['username']) ); @@ -221,19 +225,30 @@ class acp_users user_delete($delete_type, $user_id, $user_row['username']); add_log('admin', 'LOG_USER_DELETED', $user_row['username']); - trigger_error($user->lang['USER_DELETED'] . adm_back_link($this->u_action)); + trigger_error($user->lang['USER_DELETED'] . adm_back_link( + (empty($referer)) ? $this->u_action : $referer_url + ) + ); } else { - confirm_box(false, $user->lang['CONFIRM_OPERATION'], build_hidden_fields(array( + $delete_confirm_hidden_fields = array( 'u' => $user_id, 'i' => $id, 'mode' => $mode, 'action' => $action, 'update' => true, 'delete' => 1, - 'delete_type' => $delete_type)) + 'delete_type' => $delete_type ); + + // Checks if the redirection page is specified + if (!empty($referer)) + { + $delete_confirm_hidden_fields['referer'] = $referer; + } + + confirm_box(false, $user->lang['CONFIRM_OPERATION'], build_hidden_fields($delete_confirm_hidden_fields)); } } else From 19fe32d5b2bad52cac9fd86de8f0120405b69119 Mon Sep 17 00:00:00 2001 From: MateBartus Date: Tue, 24 Feb 2015 21:23:58 +0100 Subject: [PATCH 2/3] [ticket/13636] Deleting inactive user in acp_users gives unexpected link Change "referer" to "redirect" in variable names and GET params as well. PHPBB3-13636 --- phpBB/includes/acp/acp_inactive.php | 2 +- phpBB/includes/acp/acp_users.php | 17 +++++++++-------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/phpBB/includes/acp/acp_inactive.php b/phpBB/includes/acp/acp_inactive.php index 473ef01b6a..4a70401026 100644 --- a/phpBB/includes/acp/acp_inactive.php +++ b/phpBB/includes/acp/acp_inactive.php @@ -271,7 +271,7 @@ class acp_inactive 'REMINDED_EXPLAIN' => $user->lang('USER_LAST_REMINDED', (int) $row['user_reminded'], $user->format_date($row['user_reminded_time'])), - 'USERNAME_FULL' => get_username_string('full', $row['user_id'], $row['username'], $row['user_colour'], false, append_sid("{$phpbb_admin_path}index.$phpEx", 'i=users&mode=overview&referer=acp_inactive')), + 'USERNAME_FULL' => get_username_string('full', $row['user_id'], $row['username'], $row['user_colour'], false, append_sid("{$phpbb_admin_path}index.$phpEx", 'i=users&mode=overview&redirect=acp_inactive')), 'USERNAME' => get_username_string('username', $row['user_id'], $row['username'], $row['user_colour']), 'USER_COLOR' => get_username_string('colour', $row['user_id'], $row['username'], $row['user_colour']), diff --git a/phpBB/includes/acp/acp_users.php b/phpBB/includes/acp/acp_users.php index 05852bff6d..26ea1a2c11 100644 --- a/phpBB/includes/acp/acp_users.php +++ b/phpBB/includes/acp/acp_users.php @@ -44,9 +44,10 @@ class acp_users $user_id = request_var('u', 0); $action = request_var('action', ''); - $referer = request_var('referer', ''); - $referer_tag = "referer=$referer"; - $referer_url = append_sid("{$phpbb_admin_path}index.$phpEx", "i=$referer"); + // Get referer to redirect user to the appropriate page after delete action + $redirect = request_var('redirect', ''); + $redirect_tag = "redirect=$redirect"; + $redirect_url = append_sid("{$phpbb_admin_path}index.$phpEx", "i=$redirect"); $submit = (isset($_POST['update']) && !isset($_POST['cancel'])) ? true : false; @@ -150,9 +151,9 @@ class acp_users } $template->assign_vars(array( - 'U_BACK' => ( (empty($referer)) ? $this->u_action : $referer_url ), + 'U_BACK' => ( (empty($redirect)) ? $this->u_action : $redirect_url ), 'U_MODE_SELECT' => append_sid("{$phpbb_admin_path}index.$phpEx", "i=$id&u=$user_id"), - 'U_ACTION' => $this->u_action . '&u=' . $user_id . ( (empty($referer)) ? '' : '&' . $referer_tag ), + 'U_ACTION' => $this->u_action . '&u=' . $user_id . ( (empty($redirect)) ? '' : '&' . $redirect_tag ), 'S_FORM_OPTIONS' => $s_form_options, 'MANAGED_USERNAME' => $user_row['username']) ); @@ -226,7 +227,7 @@ class acp_users add_log('admin', 'LOG_USER_DELETED', $user_row['username']); trigger_error($user->lang['USER_DELETED'] . adm_back_link( - (empty($referer)) ? $this->u_action : $referer_url + (empty($redirect)) ? $this->u_action : $redirect_url ) ); } @@ -243,9 +244,9 @@ class acp_users ); // Checks if the redirection page is specified - if (!empty($referer)) + if (!empty($redirect)) { - $delete_confirm_hidden_fields['referer'] = $referer; + $delete_confirm_hidden_fields['redirect'] = $redirect; } confirm_box(false, $user->lang['CONFIRM_OPERATION'], build_hidden_fields($delete_confirm_hidden_fields)); From cc29638bcc23bf62d8b379ebe31577cb8fea04fb Mon Sep 17 00:00:00 2001 From: MateBartus Date: Mon, 6 Apr 2015 13:15:39 +0200 Subject: [PATCH 3/3] [ticket/13636] Fix coding style PHPBB3-13636 --- phpBB/includes/acp/acp_users.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/phpBB/includes/acp/acp_users.php b/phpBB/includes/acp/acp_users.php index 26ea1a2c11..503f137433 100644 --- a/phpBB/includes/acp/acp_users.php +++ b/phpBB/includes/acp/acp_users.php @@ -151,9 +151,9 @@ class acp_users } $template->assign_vars(array( - 'U_BACK' => ( (empty($redirect)) ? $this->u_action : $redirect_url ), + 'U_BACK' => (empty($redirect)) ? $this->u_action : $redirect_url, 'U_MODE_SELECT' => append_sid("{$phpbb_admin_path}index.$phpEx", "i=$id&u=$user_id"), - 'U_ACTION' => $this->u_action . '&u=' . $user_id . ( (empty($redirect)) ? '' : '&' . $redirect_tag ), + 'U_ACTION' => $this->u_action . '&u=' . $user_id . ((empty($redirect)) ? '' : '&' . $redirect_tag), 'S_FORM_OPTIONS' => $s_form_options, 'MANAGED_USERNAME' => $user_row['username']) ); @@ -240,7 +240,7 @@ class acp_users 'action' => $action, 'update' => true, 'delete' => 1, - 'delete_type' => $delete_type + 'delete_type' => $delete_type, ); // Checks if the redirection page is specified