From 7281480b0f4aa51d1d2a21466d3f0ee4fe41ce15 Mon Sep 17 00:00:00 2001 From: Roman Kelesidis Date: Sat, 2 Sep 2023 10:28:31 +0700 Subject: [PATCH] Created function get_banned_users() (#878) --- library/ajax/callseed.php | 11 +---------- library/includes/functions.php | 17 +++++++++++++++++ src/Legacy/Post.php | 11 ++--------- 3 files changed, 20 insertions(+), 19 deletions(-) diff --git a/library/ajax/callseed.php b/library/ajax/callseed.php index f822c4fb9..e7e6aa8b1 100644 --- a/library/ajax/callseed.php +++ b/library/ajax/callseed.php @@ -34,15 +34,6 @@ if ($t_data['seeders'] > 2) { $this->ajax_die(sprintf($lang['CALLSEED_MSG_SPAM'], $time_left)); } -$ban_user_id = []; - -$sql = DB()->fetch_rowset("SELECT ban_userid FROM " . BB_BANLIST . " WHERE ban_userid != 0"); - -foreach ($sql as $row) { - $ban_user_id[] = ',' . $row['ban_userid']; -} -$ban_user_id = implode('', $ban_user_id); - $user_list = DB()->fetch_rowset(" SELECT DISTINCT dl.user_id, u.user_opt, tr.user_id as active_dl FROM " . BB_BT_DLSTATUS . " dl @@ -50,7 +41,7 @@ $user_list = DB()->fetch_rowset(" LEFT JOIN " . BB_BT_TRACKER . " tr ON(tr.user_id = dl.user_id) WHERE dl.topic_id = $topic_id AND dl.user_status IN (" . DL_STATUS_COMPLETE . ", " . DL_STATUS_DOWN . ") - AND dl.user_id NOT IN ({$userdata['user_id']}, " . EXCLUDED_USERS . $ban_user_id . ") + AND dl.user_id NOT IN ({$userdata['user_id']}, " . EXCLUDED_USERS . implode(', ', get_banned_users()) . ") AND u.user_active = 1 GROUP BY dl.user_id "); diff --git a/library/includes/functions.php b/library/includes/functions.php index 03c7b3bcb..c64a417f2 100644 --- a/library/includes/functions.php +++ b/library/includes/functions.php @@ -59,6 +59,23 @@ function get_tracks($type) return $tracks ?: []; } +/** + * Returns array with all banned users + * + * @param bool $return_as_names + * @return array + */ +function get_banned_users(bool $return_as_names = false): array +{ + $banned_users = []; + + foreach (DB()->fetch_rowset("SELECT ban_userid FROM " . BB_BANLIST . " WHERE ban_userid != 0") as $user) { + $banned_users[] = $return_as_names ? get_username($user['ban_userid']) : $user['ban_userid']; + } + + return $banned_users; +} + function set_tracks($cookie_name, &$tracking_ary, $tracks = null, $val = TIMENOW) { global $tracking_topics, $tracking_forums, $user; diff --git a/src/Legacy/Post.php b/src/Legacy/Post.php index d2eb262c2..a0251f6ea 100644 --- a/src/Legacy/Post.php +++ b/src/Legacy/Post.php @@ -343,19 +343,12 @@ class Post if ($mode != 'delete') { if ($mode == 'reply') { - $update_watched_sql = $user_id_sql = []; - - $sql = DB()->fetch_rowset("SELECT ban_userid FROM " . BB_BANLIST . " WHERE ban_userid != 0"); - - foreach ($sql as $row) { - $user_id_sql[] = ',' . $row['ban_userid']; - } - $user_id_sql = implode('', $user_id_sql); + $update_watched_sql = []; $watch_list = DB()->fetch_rowset("SELECT u.username, u.user_id, u.user_email, u.user_lang FROM " . BB_TOPICS_WATCH . " tw, " . BB_USERS . " u WHERE tw.topic_id = $topic_id - AND tw.user_id NOT IN (" . $userdata['user_id'] . ", " . EXCLUDED_USERS . $user_id_sql . ") + AND tw.user_id NOT IN (" . $userdata['user_id'] . ", " . EXCLUDED_USERS . implode(', ', get_banned_users()) . ") AND tw.notify_status = " . TOPIC_WATCH_NOTIFIED . " AND u.user_id = tw.user_id AND u.user_active = 1