diff --git a/phpBB/includes/avatar/driver/remote.php b/phpBB/includes/avatar/driver/remote.php
index 32f93c7928..c28eed93da 100644
--- a/phpBB/includes/avatar/driver/remote.php
+++ b/phpBB/includes/avatar/driver/remote.php
@@ -72,6 +72,8 @@ class phpbb_avatar_driver_remote extends phpbb_avatar_driver
$url = 'http://' . $url;
}
+ require_once($this->phpbb_root_path . 'includes/functions_user.' . $this->phpEx);
+
$error = array_merge($error, validate_data(array(
'url' => $url,
), array(
diff --git a/phpBB/includes/ucp/ucp_profile.php b/phpBB/includes/ucp/ucp_profile.php
index bcafd3d636..d5f3ec4b81 100644
--- a/phpBB/includes/ucp/ucp_profile.php
+++ b/phpBB/includes/ucp/ucp_profile.php
@@ -554,31 +554,60 @@ class ucp_profile
{
$avatar_manager = new phpbb_avatar_manager($phpbb_root_path, $phpEx, $config, $cache->getDriver());
- if (isset($_POST['av_delete']))
+ $avatar_drivers = $avatar_manager->get_valid_drivers();
+ sort($avatar_drivers);
+
+ if ($submit)
{
if (check_form_key('ucp_avatar'))
{
- $result = array(
- 'user_avatar' => '',
- 'user_avatar_type' => '',
- 'user_avatar_width' => 0,
- 'user_avatar_height' => 0,
- );
-
- if ($driver = $avatar_manager->get_driver($user->data['user_avatar_type']))
+ $driver = request_var('avatar_driver', '');
+ if (in_array($driver, $avatar_drivers) && $config["allow_avatar_$driver"])
{
- $driver->delete($user->data);
+ $avatar = $avatar_manager->get_driver($driver);
+ $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);
+ }
}
-
- $sql = 'UPDATE ' . USERS_TABLE . '
- SET ' . $db->sql_build_array('UPDATE', $result) . '
- WHERE user_id = ' . $user->data['user_id'];
+ else
+ {
+ // They are removing their avatar or are trying to play games with us
+ if ($avatar = $avatar_manager->get_driver($user->data['user_avatar_type']))
+ {
+ $avatar->delete($user->data);
+ }
- $db->sql_query($sql);
+ $result = array(
+ 'user_avatar' => '',
+ 'user_avatar_type' => '',
+ 'user_avatar_width' => 0,
+ 'user_avatar_height' => 0,
+ );
- meta_refresh(3, $this->u_action);
- $message = $user->lang['PROFILE_UPDATED'] . '
' . sprintf($user->lang['RETURN_UCP'], '', '');
- trigger_error($message);
+ $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
{
@@ -586,9 +615,6 @@ class ucp_profile
}
}
- $avatar_drivers = $avatar_manager->get_valid_drivers();
- sort($avatar_drivers);
-
foreach ($avatar_drivers as $driver)
{
if ($config["allow_avatar_$driver"])
@@ -636,6 +662,7 @@ class ucp_profile
'L_EXPLAIN' => $user->lang('AVATAR_DRIVER_' . $driver_u . '_EXPLAIN'),
'DRIVER' => $driver,
+ 'SELECTED' => ($driver == $user->data['user_avatar_type']),
'OUTPUT' => $template->assign_display('avatar'),
));
}
diff --git a/phpBB/styles/prosilver/template/ucp_avatar_options.html b/phpBB/styles/prosilver/template/ucp_avatar_options.html
index f05e96410d..eb78e9f77c 100644
--- a/phpBB/styles/prosilver/template/ucp_avatar_options.html
+++ b/phpBB/styles/prosilver/template/ucp_avatar_options.html
@@ -10,22 +10,61 @@
{avatar_drivers.L_EXPLAIN}
+