MDL-32888 Grader report: Refined SESSION and api function use
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
+54
-63
@@ -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, '<br/ >'));
|
||||
$jsarguments['feedback'][] = array('user'=>$userid, 'item'=>$itemid, 'content'=>wordwrap(trim(format_string($grade->feedback, $grade->feedbackformat)),
|
||||
34, '<br/ >'));
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
+32
-45
@@ -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 <a> 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];
|
||||
}
|
||||
|
||||
@@ -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.
|
||||
|
||||
+26
-5
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
// This file is part of Moodle - http://moodle.org/
|
||||
//
|
||||
// Moodle is free software: you can redistribute it and/or modify
|
||||
@@ -15,18 +14,23 @@
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
/**
|
||||
* 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 <[email protected]>
|
||||
* @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 <[email protected]>
|
||||
* @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 <[email protected]>
|
||||
* @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);
|
||||
|
||||
Reference in New Issue
Block a user