diff --git a/grade/report/grader/lib.php b/grade/report/grader/lib.php index 7b3d4298e88..634e3725482 100644 --- a/grade/report/grader/lib.php +++ b/grade/report/grader/lib.php @@ -760,17 +760,15 @@ class grade_report_grader extends grade_report { * @param boolean $displayaverages whether to display average rows in the table * @return array Array of html_table_row objects */ - public function get_right_rows($displayaverages) { + public function get_right_rows(bool $displayaverages) : array { global $CFG, $USER, $OUTPUT, $DB, $PAGE; - $rows = array(); + $rows = []; $this->rowcount = 0; - $numrows = count($this->gtree->get_levels()); $numusers = count($this->users); $gradetabindex = 1; - $columnstounset = array(); $strgrade = $this->get_lang_string('gradenoun'); - $arrows = $this->get_sort_arrows(); + $this->get_sort_arrows(); // Get preferences once. $showactivityicons = $this->get_pref('showactivityicons'); @@ -781,23 +779,19 @@ class grade_report_grader extends grade_report { $strftimedatetimeshort = get_string('strftimedatetimeshort'); $strexcludedgrades = get_string('excluded', 'grades'); $strerror = get_string('error'); - $viewfullnames = has_capability('moodle/site:viewfullnames', $this->context); - foreach ($this->gtree->get_levels() as $key => $row) { + foreach ($this->gtree->get_levels() as $row) { $headingrow = new html_table_row(); $headingrow->attributes['class'] = 'heading_name_row'; - foreach ($row as $columnkey => $element) { + foreach ($row as $element) { $sortlink = clone($this->baseurl); if (isset($element['object']->id)) { $sortlink->param('sortitemid', $element['object']->id); } - $eid = $element['eid']; - $object = $element['object']; $type = $element['type']; - $categorystate = @$element['categorystate']; if (!empty($element['colspan'])) { $colspan = $element['colspan']; @@ -811,8 +805,8 @@ class grade_report_grader extends grade_report { $catlevel = ''; } - // Element is a filler - if ($type == 'filler' or $type == 'fillerfirst' or $type == 'fillerlast') { + // Element is a filler. + if ($type == 'filler' || $type == 'fillerfirst' || $type == 'fillerlast') { $fillercell = new html_table_cell(); $fillercell->attributes['class'] = $type . ' ' . $catlevel; $fillercell->colspan = $colspan; @@ -840,7 +834,7 @@ class grade_report_grader extends grade_report { $headingrow->cells[] = $categorycell; } } else { - // Element is a grade_item + // Element is a grade_item. if ($element['object']->id == $this->sortitemid) { if ($this->sortorder == 'ASC') { $arrow = $this->get_sort_arrow('up', $sortlink); @@ -851,10 +845,12 @@ class grade_report_grader extends grade_report { $arrow = $this->get_sort_arrow('move', $sortlink); } - $headerlink = $this->gtree->get_element_header($element, true, $showactivityicons, false, false, true); + $headerlink = $this->gtree->get_element_header($element, true, + $showactivityicons, false, false, true); $itemcell = new html_table_cell(); - $itemcell->attributes['class'] = $type . ' ' . $catlevel . ' highlightable'. ' i'. $element['object']->id; + $itemcell->attributes['class'] = $type . ' ' . $catlevel . + ' highlightable'. ' i'. $element['object']->id; $itemcell->attributes['data-itemid'] = $element['object']->id; if ($element['object']->is_hidden()) { @@ -865,19 +861,21 @@ class grade_report_grader extends grade_report { // FIXME: MDL-52678 This is extremely hacky we should have an API for inserting grade column links. if (get_capability_info('gradereport/singleview:view')) { - if (has_all_capabilities(array('gradereport/singleview:view', 'moodle/grade:viewall', - 'moodle/grade:edit'), $this->context)) { + if (has_all_capabilities(['gradereport/singleview:view', 'moodle/grade:viewall', + 'moodle/grade:edit'], $this->context)) { - $strsingleview = get_string('singleview', 'grades', $element['object']->get_name()); - $url = new moodle_url('/grade/report/singleview/index.php', array( + $strsingleview = get_string('singleview', 'grades', + $element['object']->get_name()); + $url = new moodle_url('/grade/report/singleview/index.php', [ 'id' => $this->course->id, 'item' => 'grade', - 'itemid' => $element['object']->id)); + 'itemid' => $element['object']->id + ]); $singleview = $OUTPUT->action_icon( - $url, - new pix_icon('t/editstring', ''), - null, - ['title' => $strsingleview, 'aria-label' => $strsingleview] + $url, + new pix_icon('t/editstring', ''), + null, + ['title' => $strsingleview, 'aria-label' => $strsingleview] ); } } @@ -895,19 +893,18 @@ class grade_report_grader extends grade_report { $rows = $this->get_right_icons_row($rows); - // Preload scale objects for items with a scaleid and initialize tab indices - $scaleslist = array(); - $tabindices = array(); + // Preload scale objects for items with a scaleid and initialize tab indices. + $scaleslist = []; + $tabindices = []; foreach ($this->gtree->get_items() as $itemid => $item) { - $scale = null; if (!empty($item->scaleid)) { $scaleslist[] = $item->scaleid; } $tabindices[$item->id]['grade'] = $gradetabindex; $gradetabindex += $numusers * 2; } - $scalesarray = array(); + $scalesarray = []; if (!empty($scaleslist)) { $scalesarray = $DB->get_records_list('scale', 'id', $scaleslist); @@ -925,8 +922,8 @@ class grade_report_grader extends grade_report { foreach ($this->users as $userid => $user) { if ($this->canviewhidden) { - $altered = array(); - $unknown = array(); + $altered = []; + $unknown = []; } else { $usergrades = $this->allgrades[$userid]; $hidingaffected = grade_grade::get_hiding_affected($usergrades, $allgradeitems); @@ -946,10 +943,10 @@ class grade_report_grader extends grade_report { $itemcell = new html_table_cell(); - $itemcell->id = 'u'.$userid.'i'.$itemid; + $itemcell->id = 'u' . $userid . 'i' . $itemid; $itemcell->attributes['data-itemid'] = $itemid; - // Get the decimal points preference for this item + // Get the decimal points preference for this item. $decimalpoints = $item->get_decimals(); if (array_key_exists($itemid, $unknown)) { @@ -960,11 +957,13 @@ class grade_report_grader extends grade_report { $gradeval = $grade->finalgrade; } - // MDL-11274 - // Hide grades in the grader report if the current grader doesn't have 'moodle/grade:viewhidden' - if (!$this->canviewhidden and $grade->is_hidden()) { - if (!empty($CFG->grade_hiddenasdate) and $grade->get_datesubmitted() and !$item->is_category_item() and !$item->is_course_item()) { - // the problem here is that we do not have the time when grade value was modified, 'timemodified' is general modification date for grade_grades records + // MDL-11274: Hide grades in the grader report if the current grader + // doesn't have 'moodle/grade:viewhidden'. + if (!$this->canviewhidden && $grade->is_hidden()) { + if (!empty($CFG->grade_hiddenasdate) && $grade->get_datesubmitted() + && !$item->is_category_item() && !$item->is_course_item()) { + // The problem here is that we do not have the time when grade value was modified, + // 'timemodified' is general modification date for grade_grades records. $itemcell->text = "" . userdate($grade->get_datesubmitted(), $strftimedatetimeshort) . ""; } else { @@ -974,11 +973,11 @@ class grade_report_grader extends grade_report { continue; } - // emulate grade element + // Emulate grade element. $eid = $this->gtree->get_grade_eid($grade); - $element = array('eid'=>$eid, 'object'=>$grade, 'type'=>'grade'); + $element = ['eid' => $eid, 'object' => $grade, 'type' => 'grade']; - $itemcell->attributes['class'] .= ' grade i'.$itemid; + $itemcell->attributes['class'] .= ' grade i' . $itemid; if ($item->is_category_item()) { $itemcell->attributes['class'] .= ' cat'; } @@ -987,7 +986,7 @@ class grade_report_grader extends grade_report { } if ($grade->is_overridden()) { $itemcell->attributes['class'] .= ' overridden'; - $itemcell->attributes['aria-label'] = get_string('overriddengrade', 'gradereport_grader'); + $itemcell->attributes['aria-label'] = $stroverridengrade; } if ($grade->is_excluded()) { @@ -1007,18 +1006,17 @@ class grade_report_grader extends grade_report { } $gradepass = ' gradefail '; - $gradepassicon = $OUTPUT->pix_icon('i/invalid', get_string('fail', 'grades')); + $gradepassicon = $OUTPUT->pix_icon('i/invalid', $strfail); if ($grade->is_passed($item)) { $gradepass = ' gradepass '; - $gradepassicon = $OUTPUT->pix_icon('i/valid', get_string('pass', 'grades')); + $gradepassicon = $OUTPUT->pix_icon('i/valid', $strpass); } else if (is_null($grade->is_passed($item))) { $gradepass = ''; $gradepassicon = ''; } - // if in editing mode, we need to print either a text box - // or a drop down (for scales) - // grades in item of type grade category or course are not directly editable + // If in editing mode, we need to print either a text box or a drop down (for scales) + // grades in item of type grade category or course are not directly editable. if ($item->needsupdate) { $itemcell->text .= "" . $strerror . ""; @@ -1034,32 +1032,34 @@ class grade_report_grader extends grade_report { if ($item->scaleid && !empty($scalesarray[$item->scaleid])) { $scale = $scalesarray[$item->scaleid]; - $gradeval = (int)$gradeval; // scales use only integers + $gradeval = (int)$gradeval; // Scales use only integers. $scales = explode(",", $scale->scale); - // reindex because scale is off 1 + // Reindex because scale is off 1. // MDL-12104 some previous scales might have taken up part of the array - // so this needs to be reset - $scaleopt = array(); + // so this needs to be reset. + $scaleopt = []; $i = 0; foreach ($scales as $scaleoption) { $i++; $scaleopt[$i] = $scaleoption; } - if ($quickgrading and $grade->is_editable()) { - $oldval = empty($gradeval) ? -1 : $gradeval; + if ($quickgrading && $grade->is_editable()) { if (empty($item->outcomeid)) { $nogradestr = $this->get_lang_string('nograde'); } else { $nogradestr = $this->get_lang_string('nooutcome', 'grades'); } - $attributes = array('tabindex' => $tabindices[$item->id]['grade'], 'id'=>'grade_'.$userid.'_'.$item->id); + $attributes = [ + 'tabindex' => $tabindices[$item->id]['grade'], + 'id' => 'grade_' . $userid . '_' . $item->id + ]; $gradelabel = $fullname . ' ' . $item->get_name(true); $itemcell->text .= html_writer::label( get_string('useractivitygrade', 'gradereport_grader', $gradelabel), $attributes['id'], false, - array('class' => 'accesshide')); - $itemcell->text .= html_writer::select($scaleopt, 'grade['.$userid.']['.$item->id.']', $gradeval, array(-1=>$nogradestr), $attributes); + ['class' => 'accesshide']); + $itemcell->text .= html_writer::select($scaleopt, 'grade['.$userid.']['.$item->id.']', $gradeval, [-1=>$nogradestr], $attributes); } else if (!empty($scale)) { $scales = explode(",", $scale->scale); @@ -1068,13 +1068,15 @@ class grade_report_grader extends grade_report { $itemcell->text .= $gradepassicon . "-"; } else { - $gradeval = $grade->grade_item->bounded_grade($gradeval); //just in case somebody changes scale + // Just in case somebody changes scale. + $gradeval = $grade->grade_item->bounded_grade($gradeval); $itemcell->text .= $gradepassicon . "{$scales[$gradeval - 1]}"; } } - } else if ($item->gradetype != GRADE_TYPE_TEXT) { // Value type + } else if ($item->gradetype != GRADE_TYPE_TEXT) { + // Value type. if ($quickgrading and $grade->is_editable()) { $value = format_float($gradeval, $decimalpoints); $gradelabel = $fullname . ' ' . $item->get_name(true); @@ -1089,7 +1091,8 @@ class grade_report_grader extends grade_report { } } - } else { // Not editing + } else { + // Not editing. $gradedisplaytype = $item->get_displaytype(); if ($item->scaleid && !empty($scalesarray[$item->scaleid])) {