$mastercap = true; $groups = $allgroups; $restricted_view = (!has_capability('moodle/site:accessallgroups', $context) and $config['ferpa'] == 'strictferpa'); $respected_view = (!has_capability('moodle/site:accessallgroups', $context) and $course->groupmode == 1 and $config['ferpa'] == 'courseferpa'); if ($restricted_view || $respected_view) { $mastercap = false; $mygroups = groups_get_user_groups($courseid); $gids = implode(',', array_values($mygroups['0'])); $groups = empty($gids) ? array() : $DB->get_records_select('groups', 'id IN (' . $gids . ')'); } $globalaccess = empty($allgroups); // Fill the course users by $users = array(); $users_to_roles = array(); $users_to_groups = array(); $everyone = quickmail::get_non_suspended_users($context, $courseid); foreach ($everyone as $userid => $user) { $usergroups = groups_get_user_groups($courseid, $userid); $gids = ($globalaccess or $mastercap) ? array_values($usergroups['0']) : array_intersect(array_values($mygroups['0']), array_values($usergroups['0'])); $userroles = get_user_roles($context, $userid); $filterd = quickmail::filter_roles($userroles, $roles); // Available groups if (!$globalaccess and !$mastercap and empty($gids) or empty($filterd) or $userid == $USER->id) { continue; } $groupmapper = function ($id) use($allgroups) { return $allgroups[$id]; }; $users_to_groups[$userid] = array_map($groupmapper, $gids); $users_to_roles[$userid] = $filterd; if (!$user->suspended) {