/**
  * 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));
}