MDL-53744 question file access: fix access checks
authorTim Hunt <T.J.Hunt@open.ac.uk>
Mon, 26 Sep 2016 18:46:22 +0000 (19:46 +0100)
committerMr. Jenkins (CiBoT) <cibot@moodle.org>
Thu, 10 Nov 2016 08:15:31 +0000 (16:15 +0800)
question/type/essay/question.php
question/type/questionbase.php

index d6c2b69..a14b06a 100644 (file)
@@ -140,7 +140,7 @@ class qtype_essay_question extends question_with_responses {
             return $this->responseformat === 'editorfilepicker';
 
         } else if ($component == 'qtype_essay' && $filearea == 'graderinfo') {
-            return $options->manualcomment;
+            return $options->manualcomment && $args[0] == $this->id;
 
         } else {
             return parent::check_file_access($qa, $options, $component,
index 31c36f0..879381e 100644 (file)
@@ -413,11 +413,11 @@ abstract class question_definition {
      */
     public function check_file_access($qa, $options, $component, $filearea, $args, $forcedownload) {
         if ($component == 'question' && $filearea == 'questiontext') {
-            // Question text always visible.
-            return true;
+            // Question text always visible, but check it is the right question id.
+            return $args[0] == $this->id;
 
         } else if ($component == 'question' && $filearea == 'generalfeedback') {
-            return $options->generalfeedback;
+            return $options->generalfeedback && $args[0] == $this->id;
 
         } else {
             // Unrecognised component or filearea.
@@ -681,7 +681,8 @@ abstract class question_graded_automatically extends question_with_responses
             list($notused, $state) = $this->grade_response($response);
         }
 
-        return $options->feedback && $state->get_feedback_class() . 'feedback' == $filearea;
+        return $options->feedback && $state->get_feedback_class() . 'feedback' == $filearea &&
+                $args[0] == $this->id;
     }
 
     /**