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