aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--phpBB/adm/style/acp_users_avatar.html56
-rw-r--r--phpBB/includes/acp/acp_users.php84
-rw-r--r--phpBB/includes/avatar/driver.php2
-rw-r--r--phpBB/includes/ucp/ucp_profile.php31
4 files changed, 92 insertions, 81 deletions
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 @@
<dl>
<dt><label>{L_CURRENT_IMAGE}:</label><br /><span>{L_AVATAR_EXPLAIN}</span></dt>
<dd>{AVATAR}</dd>
- <!-- IF AV_SHOW_DELETE --><dd><input type="submit" name="av_delete" id="av_delete" value="{LA_DELETE_AVATAR}" class="button2" /></dd><!-- ENDIF -->
</dl>
</fieldset>
- <!-- BEGIN avatar_drivers -->
- <fieldset>
- <legend>{avatar_drivers.L_TITLE}</legend>
- <p>{avatar_drivers.L_EXPLAIN}</p>
- {avatar_drivers.OUTPUT}
- </fieldset>
- <fieldset class="quick">
- <input type="submit" name="submit_av_{avatar_drivers.DRIVER}" value="{L_SUBMIT}" class="button1" />
- </fieldset>
- <!-- END avatar_drivers -->
+ <fieldset>
+ <legend>{L_AVATAR_SELECT_NEW}</legend>
+ <dl>
+ <dt><label>{L_AVATAR_TYPE}</label></dt>
+ <dd><select name="avatar_driver" id="avatar_driver">
+ <option value="">{L_NO_AVATAR}</option>
+ <!-- BEGIN avatar_drivers -->
+ <option value="{avatar_drivers.DRIVER}"<!-- IF avatar_drivers.SELECTED --> selected="selected"<!-- ENDIF -->>{avatar_drivers.L_TITLE}</option>
+ <!-- END avatar_drivers -->
+ </select></dd>
+ </dl>
+ <div id="av_options">
+ <!-- BEGIN avatar_drivers -->
+ <div id="av_option_{avatar_drivers.DRIVER}">
+ <p>{avatar_drivers.L_EXPLAIN}</p>
+ {avatar_drivers.OUTPUT}
+ </div>
+ <!-- END avatar_drivers -->
+ </div>
+ </fieldset>
+ <script type="text/javascript">
+ // <![CDATA[
+ function avatar_simplify() {
+ var node = document.getElementById('av_options');
+ for (var i = 0; i < node.children.length; i++) {
+ child = node.children[i];
+ child.style.display = 'none';
+ }
+
+ var selected = document.getElementById('avatar_driver').value;
+ var id = 'av_option_' + selected;
+ node = document.getElementById(id);
+ if (node != null) {
+ node.style.display = 'block';
+ }
+ }
+
+ avatar_simplify();
+ document.getElementById('avatar_driver').onchange = avatar_simplify;
+ // ]]>
+ </script>
+
+ <fieldset class="quick">
+ <input type="submit" name="update" value="{L_SUBMIT}" class="button1" />
+ </fieldset>
{S_FORM_TOKEN}
</form>
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 . '&amp;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 . '&amp;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 . '&amp;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 . '&amp;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 . '&amp;u=' . $user_id));
+ }
+ }
+ else
+ {
+ trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action . '&amp;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'] . '<br /><br />' . sprintf($user->lang['RETURN_UCP'], '<a href="' . $this->u_action . '">', '</a>');
- 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'),
));
}