Skip to content

Commit de02a7f

Browse files
committed
Avoid sending emails to blocked and unapproved users
1 parent 40f15d4 commit de02a7f

2 files changed

Lines changed: 11 additions & 4 deletions

File tree

qa-include/app/mailing.php

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ function qa_mailing_stop()
5959
function qa_mailing_perform_step()
6060
{
6161
require_once QA_INCLUDE_DIR . 'db/users.php';
62+
require_once QA_INCLUDE_DIR . 'app/users.php';
6263

6364
$lastuserid = qa_opt('mailing_last_userid');
6465

@@ -89,11 +90,17 @@ function qa_mailing_perform_step()
8990
qa_opt('mailing_last_userid', $lastuserid);
9091
qa_opt('mailing_done_users', qa_opt('mailing_done_users') + count($users));
9192

93+
$isModeratingUsers = qa_opt('moderate_users');
94+
9295
foreach ($users as $user) {
93-
if (!($user['flags'] & QA_USER_FLAGS_NO_MAILINGS)) {
94-
qa_mailing_send_one($user['userid'], $user['handle'], $user['email'], $user['emailcode']);
95-
$sentusers++;
96+
if (($user['flags'] & QA_USER_FLAGS_NO_MAILINGS) || // exclude users who don't want to get the mailings
97+
($user['flags'] & QA_USER_FLAGS_USER_BLOCKED) || // exclude blocked users
98+
($isModeratingUsers && ($user['level'] < QA_USER_LEVEL_APPROVED))) { // if moderating users exclude unapproved users
99+
continue;
96100
}
101+
102+
qa_mailing_send_one($user['userid'], $user['handle'], $user['email'], $user['emailcode']);
103+
$sentusers++;
97104
}
98105

99106
qa_opt('mailing_last_timestamp', $lasttime + $sentusers * 60 / $perminute); // can be floating point result, based on number of mails actually sent

qa-include/db/users.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -376,7 +376,7 @@ function qa_db_user_levels_set($userid, $userlevels)
376376
function qa_db_users_get_mailing_next($lastuserid, $count)
377377
{
378378
return qa_db_read_all_assoc(qa_db_query_sub(
379-
'SELECT userid, email, handle, emailcode, flags FROM ^users WHERE userid># ORDER BY userid LIMIT #',
379+
'SELECT userid, email, handle, emailcode, flags, level FROM ^users WHERE userid># ORDER BY userid LIMIT #',
380380
$lastuserid, $count
381381
));
382382
}

0 commit comments

Comments
 (0)