mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-28 06:08:52 +00:00
[ticket/9492] Retain custom ranks and avatars when setting users default group
PHPBB3-9492
This commit is contained in:
parent
f63e115ae9
commit
3122aeff26
1 changed files with 53 additions and 30 deletions
|
@ -3277,7 +3277,8 @@ function group_user_attributes($action, $group_id, $user_id_ary = false, $userna
|
||||||
case 'demote':
|
case 'demote':
|
||||||
case 'promote':
|
case 'promote':
|
||||||
|
|
||||||
$sql = 'SELECT user_id FROM ' . USER_GROUP_TABLE . "
|
$sql = 'SELECT user_id
|
||||||
|
FROM ' . USER_GROUP_TABLE . "
|
||||||
WHERE group_id = $group_id
|
WHERE group_id = $group_id
|
||||||
AND user_pending = 1
|
AND user_pending = 1
|
||||||
AND " . $db->sql_in_set('user_id', $user_id_ary);
|
AND " . $db->sql_in_set('user_id', $user_id_ary);
|
||||||
|
@ -3375,7 +3376,8 @@ function group_user_attributes($action, $group_id, $user_id_ary = false, $userna
|
||||||
return 'NO_USERS';
|
return 'NO_USERS';
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql = 'SELECT user_id, group_id FROM ' . USERS_TABLE . '
|
$sql = 'SELECT user_id, group_id
|
||||||
|
FROM ' . USERS_TABLE . '
|
||||||
WHERE ' . $db->sql_in_set('user_id', $user_id_ary, false, true);
|
WHERE ' . $db->sql_in_set('user_id', $user_id_ary, false, true);
|
||||||
$result = $db->sql_query($sql);
|
$result = $db->sql_query($sql);
|
||||||
|
|
||||||
|
@ -3509,45 +3511,63 @@ function group_set_user_default($group_id, $user_id_ary, $group_attributes = fal
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Before we update the user attributes, we will make a list of those having now the group avatar assigned
|
$updated_sql_ary = $sql_ary;
|
||||||
|
|
||||||
|
// Before we update the user attributes, we will update the rank for users that don't have a custom rank
|
||||||
|
if (isset($sql_ary['user_rank']))
|
||||||
|
{
|
||||||
|
$sql = 'UPDATE ' . USERS_TABLE . '
|
||||||
|
SET ' . $db->sql_build_array('UPDATE', array('user_rank' => $sql_ary['user_rank'])) . '
|
||||||
|
WHERE user_rank = 0
|
||||||
|
AND ' . $db->sql_in_set('user_id', $user_id_ary);
|
||||||
|
$db->sql_query($sql);
|
||||||
|
unset($sql_ary['user_rank']);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Before we update the user attributes, we will update the avatar for users that don't have a custom avatar
|
||||||
if (isset($sql_ary['user_avatar']))
|
if (isset($sql_ary['user_avatar']))
|
||||||
{
|
{
|
||||||
// Ok, get the original avatar data from users having an uploaded one (we need to remove these from the filesystem)
|
$sql = 'UPDATE ' . USERS_TABLE . '
|
||||||
$sql = 'SELECT user_id, group_id, user_avatar
|
SET ' . $db->sql_build_array('UPDATE', array(
|
||||||
FROM ' . USERS_TABLE . '
|
'user_avatar' => $sql_ary['user_avatar'],
|
||||||
WHERE ' . $db->sql_in_set('user_id', $user_id_ary) . '
|
'user_avatar_type' => $sql_ary['user_avatar_type'],
|
||||||
AND user_avatar_type = ' . AVATAR_UPLOAD;
|
'user_avatar_height' => $sql_ary['user_avatar_height'],
|
||||||
$result = $db->sql_query($sql);
|
'user_avatar_width' => $sql_ary['user_avatar_width'],
|
||||||
|
)) . "
|
||||||
|
WHERE user_avatar = ''
|
||||||
|
AND " . $db->sql_in_set('user_id', $user_id_ary);
|
||||||
|
$db->sql_query($sql);
|
||||||
|
|
||||||
while ($row = $db->sql_fetchrow($result))
|
unset($sql_ary['user_avatar']);
|
||||||
{
|
|
||||||
avatar_delete('user', $row);
|
|
||||||
}
|
}
|
||||||
$db->sql_freeresult($result);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
unset($sql_ary['user_avatar_type']);
|
unset($sql_ary['user_avatar_type']);
|
||||||
unset($sql_ary['user_avatar_height']);
|
unset($sql_ary['user_avatar_height']);
|
||||||
unset($sql_ary['user_avatar_width']);
|
unset($sql_ary['user_avatar_width']);
|
||||||
}
|
|
||||||
|
|
||||||
$sql = 'UPDATE ' . USERS_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $sql_ary) . '
|
if (!empty($sql_ary))
|
||||||
|
{
|
||||||
|
$sql = 'UPDATE ' . USERS_TABLE . '
|
||||||
|
SET ' . $db->sql_build_array('UPDATE', $sql_ary) . '
|
||||||
WHERE ' . $db->sql_in_set('user_id', $user_id_ary);
|
WHERE ' . $db->sql_in_set('user_id', $user_id_ary);
|
||||||
$db->sql_query($sql);
|
$db->sql_query($sql);
|
||||||
|
}
|
||||||
|
|
||||||
if (isset($sql_ary['user_colour']))
|
if (isset($sql_ary['user_colour']))
|
||||||
{
|
{
|
||||||
// Update any cached colour information for these users
|
// Update any cached colour information for these users
|
||||||
$sql = 'UPDATE ' . FORUMS_TABLE . " SET forum_last_poster_colour = '" . $db->sql_escape($sql_ary['user_colour']) . "'
|
$sql = 'UPDATE ' . FORUMS_TABLE . "
|
||||||
|
SET forum_last_poster_colour = '" . $db->sql_escape($sql_ary['user_colour']) . "'
|
||||||
WHERE " . $db->sql_in_set('forum_last_poster_id', $user_id_ary);
|
WHERE " . $db->sql_in_set('forum_last_poster_id', $user_id_ary);
|
||||||
$db->sql_query($sql);
|
$db->sql_query($sql);
|
||||||
|
|
||||||
$sql = 'UPDATE ' . TOPICS_TABLE . " SET topic_first_poster_colour = '" . $db->sql_escape($sql_ary['user_colour']) . "'
|
$sql = 'UPDATE ' . TOPICS_TABLE . "
|
||||||
|
SET topic_first_poster_colour = '" . $db->sql_escape($sql_ary['user_colour']) . "'
|
||||||
WHERE " . $db->sql_in_set('topic_poster', $user_id_ary);
|
WHERE " . $db->sql_in_set('topic_poster', $user_id_ary);
|
||||||
$db->sql_query($sql);
|
$db->sql_query($sql);
|
||||||
|
|
||||||
$sql = 'UPDATE ' . TOPICS_TABLE . " SET topic_last_poster_colour = '" . $db->sql_escape($sql_ary['user_colour']) . "'
|
$sql = 'UPDATE ' . TOPICS_TABLE . "
|
||||||
|
SET topic_last_poster_colour = '" . $db->sql_escape($sql_ary['user_colour']) . "'
|
||||||
WHERE " . $db->sql_in_set('topic_last_poster_id', $user_id_ary);
|
WHERE " . $db->sql_in_set('topic_last_poster_id', $user_id_ary);
|
||||||
$db->sql_query($sql);
|
$db->sql_query($sql);
|
||||||
|
|
||||||
|
@ -3559,6 +3579,9 @@ function group_set_user_default($group_id, $user_id_ary, $group_attributes = fal
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Make all values available for the event
|
||||||
|
$sql_ary = $updated_sql_ary;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Event when the default group is set for an array of users
|
* Event when the default group is set for an array of users
|
||||||
*
|
*
|
||||||
|
|
Loading…
Add table
Reference in a new issue