Merge pull request #3123 from Elsensee/ticket/13310

[ticket/13310] Add event core.acp_email_modify_sql
This commit is contained in:
Joas Schilling 2014-11-22 12:21:24 +01:00
commit 8b71103836

View file

@ -26,7 +26,7 @@ class acp_email
function main($id, $mode) function main($id, $mode)
{ {
global $config, $db, $user, $auth, $template, $cache; global $config, $db, $user, $auth, $template, $cache;
global $phpbb_root_path, $phpbb_admin_path, $phpEx, $table_prefix; global $phpbb_root_path, $phpbb_admin_path, $phpEx, $table_prefix, $phpbb_dispatcher;
$user->add_lang('acp/email'); $user->add_lang('acp/email');
$this->tpl_name = 'acp_email'; $this->tpl_name = 'acp_email';
@ -72,11 +72,15 @@ class acp_email
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...
$sql = 'SELECT username, user_email, user_jabber, user_notify_type, user_lang $sql_ary = array(
FROM ' . USERS_TABLE . ' 'SELECT' => 'username, user_email, user_jabber, user_notify_type, user_lang',
WHERE ' . $db->sql_in_set('username_clean', array_map('utf8_clean_string', explode("\n", $usernames))) . ' 'FROM' => array(
AND user_allow_massemail = 1 USERS_TABLE => '',
ORDER BY user_lang, user_notify_type'; // , SUBSTRING(user_email FROM INSTR(user_email, '@')) ),
'WHERE' => $db->sql_in_set('username_clean', array_map('utf8_clean_string', explode("\n", $usernames))) . '
AND user_allow_massemail = 1',
'ORDER_BY' => 'user_lang, user_notify_type',
);
} }
else else
{ {
@ -123,8 +127,18 @@ class acp_email
), ),
); );
} }
$sql = $db->sql_build_query('SELECT', $sql_ary);
} }
/**
* Modify sql query to change the list of users the email is sent to
*
* @event core.acp_email_modify_sql
* @var array sql_ary Array which is used to build the sql query
* @since 3.1.2-RC1
*/
$vars = array('sql_ary');
extract($phpbb_dispatcher->trigger_event('core.acp_email_modify_sql', compact($vars)));
$sql = $db->sql_build_query('SELECT', $sql_ary);
$result = $db->sql_query($sql); $result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result); $row = $db->sql_fetchrow($result);