/** * This function checks for locked and unlocked group members to see if the two lists * are correctly returned. The group consists of one locked member (the last ID) and * one unlocked member. * */ public function test_get_members_list() { $this->configure_settings(); $sgroup = new skills_group($this->groupids[0]); $userindex = self::NUMBEROFUSERS - 1; $students = $sgroup->get_members_list(true); $this->assertEquals(count($students), 1); $ids = array_keys($students); $this->assertEquals($ids[0], $this->users[self::NUMBEROFUSERS - 1]->id); $students = $sgroup->get_members_list(false); $this->assertEquals(count($students), 1); $ids = array_keys($students); $this->assertEquals($ids[0], $this->users[self::NUMBEROFUSERS - 2]->id); }
/** * This is function adds members to a particular group. * */ private function add_members() { global $DB, $USER; $groupid = required_param('groupid', PARAM_INT); $members = required_param('members', PARAM_TEXT); $allowjoin = required_param('allowjoin', PARAM_TEXT); $this->courseid = required_param('courseid', PARAM_INT); // Update allowjoin flag. $sgroup = new skills_group($groupid); // The boolean encoding with json gets messed up -> so check for the string version here. if ($allowjoin == 'true') { $sgroup->set_allow_others_to_join(true); } else { $sgroup->set_allow_others_to_join(false); } $decodedmembers = json_decode($members, true); $decodedmembers = is_array($decodedmembers) ? array_unique($decodedmembers) : array(); // Add the list of IDs of locked members to the list of individuals to add to the group. // TODO: would be nice if this was part of the skills_group class? $lockedmembers = $sgroup->get_members_list($lock = true); foreach ($lockedmembers as $key => $lockedmember) { $decodedmembers[] = $key; } $sgsetting = new skills_group_setting($this->courseid); // Wipe out old group. $DB->delete_records('groups_members', array('groupid' => $groupid)); // Add self. groups_add_member($groupid, $USER->id); // Logging edit group action. $params = array('context' => context_course::instance($this->courseid), 'objectid' => $groupid, 'courseid' => $this->courseid, 'userid' => $USER->id); $event = \block_skills_group\event\skillsgroup_joined::create($params); $event->trigger(); if (count($decodedmembers) <= $sgsetting->get_group_size() - 1) { foreach ($decodedmembers as $dm) { groups_add_member($groupid, $dm); } echo json_encode(array('result' => 'true', 'text' => get_string('groupupdatesuccess', BLOCK_SG_LANG_TABLE))); } else { echo json_encode(array('result' => 'false', 'text' => get_string('toomanymembers', BLOCK_SG_LANG_TABLE))); } }
/** * This function loads the YUI modules that I have written. I've elected to * load these last since that is generally safest. * * @param int $courseid The ID of the course being used. * @param int $groupid The ID of the group that the user belongs to. * */ function load_yui_modules($courseid, $groupid, $error = null) { global $PAGE; $params = array('courseid' => $courseid, 'groupid' => $groupid, 'errorstring' => $error); if ($error == null) { $sgsetting = new skills_group_setting($courseid); $sgrouping = new skills_grouping($courseid); $sgroup = new skills_group($groupid); // True max group size is: max group size - # of locked members. $params['maxgroupsize'] = $sgsetting->get_group_size() - count($sgroup->get_members_list(true)); $potentialstudents = $sgrouping->get_potential_students(); $params['availableids'] = array_keys($potentialstudents); $params['availablenames'] = array_values($potentialstudents); $unlockedstudents = $sgroup->get_members_list(false); $params['groupmemberids'] = array_keys($unlockedstudents); $params['groupmembernames'] = array_values($unlockedstudents); } $PAGE->requires->yui_module('moodle-block_skills_group-edit', 'M.block_skills_group.init_edit', array($params)); }