diff --git a/phpBB/adm/style/acp_users_avatar.html b/phpBB/adm/style/acp_users_avatar.html
index c0ec9e5f8c..6316ff4a22 100644
--- a/phpBB/adm/style/acp_users_avatar.html
+++ b/phpBB/adm/style/acp_users_avatar.html
@@ -6,18 +6,52 @@
{L_AVATAR_EXPLAIN}
- {AVATAR}
-
-
-
-
-
+
+
+
+
{S_FORM_TOKEN}
diff --git a/phpBB/includes/acp/acp_users.php b/phpBB/includes/acp/acp_users.php
index 9c8a1c683e..bcce458e20 100644
--- a/phpBB/includes/acp/acp_users.php
+++ b/phpBB/includes/acp/acp_users.php
@@ -1689,53 +1689,17 @@ class acp_users
{
$avatar_manager = new phpbb_avatar_manager($phpbb_root_path, $phpEx, $config, $cache->getDriver());
- if (isset($_POST['av_delete']))
- {
- if (!check_form_key($form_name))
- {
- trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action . '&u=' . $user_id), E_USER_WARNING);
- }
-
- $result = array(
- 'user_avatar' => '',
- 'user_avatar_type' => '',
- 'user_avatar_height' => 0,
- 'user_avatar_width' => 0,
- );
-
- if ($driver = $avatar_manager->get_driver($user_row['user_avatar_type']))
- {
- $driver->delete($user_row);
- }
-
- $sql = 'UPDATE ' . USERS_TABLE . '
- SET ' . $db->sql_build_array('UPDATE', $result) . '
- WHERE user_id = ' . $user_id;
-
- $db->sql_query($sql);
- trigger_error($user->lang['USER_AVATAR_UPDATED'] . adm_back_link($this->u_action . '&u=' . $user_id));
- }
-
$avatar_drivers = $avatar_manager->get_valid_drivers();
sort($avatar_drivers);
- foreach ($avatar_drivers as $driver)
+ if ($submit)
{
- if ($config["allow_avatar_$driver"])
+ if (check_form_key($form_name))
{
- $avatars_enabled = true;
- $template->set_filenames(array(
- 'avatar' => "acp_avatar_options_$driver.html",
- ));
-
- $avatar = $avatar_manager->get_driver($driver);
- if (isset($_POST["submit_av_$driver"]))
+ $driver = request_var('avatar_driver', '');
+ if (in_array($driver, $avatar_drivers) && $config["allow_avatar_$driver"])
{
- if (!check_form_key($form_name))
- {
- trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action . '&u=' . $user_id), E_USER_WARNING);
- }
-
+ $avatar = $avatar_manager->get_driver($driver);
$result = $avatar->process_form($template, $user_row, $error);
if ($result && empty($error))
@@ -1750,6 +1714,42 @@ class acp_users
trigger_error($user->lang['USER_AVATAR_UPDATED'] . adm_back_link($this->u_action . '&u=' . $user_id));
}
}
+ else
+ {
+ // Removing the avatar
+ $result = array(
+ 'user_avatar' => '',
+ 'user_avatar_type' => '',
+ 'user_avatar_width' => 0,
+ 'user_avatar_height' => 0,
+ );
+
+ $sql = 'UPDATE ' . USERS_TABLE . '
+ SET ' . $db->sql_build_array('UPDATE', $result) . '
+ WHERE user_id = ' . $user_id;
+
+ $db->sql_query($sql);
+ trigger_error($user->lang['USER_AVATAR_UPDATED'] . adm_back_link($this->u_action . '&u=' . $user_id));
+ }
+ }
+ else
+ {
+ trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action . '&u=' . $user_id), E_USER_WARNING);
+ }
+ }
+
+ $focused_driver = request_var('avatar_driver', $user_row['user_avatar_type']);
+
+ foreach ($avatar_drivers as $driver)
+ {
+ if ($config["allow_avatar_$driver"])
+ {
+ $avatars_enabled = true;
+ $template->set_filenames(array(
+ 'avatar' => "acp_avatar_options_$driver.html",
+ ));
+
+ $avatar = $avatar_manager->get_driver($driver);
if ($avatar->prepare_form($template, $user_row, $error))
{
@@ -1757,7 +1757,9 @@ class acp_users
$template->assign_block_vars('avatar_drivers', array(
'L_TITLE' => $user->lang('AVATAR_DRIVER_' . $driver_u . '_TITLE'), // @TODO add lang values
'L_EXPLAIN' => $user->lang('AVATAR_DRIVER_' . $driver_u . '_EXPLAIN'),
+
'DRIVER' => $driver,
+ 'SELECTED' => ($driver == $focused_driver),
'OUTPUT' => $template->assign_display('avatar'),
));
}
diff --git a/phpBB/includes/avatar/driver.php b/phpBB/includes/avatar/driver.php
index 5322f73c60..1ed5b1a5f7 100644
--- a/phpBB/includes/avatar/driver.php
+++ b/phpBB/includes/avatar/driver.php
@@ -102,7 +102,7 @@ abstract class phpbb_avatar_driver
/**
* @TODO
**/
- public function prepare_form($template, $user_row, &$error)
+ public function prepare_form($template, $user_row, &$error, &$override_focus)
{
return false;
}
diff --git a/phpBB/includes/ucp/ucp_profile.php b/phpBB/includes/ucp/ucp_profile.php
index d5f3ec4b81..186c023798 100644
--- a/phpBB/includes/ucp/ucp_profile.php
+++ b/phpBB/includes/ucp/ucp_profile.php
@@ -615,6 +615,8 @@ class ucp_profile
}
}
+ $focused_driver = request_var('avatar_driver', $user->data['user_avatar_type']);
+
foreach ($avatar_drivers as $driver)
{
if ($config["allow_avatar_$driver"])
@@ -625,33 +627,6 @@ class ucp_profile
));
$avatar = $avatar_manager->get_driver($driver);
- if (isset($_POST["submit_av_$driver"]))
- {
- if (check_form_key('ucp_avatar'))
- {
- $result = $avatar->process_form($template, $user->data, $error);
-
- if ($result && empty($error))
- {
- // Success! Lets save the result in the database
- $result['user_avatar_type'] = $driver;
-
- $sql = 'UPDATE ' . USERS_TABLE . '
- SET ' . $db->sql_build_array('UPDATE', $result) . '
- WHERE user_id = ' . $user->data['user_id'];
-
- $db->sql_query($sql);
-
- meta_refresh(3, $this->u_action);
- $message = $user->lang['PROFILE_UPDATED'] . '
' . sprintf($user->lang['RETURN_UCP'], '', '');
- trigger_error($message);
- }
- }
- else
- {
- $error[] = 'FORM_INVALID';
- }
- }
if ($avatar->prepare_form($template, $user->data, $error))
{
@@ -662,7 +637,7 @@ class ucp_profile
'L_EXPLAIN' => $user->lang('AVATAR_DRIVER_' . $driver_u . '_EXPLAIN'),
'DRIVER' => $driver,
- 'SELECTED' => ($driver == $user->data['user_avatar_type']),
+ 'SELECTED' => ($driver == $focused_driver),
'OUTPUT' => $template->assign_display('avatar'),
));
}