From 85493f06d286ea59d564317dd960238c68cc6061 Mon Sep 17 00:00:00 2001 From: Paul Holden Date: Mon, 6 Nov 2023 16:38:06 +0000 Subject: [PATCH] MDL-79980 mod_survey: respect activity group mode getting report. --- mod/survey/report.php | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/mod/survey/report.php b/mod/survey/report.php index ba01f744d8d..8e2cb14faf1 100644 --- a/mod/survey/report.php +++ b/mod/survey/report.php @@ -106,9 +106,16 @@ $renderer = $PAGE->get_renderer('mod_survey'); echo $renderer->response_actionbar($actionbar); // Check to see if groups are being used in this survey. -if ($groupmode = groups_get_activity_groupmode($cm)) { // Groups are being used. +$groupmode = groups_get_activity_groupmode($cm); +if ($groupmode != NOGROUPS) { $menuaction = $action == "student" ? "students" : $action; + + // Get the current activity group, confirm user can access. $currentgroup = groups_get_activity_group($cm, true); + if ($currentgroup === 0 && $groupmode == SEPARATEGROUPS && !has_capability('moodle/site:accessallgroups', $context)) { + throw new moodle_exception('notingroup'); + } + $groupsactivitymenu = groups_print_activity_menu($cm, new moodle_url('/mod/survey/report.php', ['id' => $cm->id, 'action' => $menuaction, 'qid' => $qid]), true); } else { @@ -365,8 +372,9 @@ switch ($action) { break; case "student": - if (!$user = $DB->get_record("user", array("id" => $student))) { - throw new moodle_exception('invaliduserid'); + $user = core_user::get_user($student, '*', MUST_EXIST); + if ($currentgroup && !array_key_exists($user->id, $users)) { + throw new moodle_exception('usernotavailable', 'error'); } echo $OUTPUT->heading(get_string("analysisof", "survey", fullname($user)), 3);