Index: subscriptions.module =================================================================== --- subscriptions.module (revision 426) +++ subscriptions.module (working copy) @@ -209,6 +209,10 @@ if (is_array($event['load_args'])) { $event['load_args'] = serialize($event['load_args']); } + if (!empty($event['noqueue_uids'])) { + // Allow hook_subscriptions_queue_alter() modules to set uids that won't get any notifications queued: + $noqueue_uids_where = "s.recipient_uid NOT IN (". implode(', ', array_fill(0, count($event['noqueue_uids']), '%d')) .")"; + } foreach (module_implements('subscriptions') as $subs_module) { $subs_module_query = module_invoke($subs_module, 'subscriptions', 'queue', $event); @@ -231,6 +235,10 @@ $where[] = "s.recipient_uid != %d"; $args[] = $user->uid; } + if (!empty($event['noqueue_uids'])) { + $where[] = $noqueue_uids_where; + $args = array_merge($args, $event['noqueue_uids']); + } $conditions = implode(' AND ', $where); $sql = " INSERT INTO {subscriptions_queue} (uid, name, mail, language, module, field, value, author_uid, send_interval, digest, last_sent, load_function, load_args, is_new)