diff --git a/grade/report/grader/index.php b/grade/report/grader/index.php index 810338fc99b..9661bdd1c1a 100644 --- a/grade/report/grader/index.php +++ b/grade/report/grader/index.php @@ -22,11 +22,11 @@ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ -require_once '../../../config.php'; -require_once $CFG->libdir.'/gradelib.php'; -require_once $CFG->dirroot.'/user/renderer.php'; -require_once $CFG->dirroot.'/grade/lib.php'; -require_once $CFG->dirroot.'/grade/report/grader/lib.php'; +require_once('../../../config.php'); +require_once($CFG->libdir.'/gradelib.php'); +require_once($CFG->dirroot.'/user/renderer.php'); +require_once($CFG->dirroot.'/grade/lib.php'); +require_once($CFG->dirroot.'/grade/report/grader/lib.php'); $courseid = required_param('id', PARAM_INT); // course id $page = optional_param('page', 0, PARAM_INT); // active page @@ -37,23 +37,23 @@ $action = optional_param('action', 0, PARAM_ALPHAEXT); $move = optional_param('move', 0, PARAM_INT); $type = optional_param('type', 0, PARAM_ALPHA); $target = optional_param('target', 0, PARAM_ALPHANUM); -$toggle = optional_param('toggle', NULL, PARAM_INT); +$toggle = optional_param('toggle', null, PARAM_INT); $toggle_type = optional_param('toggle_type', 0, PARAM_ALPHANUM); -$graderreportsifirst = optional_param('sifirst', NULL, PARAM_ALPHA); -$graderreportsilast = optional_param('silast', NULL, PARAM_ALPHA); +$graderreportsifirst = optional_param('sifirst', null, PARAM_ALPHA); +$graderreportsilast = optional_param('silast', null, PARAM_ALPHA); // The report object is recreated each time, save search information to SESSION object for future use. if (isset($graderreportsifirst)) { - $SESSION->filterfirstname = $graderreportsifirst; -} + $SESSION->gradereport['filterfirstname'] = $graderreportsifirst; +} if (isset($graderreportsilast)) { - $SESSION->filtersurname = $graderreportsilast; -} + $SESSION->gradereport['filtersurname'] = $graderreportsilast; +} $PAGE->set_url(new moodle_url('/grade/report/grader/index.php', array('id'=>$courseid))); -/// basic access checks +// basic access checks if (!$course = $DB->get_record('course', array('id' => $courseid))) { print_error('nocourseid'); } @@ -63,16 +63,16 @@ $context = context_course::instance($course->id); require_capability('gradereport/grader:view', $context); require_capability('moodle/grade:viewall', $context); -/// return tracking object +// return tracking object $gpr = new grade_plugin_return(array('type'=>'report', 'plugin'=>'grader', 'courseid'=>$courseid, 'page'=>$page)); -/// last selected report session tracking +// last selected report session tracking if (!isset($USER->grade_last_report)) { $USER->grade_last_report = array(); } $USER->grade_last_report[$course->id] = 'grader'; -/// Build editing on/off buttons +// Build editing on/off buttons if (!isset($USER->gradeediting)) { $USER->gradeediting = array(); @@ -124,7 +124,7 @@ if (!empty($target) && !empty($action) && confirm_sesskey()) { $reportname = get_string('pluginname', 'gradereport_grader'); -/// Print header +// Print header print_grade_page_head($COURSE->id, 'report', 'grader', $reportname, false, $buttons); //Initialise the grader report object that produces the table @@ -139,7 +139,7 @@ if ($report->currentgroup == -2) { exit; } -/// processing posted grades & feedback here +// processing posted grades & feedback here if ($data = data_submitted() and confirm_sesskey() and has_capability('moodle/grade:edit', $context)) { $warnings = $report->process_data($data); } else { @@ -153,14 +153,14 @@ echo $report->group_selector; // User search $url = new moodle_url('/grade/report/grader/index.php', array('id' => $course->id)); -$firstinitial = isset($SESSION->filterfirstname) ? $SESSION->filterfirstname : ''; -$lastinitial = isset($SESSION->filtersurname) ? $SESSION->filtersurname : ''; +$firstinitial = isset($SESSION->gradereport['filterfirstname']) ? $SESSION->gradereport['filterfirstname'] : ''; +$lastinitial = isset($SESSION->gradereport['filtersurname']) ? $SESSION->gradereport['filtersurname'] : ''; $totalusers = $report->get_numusers(true, false); $renderer = $PAGE->get_renderer('core_user'); echo $renderer->user_search($url, $firstinitial, $lastinitial, $numusers, $totalusers, $report->currentgroupname); //show warnings if any -foreach($warnings as $warning) { +foreach ($warnings as $warning) { echo $OUTPUT->notification($warning); } diff --git a/grade/report/grader/lib.php b/grade/report/grader/lib.php index ed967dc277e..669ca44e398 100644 --- a/grade/report/grader/lib.php +++ b/grade/report/grader/lib.php @@ -28,7 +28,8 @@ require_once($CFG->libdir.'/tablelib.php'); /** * Class providing an API for the grader report building and displaying. * @uses grade_report - * @package gradereport_grader + * @copyright 2007 Nicolas Connault + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class grade_report_grader extends grade_report { /** @@ -43,7 +44,7 @@ class grade_report_grader extends grade_report { */ public $gradeserror = array(); -//// SQL-RELATED + // SQL-RELATED /** * The id of the grade_item by which this report will be sorted. @@ -83,11 +84,10 @@ class grade_report_grader extends grade_report { /** * Capability check caching - * */ + * @var boolean $canviewhidden + */ public $canviewhidden; - var $preferencespage=false; - /** * Length at which feedback will be truncated (to the nearest word) and an ellipsis be added. * TODO replace this by a report preference @@ -231,7 +231,7 @@ class grade_report_grader extends grade_report { if ($this->get_pref('quickgrading')) { $oldvalue->feedback = preg_replace("/\r\n|\r|\n/", "", $oldvalue->feedback); } - if (($oldvalue->feedback === $postedvalue) or ($oldvalue->feedback === NULL and empty($postedvalue))) { + if (($oldvalue->feedback === $postedvalue) or ($oldvalue->feedback === null and empty($postedvalue))) { continue; } } @@ -256,9 +256,7 @@ class grade_report_grader extends grade_report { $errorstr = ''; // Warn if the grade is out of bounds. - if (is_null($finalgrade)) { - // ok - } else { + if (!is_null($finalgrade)) { $bounded = $gradeitem->bounded_grade($finalgrade); if ($bounded > $finalgrade) { $errorstr = 'lessthanmin'; @@ -279,7 +277,7 @@ class grade_report_grader extends grade_report { $finalgrade = false; $trimmed = trim($postedvalue); if (empty($trimmed)) { - $feedback = NULL; + $feedback = null; } else { $feedback = $postedvalue; } @@ -290,7 +288,7 @@ class grade_report_grader extends grade_report { // note: we can not use $this->currentgroup because it would fail badly // when having two browser windows each with different group $sharinggroup = false; - foreach($mygroups as $groupid) { + foreach ($mygroups as $groupid) { if (groups_is_member($groupid, $userid)) { $sharinggroup = true; break; @@ -377,7 +375,7 @@ class grade_report_grader extends grade_report { if (isset($SESSION->gradeuserreport->sortitemid)) { $this->sortitemid = $SESSION->gradeuserreport->sortitemid; - }else{ + } else { $this->sortitemid = 'lastname'; } @@ -414,8 +412,8 @@ class grade_report_grader extends grade_report { // If the user has clicked one of the sort asc/desc arrows. if (is_numeric($this->sortitemid)) { - $params = array_merge(array('gitemid' => $this->sortitemid), $gradebookrolesparams, $this->userwheresql_params, - $this->groupwheresql_params, $enrolledparams, $relatedctxparams); + $params = array_merge(array('gitemid' => $this->sortitemid), $gradebookrolesparams, $this->userwheresql_params, + $this->groupwheresql_params, $enrolledparams, $relatedctxparams); $sortjoin = "LEFT JOIN {grade_grades} g ON g.userid = u.id AND g.itemid = $this->sortitemid"; $sort = "g.finalgrade $this->sortorder"; @@ -530,7 +528,7 @@ class grade_report_grader extends grade_report { // prefil grades that do not exist yet foreach ($userids as $userid) { - foreach ($this->gtree->get_items() as $itemid=>$unused) { + foreach ($this->gtree->get_items() as $itemid => $unused) { if (!isset($this->grades[$userid][$itemid])) { $this->grades[$userid][$itemid] = new grade_grade(); $this->grades[$userid][$itemid]->itemid = $itemid; @@ -542,6 +540,7 @@ class grade_report_grader extends grade_report { } /** + * Gets html toggle * @deprecated since Moodle 2.4 as it appears not to be used any more. */ public function get_toggles_html() { @@ -549,7 +548,9 @@ class grade_report_grader extends grade_report { } /** + * Prints html toggle * @deprecated since 2.4 as it appears not to be used any more. + * @param unknown $type */ public function print_toggle($type) { throw new coding_exception('print_toggle() can not be used any more'); @@ -650,7 +651,8 @@ class grade_report_grader extends grade_report { if (empty($suspendedstring)) { $suspendedstring = get_string('userenrolmentsuspended', 'grades'); } - $usercell->text .= html_writer::empty_tag('img', array('src'=>$OUTPUT->pix_url('i/enrolmentsuspended'), 'title'=>$suspendedstring, 'alt'=>$suspendedstring, 'class'=>'usersuspendedicon')); + $usercell->text .= html_writer::empty_tag('img', array('src'=>$OUTPUT->pix_url('i/enrolmentsuspended'), 'title'=>$suspendedstring, + 'alt'=>$suspendedstring, 'class'=>'usersuspendedicon')); } $userrow->cells[] = $usercell; @@ -715,12 +717,7 @@ class grade_report_grader extends grade_report { ); $jsscales = array(); - foreach ($this->gtree->get_levels() as $key=>$row) { - if ($key == 0) { - // do not display course grade category - // continue; - } - + foreach ($this->gtree->get_levels() as $key => $row) { $headingrow = new html_table_row(); $headingrow->attributes['class'] = 'heading_name_row'; @@ -747,7 +744,7 @@ class grade_report_grader extends grade_report { $catlevel = ''; } -// Element is a filler + // Element is a filler if ($type == 'filler' or $type == 'fillerfirst' or $type == 'fillerlast') { $fillercell = new html_table_cell(); $fillercell->attributes['class'] = $type . ' ' . $catlevel; @@ -756,9 +753,8 @@ class grade_report_grader extends grade_report { $fillercell->header = true; $fillercell->scope = 'col'; $headingrow->cells[] = $fillercell; - } -// Element is a category - else if ($type == 'category') { + } else if ($type == 'category') { + // Element is a category $categorycell = new html_table_cell(); $categorycell->attributes['class'] = 'category ' . $catlevel; $categorycell->colspan = $colspan; @@ -773,12 +769,8 @@ class grade_report_grader extends grade_report { } $headingrow->cells[] = $categorycell; - } -// Element is a grade_item - else { - //$itemmodule = $element['object']->itemmodule; - //$iteminstance = $element['object']->iteminstance; - + } else { + // Element is a grade_item if ($element['object']->id == $this->sortitemid) { if ($this->sortorder == 'ASC') { $arrow = $this->get_sort_arrow('up', $sortlink); @@ -815,7 +807,7 @@ class grade_report_grader extends grade_report { $scaleslist = array(); $tabindices = array(); - foreach ($this->gtree->get_items() as $itemid=>$item) { + foreach ($this->gtree->get_items() as $itemid => $item) { $scale = null; if (!empty($item->scaleid)) { $scaleslist[] = $item->scaleid; @@ -848,14 +840,13 @@ class grade_report_grader extends grade_report { unset($hidingaffected); } - $itemrow = new html_table_row(); $itemrow->id = 'user_'.$userid; $itemrow->attributes['class'] = $rowclasses[$this->rowcount % 2]; $jsarguments['users'][$userid] = fullname($user); - foreach ($this->gtree->items as $itemid=>$unused) { + foreach ($this->gtree->items as $itemid => $unused) { $item =& $this->gtree->items[$itemid]; $grade = $this->grades[$userid][$item->id]; @@ -874,13 +865,13 @@ class grade_report_grader extends grade_report { $gradeval = $grade->finalgrade; } if (!empty($grade->finalgrade)) { - $gradevalforJS = null; + $gradevalforjs = null; if ($item->scaleid && !empty($scalesarray[$item->scaleid])) { - $gradevalforJS = (int)$gradeval; + $gradevalforjs = (int)$gradeval; } else { - $gradevalforJS = format_float($gradeval, $decimalpoints); + $gradevalforjs = format_float($gradeval, $decimalpoints); } - $jsarguments['grades'][] = array('user'=>$userid, 'item'=>$itemid, 'grade'=>$gradevalforJS); + $jsarguments['grades'][] = array('user'=>$userid, 'item'=>$itemid, 'grade'=>$gradevalforjs); } // MDL-11274 @@ -888,7 +879,7 @@ class grade_report_grader extends grade_report { 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 - $itemcell->text = html_writer::tag('span', userdate($grade->get_datesubmitted(),get_string('strftimedatetimeshort')), array('class'=>'datesubmitted')); + $itemcell->text = html_writer::tag('span', userdate($grade->get_datesubmitted(), get_string('strftimedatetimeshort')), array('class'=>'datesubmitted')); } else { $itemcell->text = '-'; } @@ -911,13 +902,10 @@ class grade_report_grader extends grade_report { $itemcell->attributes['class'] .= ' overridden'; } - if ($grade->is_excluded()) { - // $itemcell->attributes['class'] .= ' excluded'; - } - if (!empty($grade->feedback)) { //should we be truncating feedback? ie $short_feedback = shorten_text($feedback, $this->feedback_trunc_length); - $jsarguments['feedback'][] = array('user'=>$userid, 'item'=>$itemid, 'content'=>wordwrap(trim(format_string($grade->feedback, $grade->feedbackformat)), 34, '
')); + $jsarguments['feedback'][] = array('user'=>$userid, 'item'=>$itemid, 'content'=>wordwrap(trim(format_string($grade->feedback, $grade->feedbackformat)), + 34, '
')); } if ($grade->is_excluded()) { @@ -937,7 +925,7 @@ class grade_report_grader extends grade_report { $gradepass = ' gradefail '; if ($grade->is_passed($item)) { $gradepass = ' gradepass '; - } elseif (is_null($grade->is_passed($item))) { + } else if (is_null($grade->is_passed($item))) { $gradepass = ''; } @@ -974,7 +962,7 @@ class grade_report_grader extends grade_report { $attributes = array('tabindex' => $tabindices[$item->id]['grade'], 'id'=>'grade_'.$userid.'_'.$item->id); $itemcell->text .= html_writer::label(get_string('typescale', 'grades'), $attributes['id'], false, array('class' => 'accesshide')); $itemcell->text .= html_writer::select($scaleopt, 'grade['.$userid.']['.$item->id.']', $gradeval, array(-1=>$nogradestr), $attributes); - } elseif(!empty($scale)) { + } else if (!empty($scale)) { $scales = explode(",", $scale->scale); // invalid grade if gradeval < 1 @@ -984,8 +972,6 @@ class grade_report_grader extends grade_report { $gradeval = $grade->grade_item->bounded_grade($gradeval); //just in case somebody changes scale $itemcell->text .= html_writer::tag('span', $scales[$gradeval-1], array('class'=>"gradevalue$hidden$gradepass")); } - } else { - // no such scale, throw error? } } else if ($item->gradetype != GRADE_TYPE_TEXT) { // Value type @@ -1002,7 +988,6 @@ class grade_report_grader extends grade_report { } } - // If quickfeedback is on, print an input element if ($this->get_pref('showquickfeedback') and $grade->is_editable()) { $feedbacklabel = fullname($user) . ' ' . $item->itemname; @@ -1028,7 +1013,8 @@ class grade_report_grader extends grade_report { if ($item->needsupdate) { $itemcell->text .= html_writer::tag('span', get_string('error'), array('class'=>"gradingerror$hidden$gradepass")); } else { - $itemcell->text .= html_writer::tag('span', grade_format_gradevalue($gradeval, $item, true, $gradedisplaytype, null), array('class'=>"gradevalue$hidden$gradepass")); + $itemcell->text .= html_writer::tag('span', grade_format_gradevalue($gradeval, $item, true, $gradedisplaytype, null), + array('class'=>"gradevalue$hidden$gradepass")); if ($this->get_pref('showanalysisicon')) { $itemcell->text .= $this->gtree->get_grade_analysis_icon($grade); } @@ -1048,7 +1034,7 @@ class grade_report_grader extends grade_report { $jsarguments['cfg']['ajaxenabled'] = true; $jsarguments['cfg']['scales'] = array(); foreach ($jsscales as $scale) { - $jsarguments['cfg']['scales'][$scale->id] = explode(',',$scale->scale); + $jsarguments['cfg']['scales'][$scale->id] = explode(',', $scale->scale); } $jsarguments['cfg']['feedbacktrunclength'] = $this->feedback_trunc_length; @@ -1065,8 +1051,8 @@ class grade_report_grader extends grade_report { 'requires' => array('base', 'dom', 'event', 'event-mouseenter', 'event-key', 'io-queue', 'json-parse', 'overlay') ); $PAGE->requires->js_init_call('M.gradereport_grader.init_report', $jsarguments, false, $module); - $PAGE->requires->strings_for_js(array('addfeedback','feedback', 'grade'), 'grades'); - $PAGE->requires->strings_for_js(array('ajaxchoosescale','ajaxclicktoclose','ajaxerror','ajaxfailedupdate', 'ajaxfieldchanged'), 'gradereport_grader'); + $PAGE->requires->strings_for_js(array('addfeedback', 'feedback', 'grade'), 'grades'); + $PAGE->requires->strings_for_js(array('ajaxchoosescale', 'ajaxclicktoclose', 'ajaxerror', 'ajaxfailedupdate', 'ajaxfieldchanged'), 'gradereport_grader'); $rows = $this->get_right_range_row($rows); if ($displayaverages) { @@ -1093,7 +1079,6 @@ class grade_report_grader extends grade_report { $html = ''; - if ($fixedstudents) { $fixedcolumntable = new html_table(); $fixedcolumntable->id = 'fixed_column'; @@ -1136,7 +1121,7 @@ class grade_report_grader extends grade_report { $controlscell = new html_table_cell(); $controlscell->attributes['class'] = 'header controls'; $controlscell->colspan = $colspan; - $controlscell->text = $this->get_lang_string('controls','grades'); + $controlscell->text = $this->get_lang_string('controls', 'grades'); $controlsrow->cells[] = $controlscell; $rows[] = $controlsrow; @@ -1161,7 +1146,7 @@ class grade_report_grader extends grade_report { $rangecell->colspan = $colspan; $rangecell->header = true; $rangecell->scope = 'row'; - $rangecell->text = $this->get_lang_string('range','grades'); + $rangecell->text = $this->get_lang_string('range', 'grades'); $rangerow->cells[] = $rangecell; $rows[] = $rangerow; } @@ -1231,7 +1216,7 @@ class grade_report_grader extends grade_report { $iconsrow = new html_table_row(); $iconsrow->attributes['class'] = 'controls'; - foreach ($this->gtree->items as $itemid=>$unused) { + foreach ($this->gtree->items as $itemid => $unused) { // emulate grade element $item = $this->gtree->get_item($itemid); @@ -1261,7 +1246,7 @@ class grade_report_grader extends grade_report { $rangerow = new html_table_row(); $rangerow->attributes['class'] = 'heading range'; - foreach ($this->gtree->items as $itemid=>$unused) { + foreach ($this->gtree->items as $itemid => $unused) { $item =& $this->gtree->items[$itemid]; $itemcell = new html_table_cell(); $itemcell->attributes['class'] .= ' range i'. $itemid; @@ -1377,7 +1362,7 @@ class grade_report_grader extends grade_report { $avgrow = new html_table_row(); $avgrow->attributes['class'] = 'avg'; - foreach ($this->gtree->items as $itemid=>$unused) { + foreach ($this->gtree->items as $itemid => $unused) { $item =& $this->gtree->items[$itemid]; if ($item->needsupdate) { @@ -1456,7 +1441,7 @@ class grade_report_grader extends grade_report { * figures out the state of the object and builds then returns a div * with the icons needed for the grader report. * - * @param array $object + * @param array $element * @return string HTML */ protected function get_icons($element) { @@ -1483,7 +1468,7 @@ class grade_report_grader extends grade_report { } if ($this->get_pref('showeyecons')) { - $showhideicon = $this->gtree->get_hiding_icon($element, $this->gpr); + $showhideicon = $this->gtree->get_hiding_icon($element, $this->gpr); } if ($this->get_pref('showlocks')) { @@ -1502,7 +1487,7 @@ class grade_report_grader extends grade_report { /** * Given a category element returns collapsing +/- icon if available - * @param object $object + * @param object $element * @return string HTML */ protected function get_collapsing_icon($element) { @@ -1534,6 +1519,12 @@ class grade_report_grader extends grade_report { return $icon; } + /** + * Processes a single action against a category, grade_item or grade. + * @param string $target eid ({type}{id}, e.g. c4 for category4) + * @param string $action Which action to take (edit, delete etc...) + * @return + */ public function process_action($target, $action) { return self::do_process_action($target, $action); } diff --git a/grade/report/lib.php b/grade/report/lib.php index 95e456ec00e..3e757cd1084 100644 --- a/grade/report/lib.php +++ b/grade/report/lib.php @@ -26,7 +26,8 @@ require_once($CFG->libdir.'/gradelib.php'); /** * An abstract class containing variables and methods used by all or most reports. - * @package core_grades + * @copyright 2007 Moodle Pty Ltd (http://moodle.com) + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ abstract class grade_report { /** @@ -94,7 +95,7 @@ abstract class grade_report { */ public $lang_strings = array(); -//// GROUP VARIABLES (including SQL) + // GROUP VARIABLES (including SQL) /** * The current group being displayed. @@ -112,7 +113,7 @@ abstract class grade_report { * Current course group mode * @var int $groupmode */ - var $groupmode; + public $groupmode; /** * A HTML select element used to select the current group. @@ -166,7 +167,6 @@ abstract class grade_report { print_error('norolesdefined', 'grades'); } - $this->courseid = $courseid; if ($this->courseid == $COURSE->id) { $this->course = $COURSE; @@ -192,7 +192,7 @@ abstract class grade_report { * the value of that preference. If the preference has already been fetched before, * the saved value is returned. If the preference is not set at the User level, the $CFG equivalent * is given (site default). - * @static (Can be called statically, but then doesn't benefit from caching) + * Can be called statically, but then doesn't benefit from caching * @param string $pref The name of the preference (do not include the grade_report_ prefix) * @param int $objectid An optional itemid or categoryid to check for a more fine-grained preference * @return mixed The value of the preference @@ -206,10 +206,10 @@ abstract class grade_report { if (!isset($this) OR get_class($this) != 'grade_report') { if (!empty($objectid)) { - $retval = get_user_preferences($fullprefname . $objectid, grade_report::get_pref($pref)); - } elseif (isset($CFG->$fullprefname)) { + $retval = get_user_preferences($fullprefname . $objectid, self::get_pref($pref)); + } else if (isset($CFG->$fullprefname)) { $retval = get_user_preferences($fullprefname, $CFG->$fullprefname); - } elseif (isset($CFG->$shortprefname)) { + } else if (isset($CFG->$shortprefname)) { $retval = get_user_preferences($fullprefname, $CFG->$shortprefname); } else { $retval = null; @@ -239,8 +239,7 @@ abstract class grade_report { /** * Uses set_user_preferences() to update the value of a user preference. If 'default' is given as the value, * the preference will be removed in favour of a higher-level preference. - * @static - * @param string $pref_name The name of the preference. + * @param string $pref The name of the preference. * @param mixed $pref_value The value of the preference. * @param int $itemid An optional itemid to which the preference will be assigned * @return bool Success or failure. @@ -260,7 +259,7 @@ abstract class grade_report { * @param array $data * @return mixed True or array of errors */ - abstract function process_data($data); + abstract public function process_data($data); /** * Processes a single action against a category, grade_item or grade. @@ -268,7 +267,7 @@ abstract class grade_report { * @param string $action Which action to take (edit, delete etc...) * @return */ - abstract function process_action($target, $action); + abstract public function process_action($target, $action); /** * First checks the cached language strings, then returns match if found, or uses get_string() @@ -333,23 +332,11 @@ abstract class grade_report { $selectedusers = $DB->get_records_sql($sql, $params); $count = 0; + // Check if user's enrolment is active and should be displayed. if (!empty($selectedusers)) { - list($usql, $uparams) = $DB->get_in_or_equal(array_keys($selectedusers), SQL_PARAMS_NAMED, 'usid0'); - $this->userselect = "AND g.userid $usql"; - $this->userselect_params = $uparams; - - // Check if user's enrolment is active. - $sql = "SELECT ue.userid - FROM {user_enrolments} ue - JOIN {enrol} e ON e.id = ue.enrolid - WHERE ue.userid $usql - AND ue.status = :uestatus - AND e.status = :estatus - AND e.courseid = :courseid - GROUP BY ue.userid"; $coursecontext = $this->context->get_course_context(true); - $params = array_merge($uparams, array('estatus' => ENROL_INSTANCE_ENABLED, 'uestatus' => ENROL_USER_ACTIVE, 'courseid' => $coursecontext->instanceid)); - $useractiveenrolments = $DB->get_records_sql($sql, $params); + + $useractiveenrolments = get_enrolled_users($coursecontext, '', 0, 'u.*', null, 0, 0, true); $defaultgradeshowactiveenrol = !empty($CFG->grade_report_showonlyactiveenrol); $showonlyactiveenrol = get_user_preferences('grade_report_showonlyactiveenrol', $defaultgradeshowactiveenrol); @@ -360,7 +347,7 @@ abstract class grade_report { $count++; } } - } + } return $count; } @@ -368,7 +355,7 @@ abstract class grade_report { * Sets up this object's group variables, mainly to restrict the selection of users to display. */ protected function setup_groups() { - /// find out current groups mode + // find out current groups mode if ($this->groupmode = groups_get_course_groupmode($this->course)) { $this->currentgroup = groups_get_course_group($this->course, true); $this->group_selector = groups_print_course_menu($this->course, $this->pbarurl, true); @@ -379,7 +366,7 @@ abstract class grade_report { if ($this->currentgroup) { $group = groups_get_group($this->currentgroup); - $this->currentgroupname = $group->name; + $this->currentgroupname = $group->name; $this->groupsql = " JOIN {groups_members} gm ON gm.userid = u.id "; $this->groupwheresql = " AND gm.groupid = :gr_grpid "; $this->groupwheresql_params = array('gr_grpid'=>$this->currentgroup); @@ -387,26 +374,28 @@ abstract class grade_report { } } + /** + * Sets up this report's user criteria to restrict the selection of users to display. + */ public function setup_users() { global $SESSION, $DB; - + $this->userwheresql = ""; $this->userwheresql_params = array(); - if (isset($SESSION->filterfirstname) && !empty($SESSION->filterfirstname)) { + if (isset($SESSION->gradereport['filterfirstname']) && !empty($SESSION->gradereport['filterfirstname'])) { $this->userwheresql .= ' AND '.$DB->sql_like('u.firstname', ':firstname', false, false); - $this->userwheresql_params['firstname'] = $SESSION->filterfirstname.'%'; + $this->userwheresql_params['firstname'] = $SESSION->gradereport['filterfirstname'].'%'; } - if (isset($SESSION->filtersurname) && !empty($SESSION->filtersurname)) { + if (isset($SESSION->gradereport['filtersurname']) && !empty($SESSION->gradereport['filtersurname'])) { $this->userwheresql .= ' AND '.$DB->sql_like('u.lastname', ':lastname', false, false); - $this->userwheresql_params['lastname'] = $SESSION->filtersurname.'%'; + $this->userwheresql_params['lastname'] = $SESSION->gradereport['filtersurname'].'%'; } } /** * Returns an arrow icon inside an tag, for the purpose of sorting a column. * @param string $direction - * @param moodle_url $sort_link - * @param string HTML + * @param moodle_url $sortlink */ protected function get_sort_arrow($direction='move', $sortlink=null) { global $OUTPUT; @@ -451,7 +440,7 @@ abstract class grade_report { $previous_courseid = $courseid; } - if( !$hiding_affected ) { + if (!$hiding_affected) { $items = grade_item::fetch_all(array('courseid'=>$courseid)); $grades = array(); $sql = "SELECT g.* @@ -464,7 +453,7 @@ abstract class grade_report { } unset($gradesrecords); } - foreach ($items as $itemid=>$unused) { + foreach ($items as $itemid => $unused) { if (!isset($grades[$itemid])) { $grade_grade = new grade_grade(); $grade_grade->userid = $this->user->id; @@ -478,21 +467,19 @@ abstract class grade_report { //if the item definitely depends on a hidden item if (array_key_exists($course_item->id, $hiding_affected['altered'])) { - if( !$this->showtotalsifcontainhidden[$courseid] ) { + if (!$this->showtotalsifcontainhidden[$courseid]) { //hide the grade $finalgrade = null; - } - else { + } else { //use reprocessed marks that exclude hidden items $finalgrade = $hiding_affected['altered'][$course_item->id]; } } else if (!empty($hiding_affected['unknown'][$course_item->id])) { //not sure whether or not this item depends on a hidden item - if( !$this->showtotalsifcontainhidden[$courseid] ) { + if (!$this->showtotalsifcontainhidden[$courseid]) { //hide the grade $finalgrade = null; - } - else { + } else { //use reprocessed marks that exclude hidden items $finalgrade = $hiding_affected['unknown'][$course_item->id]; } diff --git a/grade/report/upgrade.txt b/grade/report/upgrade.txt index 9ff8f36a703..ae7b48dfc4f 100644 --- a/grade/report/upgrade.txt +++ b/grade/report/upgrade.txt @@ -4,6 +4,18 @@ information provided here is intended especially for developers. === 2.6 === * grade_report_grader::get_toggles_html() and grade_report_grader::print_toggle() can not be used any more +* class grade_report get_numusers($groups = true, $users = false) + An extra parameter has been added to restrict count to those users being +displayed +* class grade_report_grader get_left_rows($displayaverages) + A parameter has been added to indicate whether averages are applicable and +should be displayed on the report +* class grade_report_grader get_right_rows($displayaverages) + A parameter has been added to indicate whether averages are applicable and +should be displayed on the report +* class grade_report_grader get_grade_table($displayaverages = false) + A parameter has been added to indicate whether averages are applicable and +should be displayed on the report === 2.3.5, 2.4.2 === * class_grade_report::showtotalsifcontainhidden has been switched from a single integer value to an array. diff --git a/user/renderer.php b/user/renderer.php index be0f339e18e..ed45f0f7acc 100644 --- a/user/renderer.php +++ b/user/renderer.php @@ -1,5 +1,4 @@ . - /** - * Print private files tree + * Provides user rendering functionality such as printing private files tree and + * displaying a search utility * * @package core_user * @copyright 2010 Dongsheng Cai * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ - defined('MOODLE_INTERNAL') || die(); +/** + * Provides user rendering functionality such as printing private files tree and + * displaying a search utility + * @copyright 2010 Dongsheng Cai + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ class core_user_renderer extends plugin_renderer_base { /** @@ -37,6 +41,10 @@ class core_user_renderer extends plugin_renderer_base { return $this->render(new user_files_tree); } + /** + * Render user files tree + * @param user_files_tree $tree + */ public function render_user_files_tree(user_files_tree $tree) { if (empty($tree->dir['subdirs']) && empty($tree->dir['files'])) { $html = $this->output->box(get_string('nofilesavailable', 'repository')); @@ -53,6 +61,8 @@ class core_user_renderer extends plugin_renderer_base { /** * Internal function - creates htmls structure suitable for YUI tree. + * @param user_files_tree $tree + * @param array $dir */ protected function htmllize_tree($tree, $dir) { global $CFG; @@ -124,7 +134,7 @@ class core_user_renderer extends plugin_renderer_base { } $content .= html_writer::end_tag('div'); - // Bar of last initials + // Bar of last initials. $content .= html_writer::start_tag('div', array('class' => 'initialbar lastinitial')); $content .= html_writer::label(get_string('lastname').' : ', null); @@ -152,9 +162,20 @@ class core_user_renderer extends plugin_renderer_base { } +/** + * User files tree + * @copyright 2010 Dongsheng Cai + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ class user_files_tree implements renderable { + public $context; + public $dir; + + /** + * Create user files tree object + */ public function __construct() { global $USER; $this->context = context_user::instance($USER->id);