MDL-81945 gradereport_singleview: Fix hidden grades handling.
If a user is lacking moodle/grade:viewhidden he should not be able to view or modify grades.
This commit is contained in:
@@ -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(),
|
||||
];
|
||||
|
||||
|
||||
@@ -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(),
|
||||
];
|
||||
|
||||
|
||||
@@ -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(),
|
||||
|
||||
@@ -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(),
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user