3 ///////////////////////////////////////////////////////////////////////////
4 // NOTICE OF COPYRIGHT //
6 // Moodle - Modular Object-Oriented Dynamic Learning Environment //
7 // http://moodle.org //
9 // Copyright (C) 1999 onwards Martin Dougiamas http://moodle.com //
11 // This program is free software; you can redistribute it and/or modify //
12 // it under the terms of the GNU General Public License as published by //
13 // the Free Software Foundation; either version 2 of the License, or //
14 // (at your option) any later version. //
16 // This program is distributed in the hope that it will be useful, //
17 // but WITHOUT ANY WARRANTY; without even the implied warranty of //
18 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
19 // GNU General Public License for more details: //
21 // http://www.gnu.org/copyleft/gpl.html //
23 ///////////////////////////////////////////////////////////////////////////
25 require_once '../../../config.php';
26 require_once $CFG->libdir
.'/gradelib.php';
27 require_once $CFG->dirroot
.'/grade/lib.php';
28 require_once $CFG->dirroot
.'/grade/report/user/lib.php';
30 $courseid = required_param('id');
31 $userid = optional_param('userid', $USER->id
, PARAM_INT
);
33 /// basic access checks
34 if (!$course = get_record('course', 'id', $courseid)) {
35 print_error('nocourseid');
37 require_login($course);
39 if (!$user = get_complete_user_data('id', $userid)) {
40 error("Incorrect userid");
43 $context = get_context_instance(CONTEXT_COURSE
, $course->id
);
44 $usercontext = get_context_instance(CONTEXT_PERSONAL
, $user->id
);
45 require_capability('gradereport/user:view', $context);
48 if (has_capability('moodle/grade:viewall', $context)) {
49 //ok - can view all course grades
51 } else if ($user->id
== $USER->id
and has_capability('moodle/grade:view', $context) and $course->showgrades
) {
52 //ok - can view own grades
54 } else if (has_capability('moodle/grade:view', $usercontext) and $course->showgrades
) {
55 // ok - can view grades of this user- parent most probably
61 /// return tracking object
62 $gpr = new grade_plugin_return(array('type'=>'report', 'plugin'=>'user', 'courseid'=>$courseid, 'userid'=>$userid));
64 /// last selected report session tracking
65 if (!isset($USER->grade_last_report
)) {
66 $USER->grade_last_report
= array();
68 $USER->grade_last_report
[$course->id
] = 'user';
71 $strgrades = get_string('grades');
72 $reportname = get_string('modulename', 'gradereport_user');
74 $navigation = grade_build_nav(__FILE__
, $reportname, $courseid);
77 print_header_simple($strgrades.': '.$reportname, ': '.$strgrades, $navigation,
78 '', '', true, '', navmenu($course));
80 /// Print the plugin selector at the top
81 print_grade_plugin_selector($courseid, 'report', 'user');
85 //first make sure we have proper final grades - this must be done before constructing of the grade tree
86 grade_regrade_final_grades($courseid);
88 // Create a report instance
89 $report = new grade_report_user($courseid, $gpr, $context, $userid);
95 print_heading(get_string('modulename', 'gradereport_user'). ' - '.fullname($report->user
));
97 if ($report->fill_table()) {
98 echo $report->print_table(true);
102 // no access to grades!
103 echo "Can not view grades."; //TODO: localize
105 print_footer($course);