/**
 *
 */
function choicegroup_get_user_answer($choicegroup, $user, $returnArray = FALSE, $refresh = FALSE)
{
    global $DB, $choicegroup_groups;
    static $user_answers = array();
    if (is_numeric($user)) {
        $userid = $user;
    } else {
        $userid = $user->id;
    }
    if (!$refresh and isset($user_answers[$userid])) {
        if ($returnArray === TRUE) {
            return $user_answers[$userid];
        } else {
            return $user_answers[$userid][0];
        }
    } else {
        $user_answers = array();
    }
    if (!count($choicegroup_groups)) {
        $choicegroup_groups = choicegroup_get_groups($choicegroup);
    }
    $groupids = array();
    foreach ($choicegroup_groups as $group) {
        if (is_numeric($group->id)) {
            $groupids[] = $group->id;
        }
    }
    if ($groupids) {
        $params1 = array($userid);
        list($insql, $params2) = $DB->get_in_or_equal($groupids);
        $params = array_merge($params1, $params2);
        $groupmemberships = $DB->get_records_sql('SELECT * FROM {groups_members} WHERE userid = ? AND groupid ' . $insql, $params);
        $groups = array();
        foreach ($groupmemberships as $groupmembership) {
            $group = $choicegroup_groups[$groupmembership->groupid];
            $group->timeuseradded = $groupmembership->timeadded;
            $groups[] = $group;
        }
        if (count($groups) > 0) {
            $user_answers[$userid] = $groups;
            if ($returnArray === TRUE) {
                return $groups;
            } else {
                return $groups[0];
            }
        }
    }
    return false;
}
$url = new moodle_url('/mod/choicegroup/view.php', array('id' => $id));
if ($action !== '') {
    $url->param('action', $action);
}
$PAGE->set_url($url);
if (!($cm = get_coursemodule_from_id('choicegroup', $id))) {
    print_error('invalidcoursemodule');
}
if (!($course = $DB->get_record("course", array("id" => $cm->course)))) {
    print_error('coursemisconf');
}
require_login($course, false, $cm);
if (!($choicegroup = choicegroup_get_choicegroup($cm->instance))) {
    print_error('invalidcoursemodule');
}
$choicegroup_groups = choicegroup_get_groups($choicegroup);
$choicegroup_users = array();
$strchoicegroup = get_string('modulename', 'choicegroup');
$strchoicegroups = get_string('modulenameplural', 'choicegroup');
if (!($context = context_module::instance($cm->id))) {
    print_error('badcontext');
}
$eventparams = array('context' => $context, 'objectid' => $choicegroup->id);
$current = choicegroup_get_user_answer($choicegroup, $USER);
if ($action == 'delchoicegroup' and confirm_sesskey() and is_enrolled($context, NULL, 'mod/choicegroup:choose') and $choicegroup->allowupdate) {
    // user wants to delete his own choice:
    if ($current !== false) {
        if (groups_is_member($current->id, $USER->id)) {
            $currentgroup = $DB->get_record('groups', array('id' => $current->id), 'id,name', MUST_EXIST);
            groups_remove_member($current->id, $USER->id);
            $event = \mod_choicegroup\event\choice_removed::create($eventparams);