diff --git a/course/lib.php b/course/lib.php index f0f198f12ec..72f6ffe017c 100644 --- a/course/lib.php +++ b/course/lib.php @@ -398,8 +398,8 @@ function build_logs_array($course, $user=0, $date=0, $order="l.time ASC", $limit /// Getting all members of a group. if ($groupid and !$user) { - $gusers = groups_get_members($groupid); - if (!empty($gusers)) { + if ($gusers = groups_get_members($groupid)) { + $gusers = array_keys($gusers); $joins[] = 'l.userid IN (' . implode(',', $gusers) . ')'; } else { $joins[] = 'l.userid = 0'; // No users in groups, so we want something that will always by false. diff --git a/group/assign.php b/group/assign.php index 0bd3d7628f1..51f74c1c638 100644 --- a/group/assign.php +++ b/group/assign.php @@ -1,145 +1,108 @@ courseid)) { +if (! $course = get_record('course', 'id', $grouping->courseid)) { print_error('invalidcourse'); } - -require_login($course); $courseid = $course->id; -$strsearch = get_string('search'); -$strshowall = get_string('showall'); -$returnurl = $CFG->wwwroot.'/group/index.php?id='.$courseid.'&group='.$groupid; - +require_login($course); $context = get_context_instance(CONTEXT_COURSE, $courseid); require_capability('moodle/course:managegroups', $context); - if ($frm = data_submitted() and confirm_sesskey()) { +$returnurl = $CFG->wwwroot.'/group/groupings.php?id='.$courseid; - if (isset($frm->cancel)) { - redirect($returnurl); - } else if (isset($frm->add) and !empty($frm->addselect)) { +if ($frm = data_submitted() and confirm_sesskey()) { - foreach ($frm->addselect as $userid) { - if (! $userid = clean_param($userid, PARAM_INT)) { - continue; - } - if (!groups_add_member($groupid, $userid)) { - print_error('erroraddremoveuser', 'group', $returnurl); - } + if (isset($frm->cancel)) { + redirect($returnurl); + + } else if (isset($frm->add) and !empty($frm->addselect)) { + foreach ($frm->addselect as $groupid) { + $groupid = (int)$groupid; + if (record_exists('groupings_groups', 'groupingid', $grouping->id, 'groupid', $groupid)) { + continue; } + $assign = new object(); + $assign->groupingid = $grouping->id; + $assign->groupid = $groupid; + $assign->timeadded = time(); + insert_record('groupings_groups', $assign); + } - } else if (isset($frm->remove) and !empty($frm->removeselect)) { + } else if (isset($frm->remove) and !empty($frm->removeselect)) { - foreach ($frm->removeselect as $userid) { - if (! $userid = clean_param($userid, PARAM_INT)) { - continue; - } - if (!groups_remove_member($groupid, $userid)) { - print_error('erroraddremoveuser', 'group', $returnurl); - } - - // MDL-9983 - $eventdata = new object(); - $eventdata -> groupid = $groupid; - $eventdata -> userid = $userid; - events_trigger('group_user_removed', $eventdata); - } + foreach ($frm->removeselect as $groupid) { + $groupid = (int)$groupid; + delete_records('groupings_groups', 'groupingid', $grouping->id, 'groupid', $groupid); } } +} - $groupmembers = groups_get_members($groupid); - $groupmembersoptions = ''; - $groupmemberscount = 0; - if ($groupmembers != false) { - // Put the groupings into a hash and sorts them - foreach ($groupmembers as $userid) { - $listmembers[$userid] = groups_get_user_displayname($userid, $courseid); - $groupmemberscount ++; - } - natcasesort($listmembers); - // Print out the HTML - foreach($listmembers as $id => $name) { - $groupmembersoptions .= "\n"; - } - } else { - $groupmembersoptions .= ''; - } +$currentmembers = array(); +$potentialmembers = array(); - $potentialmembers = array(); - $potentialmembersoptions = ''; - $potentialmemberscount = 0; - - $potentialmembers = groups_get_users_not_in_group($courseid, $groupid, $searchtext); - if (!empty($potentialmembers)) { - $potentialmemberscount = count($potentialmembers); - } else { - $potentialmemberscount = 0; - } - if ($potentialmemberscount <= MAX_USERS_PER_PAGE) { - - if ($potentialmembers != false) { - // Put the groupings into a hash and sorts them - foreach ($potentialmembers as $userid => $user) { - $nonmembers[$userid] = fullname($user); - //$nonmembers[$userid] = groups_get_user_displayname($userid, $courseid); - } - natcasesort($nonmembers); - - // Print out the HTML - foreach($nonmembers as $id => $name) { - $potentialmembersoptions .= "\n"; - } - } else { - $potentialmembersoptions .= ''; +if ($groups = get_records('groups', 'courseid', $courseid, 'name')) { + if ($assignment = get_records('groupings_groups', 'groupingid', $grouping->id)) { + foreach ($assignment as $ass) { + $currentmembers[$ass->groupid] = $groups[$ass->groupid]; + unset($groups[$ass->groupid]); } } + $potentialmembers = $groups; +} - // Print the page and form - $strgroups = get_string('groups'); - $strparticipants = get_string('participants'); +$currentmembersoptions = ''; +$currentmemberscount = 0; +if ($currentmembers) { + foreach($currentmembers as $group) { + $currentmembersoptions .= ''; + $currentmemberscount ++; + } +} else { + $currentmembersoptions .= ''; +} - $groupname = groups_get_group_displayname($groupid); +$potentialmembersoptions = ''; +$potentialmemberscount = 0; +if ($potentialmembers) { + foreach($potentialmembers as $group) { + $potentialmembersoptions .= ''; + $potentialmemberscount ++; + } +} else { + $potentialmembersoptions .= ''; +} - print_header("$course->shortname: $strgroups", - $course->fullname, - "wwwroot/course/view.php?id=$courseid\">$course->shortname ". - "-> wwwroot/user/index.php?id=$courseid\">$strparticipants ". - "-> wwwroot/group/index.php?id=$courseid\">$strgroups". - '-> '. get_string('adduserstogroup', 'group'), '', '', true, '', user_login_string($course, $USER)); +// Print the page and form +$strgroups = get_string('groups'); +$strparticipants = get_string('participants'); + +$groupingname = format_string($grouping->name); + +print_header("$course->shortname: $strgroups", + $course->fullname, + "wwwroot/course/view.php?id=$courseid\">$course->shortname ". + "-> wwwroot/user/index.php?id=$courseid\">$strparticipants ". + "-> wwwroot/group/index.php?id=$courseid\">$strgroups". + '-> '. get_string('addgroupstogroupings', 'group'), '', '', true, '', user_login_string($course, $USER)); ?>