/**
  * This function tests to see if a user-named group is created correctly.
  */
 public function test_create_group()
 {
     global $DB;
     $this->configure_settings();
     $sgrouping = new skills_grouping($this->courseid);
     // Test 1: group creation with name specified.
     $this->setUser($this->users[0]);
     $testname = 'Test Skills Group';
     $groupid = $sgrouping->create_group($testname);
     $record = $DB->get_record('groups', array('id' => $groupid));
     $this->assertEquals($record->name, $testname);
     $memberrecord = $DB->get_record('groups_members', array('groupid' => $groupid));
     $this->assertEquals($memberrecord->userid, $this->users[0]->id);
     groups_remove_member($groupid, $this->users[0]->id);
     // Test 2: auto-created group name.
     $groupid = $sgrouping->create_group(null);
     $record = $DB->get_record('groups', array('id' => $groupid));
     $this->assertEquals($record->name, 'Team 03');
     groups_remove_member($groupid, $this->users[0]->id);
     $groupid = $sgrouping->create_group(null);
     $record = $DB->get_record('groups', array('id' => $groupid));
     $this->assertEquals($record->name, 'Team 04');
     $groupid = $sgrouping->create_group(null);
     $record = $DB->get_record('groups', array('id' => $groupid));
     $this->assertEquals($record->name, 'Team 06');
 }
/**
 * This function determines the user's desired course of action -> {create, edit, drop}
 * and processes it accordingly.
 *
 * @param int $courseid The ID of the course.
 * @param object $submittedform The object contains the results of the form when changes were saved.
 * @return string|boolean The url to redirect the user to or false to prevent redirect.
 *
 */
function process_form($courseid, &$submittedform)
{
    global $DB, $USER;
    $sgs = new skills_group_setting($courseid);
    if ($sgs->date_restriction() && time() > $sgs->get_date()) {
        // Process no data and redirect back to same form.  Form will draw expired version to alert user.
        $url = new moodle_url('/blocks/skills_group/create_skills_group.php', array('courseid' => $courseid, 'sesskey' => $USER->sesskey));
        return $url;
    }
    if ($submittedform->type == 'create') {
        if ($submittedform->creategroupcheck) {
            $sgrouping = new skills_grouping($courseid);
            // Blank names are OK -> plugin will autoname.
            $groupname = isset($submittedform->creategroup) ? $submittedform->creategroup : null;
            $groupid = $sgrouping->create_group($groupname);
            update_allow_join($groupid, $submittedform->allowjoincheck);
            $url = new moodle_url('/blocks/skills_group/edit_skills_group.php', array('courseid' => $courseid, 'groupid' => $groupid, 'sesskey' => $USER->sesskey));
            // Logging create group action.
            $params = array('context' => context_course::instance($courseid), 'objectid' => $groupid, 'courseid' => $courseid, 'userid' => $USER->id);
            $event = \block_skills_group\event\skillsgroup_left::create($params);
            $event->trigger();
        } else {
            $url = new moodle_url('/course/view.php', array('id' => $courseid));
        }
    } else {
        if ($submittedform->type == 'edit') {
            if (isset($submittedform->leavegroup)) {
                if ($submittedform->leavegroup) {
                    groups_remove_member($submittedform->groupid, $USER->id);
                    // Logging leave group action.
                    $params = array('context' => context_course::instance($courseid), 'objectid' => $submittedform->groupid, 'courseid' => $courseid, 'userid' => $USER->id);
                    $event = \block_skills_group\event\skillsgroup_left::create($params);
                    $event->trigger();
                    $url = new moodle_url('/course/view.php', array('id' => $courseid));
                    return $url;
                }
            }
            $groupid = $submittedform->groupid;
            update_allow_join($groupid, $submittedform->allowjoincheck);
            if ($submittedform->editmembers) {
                $url = new moodle_url('/blocks/skills_group/edit_skills_group.php', array('courseid' => $courseid, 'groupid' => $groupid, 'sesskey' => $USER->sesskey));
            } else {
                $url = new moodle_url('/course/view.php', array('id' => $courseid));
            }
        } else {
            $url = new moodle_url('/course/view.php', array('id' => $courseid));
        }
    }
    return $url;
}