[ticket/9581] Mass e-mail to banned users

Implement the suggestion made by Adam in the ticket, this will add
an additional checkbox to the mass e-mail page. By checking this
the mass e-mail shall also be send to banned users. By default
banned users however are excluded from the mass e-mail.

PHPBB3-9581
This commit is contained in:
Erik Frèrejean 2011-02-03 14:36:37 +01:00
parent afae883619
commit 1b60613319
3 changed files with 20 additions and 10 deletions

View file

@ -38,6 +38,10 @@
<dt><label for="priority">{L_MAIL_PRIORITY}:</label></dt> <dt><label for="priority">{L_MAIL_PRIORITY}:</label></dt>
<dd><select id="priority" name="mail_priority_flag">{S_PRIORITY_OPTIONS}</select></dd> <dd><select id="priority" name="mail_priority_flag">{S_PRIORITY_OPTIONS}</select></dd>
</dl> </dl>
<dl>
<dt><label for="banned">{L_MAIL_BANNED}:</label><br /><span>{L_MAIL_BANNED_EXPLAIN}</span></dt>
<dd><input id="banned" name="mail_banned_flag" type="checkbox" class="radio" /></dd>
</dl>
<dl> <dl>
<dt><label for="send">{L_SEND_IMMEDIATELY}:</label></dt> <dt><label for="send">{L_SEND_IMMEDIATELY}:</label></dt>
<dd><input id="send" type="checkbox" class="radio" name="send_immediately" checked="checked" /></dd> <dd><input id="send" type="checkbox" class="radio" name="send_immediately" checked="checked" /></dd>

View file

@ -69,6 +69,8 @@ class acp_email
if (!sizeof($error)) if (!sizeof($error))
{ {
$sql_ban_where = (!isset($_REQUEST['mail_banned_flag'])) ? 'AND b.ban_userid != u.user_id' : '';
if ($usernames) if ($usernames)
{ {
// If giving usernames the admin is able to email inactive users too... // If giving usernames the admin is able to email inactive users too...
@ -83,21 +85,23 @@ class acp_email
if ($group_id) if ($group_id)
{ {
$sql = 'SELECT u.user_email, u.username, u.username_clean, u.user_lang, u.user_jabber, u.user_notify_type $sql = 'SELECT u.user_email, u.username, u.username_clean, u.user_lang, u.user_jabber, u.user_notify_type
FROM ' . USERS_TABLE . ' u, ' . USER_GROUP_TABLE . ' ug FROM ' . BANLIST_TABLE . ' b, ' . USERS_TABLE . ' u, ' . USER_GROUP_TABLE . ' ug
WHERE ug.group_id = ' . $group_id . ' WHERE ug.group_id = ' . $group_id . '
AND ug.user_pending = 0 AND ug.user_pending = 0
AND u.user_id = ug.user_id AND u.user_id = ug.user_id
AND u.user_allow_massemail = 1 AND u.user_allow_massemail = 1
AND u.user_type IN (' . USER_NORMAL . ', ' . USER_FOUNDER . ') AND u.user_type IN (' . USER_NORMAL . ', ' . USER_FOUNDER . ")
ORDER BY u.user_lang, u.user_notify_type'; {$sql_ban_where}
ORDER BY u.user_lang, u.user_notify_type";
} }
else else
{ {
$sql = 'SELECT username, username_clean, user_email, user_jabber, user_notify_type, user_lang $sql = 'SELECT u.username, u.username_clean, u.user_email, u.user_jabber, u.user_notify_type, u.user_lang
FROM ' . USERS_TABLE . ' FROM (' . BANLIST_TABLE . ' b, ' . USERS_TABLE . ' u)
WHERE user_allow_massemail = 1 WHERE u.user_allow_massemail = 1
AND user_type IN (' . USER_NORMAL . ', ' . USER_FOUNDER . ') AND u.user_type IN (' . USER_NORMAL . ', ' . USER_FOUNDER . ")
ORDER BY user_lang, user_notify_type'; {$sql_ban_where}
ORDER BY u.user_lang, u.user_notify_type";
} }
} }
$result = $db->sql_query($sql); $result = $db->sql_query($sql);

View file

@ -52,14 +52,16 @@ $lang = array_merge($lang, array(
'SEND_TO_GROUP' => 'Send to group', 'SEND_TO_GROUP' => 'Send to group',
'SEND_TO_USERS' => 'Send to users', 'SEND_TO_USERS' => 'Send to users',
'SEND_TO_USERS_EXPLAIN' => 'Entering names here will override any group selected above. Enter each username on a new line.', 'SEND_TO_USERS_EXPLAIN' => 'Entering names here will override any group selected above. Enter each username on a new line.',
'MAIL_BANNED' => 'Mail banned users',
'MAIL_BANNED_EXPLAIN' => 'When sending a mass e-mail to a group you can select here whether banned users will also receive the e-mail.',
'MAIL_HIGH_PRIORITY' => 'High', 'MAIL_HIGH_PRIORITY' => 'High',
'MAIL_LOW_PRIORITY' => 'Low', 'MAIL_LOW_PRIORITY' => 'Low',
'MAIL_NORMAL_PRIORITY' => 'Normal', 'MAIL_NORMAL_PRIORITY' => 'Normal',
'MAIL_PRIORITY' => 'Mail priority', 'MAIL_PRIORITY' => 'Mail priority',
'MASS_MESSAGE' => 'Your message', 'MASS_MESSAGE' => 'Your message',
'MASS_MESSAGE_EXPLAIN' => 'Please note that you may enter only plain text. All markup will be removed before sending.', 'MASS_MESSAGE_EXPLAIN' => 'Please note that you may enter only plain text. All markup will be removed before sending.',
'NO_EMAIL_MESSAGE' => 'You must enter a message.', 'NO_EMAIL_MESSAGE' => 'You must enter a message.',
'NO_EMAIL_SUBJECT' => 'You must specify a subject for your message.', 'NO_EMAIL_SUBJECT' => 'You must specify a subject for your message.',
)); ));