diff --git a/grade/edit/scale/index.php b/grade/edit/scale/index.php index 30b2ef835a7..a16bd9187a6 100644 --- a/grade/edit/scale/index.php +++ b/grade/edit/scale/index.php @@ -92,7 +92,8 @@ switch ($action) { 'sesskey' => sesskey(), 'deleteconfirmed'=> 1)); - echo $OUTPUT->confirm(get_string('scaleconfirmdelete', 'grades', $scale->name), $confirmurl, "index.php?id={$courseid}"); + echo $OUTPUT->confirm(get_string('scaleconfirmdelete', 'grades', $scale->get_name()), $confirmurl, + "index.php?id={$courseid}"); echo $OUTPUT->footer(); die; } else { @@ -115,7 +116,7 @@ if ($courseid and $scales = grade_scale::fetch_all_local($courseid)) { $data = array(); foreach($scales as $scale) { $line = array(); - $line[] = format_string($scale->name).'
'; + $line[] = $scale->get_name() .''; $used = $scale->is_used(); $line[] = $used ? get_string('yes') : get_string('no'); @@ -141,7 +142,7 @@ if ($scales = grade_scale::fetch_all_global()) { $data = array(); foreach($scales as $scale) { $line = array(); - $line[] = format_string($scale->name).''; + $line[] = $scale->get_name().''; $used = $scale->is_used(); $line[] = $used ? get_string('yes') : get_string('no'); diff --git a/lib/datalib.php b/lib/datalib.php index 8d8bfae9704..ad64468ad48 100644 --- a/lib/datalib.php +++ b/lib/datalib.php @@ -1172,16 +1172,18 @@ function get_my_remotehosts() { function get_scales_menu($courseid=0) { global $DB; - $sql = "SELECT id, name + $sql = "SELECT id, name, courseid FROM {scale} WHERE courseid = 0 or courseid = ? ORDER BY courseid ASC, name ASC"; $params = array($courseid); $scales = array(); - $results = $DB->get_records_sql_menu($sql, $params); - foreach ($results as $i => $scalename) { - $scales[$i] = format_string($scalename, false, array("context" => context_course::instance($courseid))); + $results = $DB->get_records_sql($sql, $params); + foreach ($results as $index => $record) { + $context = empty($record->courseid) ? context_system::instance() : context_course::instance($record->courseid); + $scales[$index] = format_string($record->name, false, ["context" => $context]); } + // Format: [id => 'scale name']. return $scales; } diff --git a/lib/grade/grade_category.php b/lib/grade/grade_category.php index 9fc1abd7eb6..a668f23be59 100644 --- a/lib/grade/grade_category.php +++ b/lib/grade/grade_category.php @@ -2312,6 +2312,8 @@ class grade_category extends grade_object { return format_string($course->fullname, false, array("context" => context_course::instance($this->courseid))); } else { + // Grade categories can't be set up at system context (unlike scales and outcomes) + // We therefore must have a courseid, and don't need to handle system contexts when filtering. return format_string($this->fullname, false, array("context" => context_course::instance($this->courseid))); } } diff --git a/lib/grade/grade_outcome.php b/lib/grade/grade_outcome.php index 3ba3fab5342..064cdd160cb 100644 --- a/lib/grade/grade_outcome.php +++ b/lib/grade/grade_outcome.php @@ -276,7 +276,9 @@ class grade_outcome extends grade_object { * @return string name */ public function get_name() { - return format_string($this->fullname, false, array("context" => context_course::instance($this->courseid))); + // Grade outcomes can be created at site or course context, so set the filter context appropriately. + $context = empty($this->courseid) ? context_system::instance() : context_course::instance($this->courseid); + return format_string($this->fullname, false, ["context" => $context]); } /** diff --git a/lib/grade/grade_scale.php b/lib/grade/grade_scale.php index 0ad3b0a47c4..6a94d78898f 100644 --- a/lib/grade/grade_scale.php +++ b/lib/grade/grade_scale.php @@ -214,7 +214,9 @@ class grade_scale extends grade_object { * @return string name */ public function get_name() { - return format_string($this->name); + // Grade scales can be created at site or course context, so set the filter context appropriately. + $context = empty($this->courseid) ? context_system::instance() : context_course::instance($this->courseid); + return format_string($this->name, false, ['context' => $context]); } /**