|
Moodle
2.2.1
http://www.collinsharper.com
|
00001 <?php 00002 // This file is part of Moodle - http://moodle.org/ 00003 // 00004 // Moodle is free software: you can redistribute it and/or modify 00005 // it under the terms of the GNU General Public License as published by 00006 // the Free Software Foundation, either version 3 of the License, or 00007 // (at your option) any later version. 00008 // 00009 // Moodle is distributed in the hope that it will be useful, 00010 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00012 // GNU General Public License for more details. 00013 // 00014 // You should have received a copy of the GNU General Public License 00015 // along with Moodle. If not, see <http://www.gnu.org/licenses/>. 00016 00025 require_once("../config.php"); 00026 require_once("lib.php"); 00027 00028 $id = required_param('id',PARAM_INT); // course id 00029 $user = required_param('user',PARAM_INT); // user id 00030 $mode = optional_param('mode', "todaylogs", PARAM_ALPHA); 00031 00032 $url = new moodle_url('/course/user.php', array('id'=>$id,'user'=>$user, 'mode'=>$mode)); 00033 00034 $course = $DB->get_record('course', array('id'=>$id), '*', MUST_EXIST); 00035 $user = $DB->get_record("user", array("id"=>$user, 'deleted'=>0), '*', MUST_EXIST); 00036 00037 if ($mode === 'outline' or $mode === 'complete') { 00038 $url = new moodle_url('/report/outline/user.php', array('id'=>$user->id, 'course'=>$course->id, 'mode'=>$mode)); 00039 redirect($url); 00040 } 00041 if ($mode === 'todaylogs' or $mode === 'alllogs') { 00042 $logmode = ($mode === 'todaylogs') ? 'today' : 'all'; 00043 $url = new moodle_url('/report/log/user.php', array('id'=>$user->id, 'course'=>$course->id, 'mode'=>$logmode)); 00044 redirect($url); 00045 } 00046 if ($mode === 'stats') { 00047 $url = new moodle_url('/report/stats/user.php', array('id'=>$user->id, 'course'=>$course->id)); 00048 redirect($url); 00049 } 00050 if ($mode === 'coursecompletions' or $mode === 'coursecompletion') { 00051 $url = new moodle_url('/report/completion/user.php', array('id'=>$user->id, 'course'=>$course->id)); 00052 redirect($url); 00053 } 00054 00055 $coursecontext = get_context_instance(CONTEXT_COURSE, $course->id); 00056 $personalcontext = get_context_instance(CONTEXT_USER, $user->id); 00057 00058 $PAGE->set_url('/course/user.php', array('id'=>$id, 'user'=>$user->id, 'mode'=>$mode)); 00059 00060 require_login(); 00061 $PAGE->set_pagelayout('admin'); 00062 if (has_capability('moodle/user:viewuseractivitiesreport', $personalcontext) and !is_enrolled($coursecontext)) { 00063 // do not require parents to be enrolled in courses ;-) 00064 $PAGE->set_course($course); 00065 } else { 00066 require_login($course); 00067 } 00068 00069 if ($user->deleted) { 00070 echo $OUTPUT->header(); 00071 echo $OUTPUT->heading(get_string('userdeleted')); 00072 echo $OUTPUT->footer(); 00073 die; 00074 } 00075 00076 // prepare list of allowed modes 00077 $myreports = ($course->showreports and $USER->id == $user->id); 00078 $anyreport = has_capability('moodle/user:viewuseractivitiesreport', $personalcontext); 00079 00080 $modes = array(); 00081 00082 if (has_capability('moodle/grade:viewall', $coursecontext)) { 00083 //ok - can view all course grades 00084 $modes[] = 'grade'; 00085 00086 } else if ($course->showgrades and $user->id == $USER->id and has_capability('moodle/grade:view', $coursecontext)) { 00087 //ok - can view own grades 00088 $modes[] = 'grade'; 00089 00090 } else if ($course->showgrades and has_capability('moodle/grade:viewall', $personalcontext)) { 00091 // ok - can view grades of this user - parent most probably 00092 $modes[] = 'grade'; 00093 00094 } else if ($course->showgrades and $anyreport) { 00095 // ok - can view grades of this user - parent most probably 00096 $modes[] = 'grade'; 00097 } 00098 00099 if (empty($modes)) { 00100 require_capability('moodle/user:viewuseractivitiesreport', $personalcontext); 00101 } 00102 00103 if (!in_array($mode, $modes)) { 00104 // forbidden or non-existent mode 00105 $mode = reset($modes); 00106 } 00107 00108 add_to_log($course->id, "course", "user report", "user.php?id=$course->id&user=$user->id&mode=$mode", "$user->id"); 00109 00110 $stractivityreport = get_string("activityreport"); 00111 00112 $PAGE->navigation->extend_for_user($user); 00113 $PAGE->navigation->set_userid_for_parent_checks($user->id); // see MDL-25805 for reasons and for full commit reference for reversal when fixed. 00114 $PAGE->set_title("$course->shortname: $stractivityreport ($mode)"); 00115 $PAGE->set_heading($course->fullname); 00116 echo $OUTPUT->header(); 00117 00118 switch ($mode) { 00119 case "grade": 00120 if (empty($CFG->grade_profilereport) or !file_exists($CFG->dirroot.'/grade/report/'.$CFG->grade_profilereport.'/lib.php')) { 00121 $CFG->grade_profilereport = 'user'; 00122 } 00123 require_once $CFG->libdir.'/gradelib.php'; 00124 require_once $CFG->dirroot.'/grade/lib.php'; 00125 require_once $CFG->dirroot.'/grade/report/'.$CFG->grade_profilereport.'/lib.php'; 00126 00127 $functionname = 'grade_report_'.$CFG->grade_profilereport.'_profilereport'; 00128 if (function_exists($functionname)) { 00129 $functionname($course, $user); 00130 } 00131 break; 00132 00133 break; 00134 default: 00135 // can not be reached ;-) 00136 } 00137 00138 00139 echo $OUTPUT->footer();