mirror of
https://github.com/phpbb/phpbb.git
synced 2025-02-24 20:13:22 +01:00
[ticket/10684] Adjust pm_notifications() to handle stale bans
- Add parameter (array) to the function phpbb_get_banned_users_ids() - Fix function pm_notification() to handle users with stale bans PHPBB3-10684
This commit is contained in:
parent
a79b3490c2
commit
321d0d9b56
@ -1622,6 +1622,7 @@ function pm_notification($mode, $author, $recipients, $subject, $message, $msg_i
|
||||
|
||||
$subject = censor_text($subject);
|
||||
|
||||
// Exclude guests, current user and banned users from notifications
|
||||
unset($recipients[ANONYMOUS], $recipients[$user->data['user_id']]);
|
||||
|
||||
if (!sizeof($recipients))
|
||||
@ -1629,18 +1630,12 @@ function pm_notification($mode, $author, $recipients, $subject, $message, $msg_i
|
||||
return;
|
||||
}
|
||||
|
||||
// Get banned User ID's
|
||||
$sql = 'SELECT ban_userid
|
||||
FROM ' . BANLIST_TABLE . '
|
||||
WHERE ' . $db->sql_in_set('ban_userid', array_map('intval', array_keys($recipients))) . '
|
||||
AND ban_exclude = 0';
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
if (!function_exists('phpbb_get_banned_users_ids'))
|
||||
{
|
||||
unset($recipients[$row['ban_userid']]);
|
||||
include($phpbb_root_path . 'includes/functions_user.' . $phpEx);
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
$banned_users = phpbb_get_banned_users_ids(array_keys($recipients));
|
||||
$recipients = array_diff(array_map('intval', array_keys($recipients)), $banned_users);
|
||||
|
||||
if (!sizeof($recipients))
|
||||
{
|
||||
@ -1649,7 +1644,7 @@ function pm_notification($mode, $author, $recipients, $subject, $message, $msg_i
|
||||
|
||||
$sql = 'SELECT user_id, username, user_email, user_lang, user_notify_pm, user_notify_type, user_jabber
|
||||
FROM ' . USERS_TABLE . '
|
||||
WHERE ' . $db->sql_in_set('user_id', array_map('intval', array_keys($recipients)));
|
||||
WHERE ' . $db->sql_in_set('user_id', $recipients);
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$msg_list_ary = array();
|
||||
|
@ -3588,22 +3588,26 @@ function remove_newly_registered($user_id, $user_data = false)
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a list of banned users' ids, ignoring stale bans which were not wiped yet.
|
||||
* Get a list of banned users' ids, ignoring stale bans which were not cleaned yet.
|
||||
*
|
||||
* @param array $users_ids_array Array of users' ids to check for banning,
|
||||
* leave empty to get complete list of banned ids
|
||||
* @return array Array of banned users' ids if any, empty array otherwise
|
||||
*/
|
||||
function phpbb_get_banned_users_ids()
|
||||
function phpbb_get_banned_users_ids($users_ids_array = array())
|
||||
{
|
||||
global $db;
|
||||
|
||||
$sql_users_ids = (!empty($users_ids_array)) ? $db->sql_in_set('ban_userid', $users_ids_array) : 'ban_userid <> 0';
|
||||
|
||||
// Get banned User ID's
|
||||
// Ignore stale bans which were not wiped yet
|
||||
$banned_ids_list = array();
|
||||
$sql = 'SELECT ban_userid
|
||||
FROM ' . BANLIST_TABLE . '
|
||||
WHERE ban_userid <> 0
|
||||
FROM ' . BANLIST_TABLE . "
|
||||
WHERE $sql_users_ids
|
||||
AND ban_exclude <> 1
|
||||
AND (ban_end > ' . time() . '
|
||||
AND (ban_end > " . time() . '
|
||||
OR ban_end = 0)';
|
||||
$result = $db->sql_query($sql);
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
|
Loading…
x
Reference in New Issue
Block a user