{
global $bugsys;
+ // determine the groups that are assignable
+ $ids = $exprs = array();
+ foreach ($bugsys->datastore['usergroup'] AS $id => $group)
+ {
+ if ($group['permissions'] & $bugsys->permissions['canbeassignedto'])
+ {
+ $ids[] = $id;
+ $exprs[] = "FIND_IN_SET($id, groupids)";
+ }
+ }
+
+ $ids = implode(',', $ids);
+ $exprs = implode(' OR ', $exprs);
$users = $bugsys->db->query("
- SELECT user.email, user.displayname, user.userid, user.showemail
+ SELECT email, displayname, userid, showemail
FROM " . TABLE_PREFIX . "user AS user
- LEFT JOIN " . TABLE_PREFIX . "usergroup AS usergroup ON (user.usergroupid = usergroup.usergroupid)
- WHERE (usergroup.permissions & " . $bugsys->permissions['canbeassignedto'] . ")"
+ WHERE usergroupid IN ($ids) OR $exprs"
);
while ($user = $bugsys->db->fetch_array($users))
{