--- mass_contact_old.module Fri Mar 13 20:39:15 2009 +++ mass_contact.module Wed Mar 18 01:16:57 2009 @@ -1352,8 +1352,8 @@ // Create the recipient list. $recipientouta = array(); $roles = explode(',', $contact->recipients); - foreach ($roles as $r) { - if ($r == 2) { // all users + if (in_array('2', $roles)) { + // it's going out to everybody $recipients = db_query("SELECT name, mail, uid FROM {users} WHERE status <> %d AND uid > %d", 0, 0); while ($obj = db_fetch_object($recipients)) { $rname = $obj->name; @@ -1363,11 +1363,10 @@ $recipientouta[$rname] = $rmail; } } - break; } else { // Get from users_roles, then role -> user. - $uids = db_query("SELECT ur.uid FROM {users_roles} ur LEFT JOIN {users} u ON ur.uid = u.uid WHERE ur.rid = %d AND u.status <> %d", $r, 0); + $uids = db_query("SELECT DISTINCT(u.uid) FROM {users_roles} ur LEFT JOIN {users} u ON ur.uid = u.uid WHERE ur.rid = IN(%s) AND u.status <> %d", $contact->recipients, 0); while ($obj = db_fetch_object($uids)) { $ruid = $obj->uid; $userobj = db_fetch_object(db_query("SELECT name, mail FROM {users} WHERE uid = %d", $ruid)); @@ -1381,7 +1380,6 @@ else { if ($rname != $user->name) { $recipientouta[$rname] = $rmail; - } } } }