예제 #1
0
$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) {