diff --git a/mod/feedback/classes/external.php b/mod/feedback/classes/external.php index f380f39f906..83c842bb3ec 100644 --- a/mod/feedback/classes/external.php +++ b/mod/feedback/classes/external.php @@ -1002,6 +1002,10 @@ class mod_feedback_external extends external_api { list($feedback, $course, $cm, $context) = self::validate_feedback($params['feedbackid']); + if ($feedback->anonymous != FEEDBACK_ANONYMOUS_NO || $feedback->course == SITEID) { + throw new moodle_exception('anonymous', 'feedback'); + } + // Check permissions. require_capability('mod/feedback:viewreports', $context); diff --git a/mod/feedback/tests/external_test.php b/mod/feedback/tests/external_test.php index 3763d591041..0d91edb2a2e 100644 --- a/mod/feedback/tests/external_test.php +++ b/mod/feedback/tests/external_test.php @@ -674,10 +674,25 @@ class mod_feedback_external_testcase extends externallib_advanced_testcase { mod_feedback_external::get_non_respondents($this->feedback->id); } + /** + * Test get_non_respondents from an anonymous feedback. + */ + public function test_get_non_respondents_from_anonymous_feedback() { + $this->setUser($this->student); + $this->expectException('moodle_exception'); + $this->expectExceptionMessage(get_string('anonymous', 'feedback')); + mod_feedback_external::get_non_respondents($this->feedback->id); + } + /** * Test get_non_respondents. */ public function test_get_non_respondents() { + global $DB; + + // Force non anonymous. + $DB->set_field('feedback', 'anonymous', FEEDBACK_ANONYMOUS_NO, array('id' => $this->feedback->id)); + // Create another student. $anotherstudent = self::getDataGenerator()->create_user(); $this->getDataGenerator()->enrol_user($anotherstudent->id, $this->course->id, $this->studentrole->id, 'manual');