From 3786de22f2f0d666639d1c098635503540cf2e6f Mon Sep 17 00:00:00 2001 From: Tim Schroeder Date: Mon, 4 May 2020 21:00:07 +0200 Subject: [PATCH] MDL-68605 mod_assign: return grp submissns from ws Co-authored-by: Septatrix <24257556+Septatrix@users.noreply.github.com> --- mod/assign/externallib.php | 6 +++- mod/assign/tests/externallib_test.php | 42 +++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/mod/assign/externallib.php b/mod/assign/externallib.php index 140f3fb7a16..907f7fa1552 100644 --- a/mod/assign/externallib.php +++ b/mod/assign/externallib.php @@ -794,7 +794,11 @@ class mod_assign_external extends external_api { 'gradingstatus' => $assign->get_grading_status($submissionrecord->userid) ); - if ($assign->can_view_submission($submissionrecord->userid)) { + if (($assign->get_instance()->teamsubmission + && $assign->can_view_group_submission($submissionrecord->groupid)) + || (!$assign->get_instance()->teamsubmission + && $assign->can_view_submission($submissionrecord->userid)) + ) { $submissions[] = $submission; } } diff --git a/mod/assign/tests/externallib_test.php b/mod/assign/tests/externallib_test.php index 4f832131f93..2bd40007a2c 100644 --- a/mod/assign/tests/externallib_test.php +++ b/mod/assign/tests/externallib_test.php @@ -454,6 +454,48 @@ class mod_assign_external_testcase extends externallib_advanced_testcase { $this->assertEquals(1, count($result['assignments'])); } + public function test_get_submissions_group_submission() { + global $DB; + + $this->resetAfterTest(true); + + $result = $this->create_assign_with_student_and_teacher(array( + 'assignsubmission_onlinetext_enabled' => 1, + 'teamsubmission' => 1 + )); + $assignmodule = $result['assign']; + $student = $result['student']; + $teacher = $result['teacher']; + $course = $result['course']; + $context = context_course::instance($course->id); + $teacherrole = $DB->get_record('role', array('shortname' => 'teacher')); + $group = $this->getDataGenerator()->create_group(array('courseid' => $course->id)); + $cm = get_coursemodule_from_instance('assign', $assignmodule->id); + $context = context_module::instance($cm->id); + $assign = new mod_assign_testable_assign($context, $cm, $course); + + groups_add_member($group, $student); + + $this->setUser($student); + $submission = $assign->get_group_submission($student->id, $group->id, true); + $sid = $submission->id; + + $this->setUser($teacher); + + $assignmentids[] = $assignmodule->id; + $result = mod_assign_external::get_submissions($assignmentids); + $result = external_api::clean_returnvalue(mod_assign_external::get_submissions_returns(), $result); + + $this->assertEquals(1, count($result['assignments'])); + $assignment = $result['assignments'][0]; + $this->assertEquals($assignmodule->id, $assignment['assignmentid']); + $this->assertEquals(1, count($assignment['submissions'])); + $submission = $assignment['submissions'][0]; + $this->assertEquals($sid, $submission['id']); + $this->assertEquals($group->id, $submission['groupid']); + $this->assertEquals(0, $submission['userid']); + } + /** * Test get_user_flags */