1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-05-06 15:45:34 +02:00

[ticket/12493] Fix sql query for selection of users that have disabled PM

This fixes a bug where a user A could not send a PM to user B when both users
allowed other users to send them a PM. More precisely, it fixes the selection
of users that either are inactive or have disabled private messages.

PHPBB3-12493
This commit is contained in:
n-aleha 2014-05-05 19:36:21 +03:00
parent 324daf72fe
commit 0166493a89

View File

@ -1226,6 +1226,8 @@ function handle_message_list_actions(&$address_list, &$error, $remove_u, $remove
// Check for disallowed recipients // Check for disallowed recipients
if (!empty($address_list['u'])) if (!empty($address_list['u']))
{ {
$can_ignore_allow_pm = $auth->acl_gets('a_', 'm_') || $auth->acl_getf_global('m_');
// Administrator deactivated users check and we need to check their // Administrator deactivated users check and we need to check their
// PM status (do they want to receive PM's?) // PM status (do they want to receive PM's?)
// Only check PM status if not a moderator or admin, since they // Only check PM status if not a moderator or admin, since they
@ -1233,14 +1235,11 @@ function handle_message_list_actions(&$address_list, &$error, $remove_u, $remove
$sql = 'SELECT user_id, user_allow_pm $sql = 'SELECT user_id, user_allow_pm
FROM ' . USERS_TABLE . ' FROM ' . USERS_TABLE . '
WHERE ' . $db->sql_in_set('user_id', array_keys($address_list['u'])) . ' WHERE ' . $db->sql_in_set('user_id', array_keys($address_list['u'])) . '
AND (user_type = ' . USER_INACTIVE . ' AND (
AND user_inactive_reason = ' . INACTIVE_MANUAL . ')'; (user_type = ' . USER_INACTIVE . '
AND user_inactive_reason = ' . INACTIVE_MANUAL . ')
$can_ignore_allow_pm = ($auth->acl_gets('a_', 'm_') || $auth->acl_getf_global('m_')); ' . ($can_ignore_allow_pm ? '' : ' OR user_allow_pm = 0') . '
if (!$can_ignore_allow_pm) )';
{
$sql .= ' OR user_allow_pm = 0';
}
$result = $db->sql_query($sql); $result = $db->sql_query($sql);