diff --git a/grade/report/singleview/classes/local/screen/grade.php b/grade/report/singleview/classes/local/screen/grade.php index 3f29e3e07e4..c8bf692e863 100644 --- a/grade/report/singleview/classes/local/screen/grade.php +++ b/grade/report/singleview/classes/local/screen/grade.php @@ -24,6 +24,7 @@ namespace gradereport_singleview\local\screen; +use context_course; use grade_report; use gradereport_singleview\local\ui\range; use gradereport_singleview\local\ui\bulk_insert; @@ -217,8 +218,12 @@ class grade extends tablelike implements selectable_items, filterable_items { $grade = $this->fetch_grade_or_default($this->item, $item->id); $gradestatus = ''; + + $canviewhidden = $grade->is_hidden() && + !has_capability('moodle/grade:viewhidden', context_course::instance($this->courseid)); + $context = [ - 'hidden' => $grade->is_hidden(), + 'hidden' => $canviewhidden, 'locked' => $grade->is_locked(), ]; diff --git a/grade/report/singleview/classes/local/screen/user.php b/grade/report/singleview/classes/local/screen/user.php index b6a3c9e173e..8a8ed4e7450 100644 --- a/grade/report/singleview/classes/local/screen/user.php +++ b/grade/report/singleview/classes/local/screen/user.php @@ -24,6 +24,7 @@ namespace gradereport_singleview\local\screen; +use context_course; use grade_seq; use gradereport_singleview; use moodle_url; @@ -171,8 +172,11 @@ class user extends tablelike implements selectable_items { $grade = $this->fetch_grade_or_default($item, $this->item->id); $gradestatus = ''; + $canviewhidden = ($grade->is_hidden() || $item->is_hidden()) && + !has_capability('moodle/grade:viewhidden', context_course::instance($item->courseid)); + $context = [ - 'hidden' => $grade->is_hidden(), + 'hidden' => $canviewhidden, 'locked' => $grade->is_locked(), ]; diff --git a/grade/report/singleview/classes/local/ui/exclude.php b/grade/report/singleview/classes/local/ui/exclude.php index f92b9a7d20a..f0aa4f4729b 100644 --- a/grade/report/singleview/classes/local/ui/exclude.php +++ b/grade/report/singleview/classes/local/ui/exclude.php @@ -26,6 +26,7 @@ namespace gradereport_singleview\local\ui; defined('MOODLE_INTERNAL') || die; +use context_course; use grade_grade; /** @@ -83,6 +84,10 @@ class exclude extends grade_attribute_format implements be_checked, be_disabled, * @return element */ public function determine_format(): element { + if (($this->grade->is_hidden() || $this->grade->grade_item->is_hidden()) && + !has_capability('moodle/grade:viewhidden', context_course::instance($this->grade->grade_item->courseid))) { + return new empty_element(); + } return new checkbox_attribute( $this->get_name(), $this->get_label(), diff --git a/grade/report/singleview/classes/local/ui/feedback.php b/grade/report/singleview/classes/local/ui/feedback.php index 76bbeca2940..38f9fb5fd6f 100644 --- a/grade/report/singleview/classes/local/ui/feedback.php +++ b/grade/report/singleview/classes/local/ui/feedback.php @@ -24,6 +24,8 @@ namespace gradereport_singleview\local\ui; +use context_course; + defined('MOODLE_INTERNAL') || die; /** @@ -104,6 +106,10 @@ class feedback extends grade_attribute_format implements unique_value, be_disabl * @return element */ public function determine_format(): element { + if (($this->grade->is_hidden() || $this->grade->grade_item->is_hidden()) && + !has_capability('moodle/grade:viewhidden', context_course::instance($this->grade->grade_item->courseid))) { + return new empty_element(); + } return new text_attribute( $this->get_name(), $this->get_value(), diff --git a/grade/report/singleview/classes/local/ui/finalgrade.php b/grade/report/singleview/classes/local/ui/finalgrade.php index a7a143ef508..50efe5b987c 100644 --- a/grade/report/singleview/classes/local/ui/finalgrade.php +++ b/grade/report/singleview/classes/local/ui/finalgrade.php @@ -26,6 +26,7 @@ namespace gradereport_singleview\local\ui; defined('MOODLE_INTERNAL') || die; +use context_course; use stdClass; /** * UI element representing the finalgrade column. @@ -115,6 +116,11 @@ class finalgrade extends grade_attribute_format implements unique_value, be_disa public function determine_format(): element { global $CFG; + if (($this->grade->is_hidden() || $this->grade->grade_item->is_hidden()) && + !has_capability('moodle/grade:viewhidden', context_course::instance($this->grade->grade_item->courseid))) { + return new empty_element(); + } + if ($this->grade->grade_item->load_scale()) { $scale = $this->grade->grade_item->load_scale(); diff --git a/grade/report/singleview/classes/local/ui/override.php b/grade/report/singleview/classes/local/ui/override.php index 07b71c4f42c..1ce035e6f0a 100644 --- a/grade/report/singleview/classes/local/ui/override.php +++ b/grade/report/singleview/classes/local/ui/override.php @@ -24,6 +24,8 @@ namespace gradereport_singleview\local\ui; +use context_course; + defined('MOODLE_INTERNAL') || die; /** @@ -94,7 +96,9 @@ class override extends grade_attribute_format implements be_checked, be_disabled * @return element */ public function determine_format(): element { - if (!$this->grade->grade_item->is_overridable_item()) { + $canviewhidden = ($this->grade->is_hidden() || $this->grade->is_hidden()) && + !has_capability('moodle/grade:viewhidden', context_course::instance($this->grade->grade_item->courseid)); + if (!$canviewhidden || !$this->grade->grade_item->is_overridable_item()) { return new empty_element(); } return new checkbox_attribute(