Teacher can now view student attempts
[moodle.git] / mod / quiz / report.php
1 <?PHP  // $Id$
3 // This page prints a particular instance of quiz
5     require("../../config.php");
6     require("lib.php");
8     optional_variable($id);    // Course Module ID, or
9     optional_variable($q);     // quiz ID
11     optional_variable($attempt);     // A particular attempt ID
13     if ($id) {
14         if (! $cm = get_record("course_modules", "id", $id)) {
15             error("Course Module ID was incorrect");
16         }
17     
18         if (! $course = get_record("course", "id", $cm->course)) {
19             error("Course is misconfigured");
20         }
21     
22         if (! $quiz = get_record("quiz", "id", $cm->instance)) {
23             error("Course module is incorrect");
24         }
26     } else {
27         if (! $quiz = get_record("quiz", "id", $q)) {
28             error("Course module is incorrect");
29         }
30         if (! $course = get_record("course", "id", $quiz->course)) {
31             error("Course is misconfigured");
32         }
33         if (! $cm = get_coursemodule_from_instance("quiz", $quiz->id, $course->id)) {
34             error("Course Module ID was incorrect");
35         }
36     }
38     require_login($course->id);
40     if (!isteacher($course->id)) {
41         error("Only teachers can see this page");
42     }
44     add_to_log($course->id, "quiz", "report", "report.php?id=$cm->id", "$quiz->id");
46 // Print the page header
48     if ($course->category) {
49         $navigation = "<A HREF=\"../../course/view.php?id=$course->id\">$course->shortname</A> ->";
50     }
52     $strquizzes = get_string("modulenameplural", "quiz");
53     $strquiz  = get_string("modulename", "quiz");
54     $strreport  = get_string("report", "quiz");
55     $strname  = get_string("name");
56     $strattempts  = get_string("attempts", "quiz");
57     $strscore  = get_string("score", "quiz");
58     $strgrade  = get_string("grade");
59     $strtimetaken     = get_string("timetaken", "quiz");
60     $strtimecompleted = get_string("timecompleted", "quiz");
62     print_header("$course->shortname: $quiz->name", "$course->fullname",
63                  "$navigation <A HREF=index.php?id=$course->id>$strquizzes</A> 
64                   -> <A HREF=\"view.php?id=$cm->id\">$quiz->name</A> -> $strreport", 
65                  "", "", true);
67     print_heading($quiz->name);
69     if ($attempt) {  // Show a particular attempt
71         if (! $attempt = get_record("quiz_attempts", "id", $attempt)) {
72             error("No such attempt ID exists");
73         }
75         if (! $questions = quiz_get_attempt_responses($attempt)) {
76             error("Could not reconstruct quiz results for attempt $attempt->id!");
77         }
79         if (!$result = quiz_grade_attempt_results($quiz, $questions)) {
80             error("Could not re-grade this quiz attempt!");
81         }
83         $table->align  = array("RIGHT", "LEFT");
84         $table->data[] = array("$strtimetaken:", format_time($attempt->timefinish - $attempt->timestart));
85         $table->data[] = array("$strtimecompleted:", userdate($attempt->timefinish));
86         $table->data[] = array("$strscore:", "$result->sumgrades/$quiz->sumgrades ($result->percentage %)");
87         $table->data[] = array("$strgrade:", "$result->grade/$quiz->grade");
88         print_table($table);
90         print_continue("report.php?q=$quiz->id");
92         $quiz->feedback = true;
93         $quiz->correctanswers = true;
94         quiz_print_quiz_questions($quiz, $result);
96         print_continue("report.php?q=$quiz->id");
97         print_footer($course);
98         exit;
99     }
101     if (!$grades = quiz_get_grade_records($quiz)) {
102         print_footer($course);
103         exit;
104     }
106     $table->head = array("", $strname, $strattempts, $strgrade);
107     $table->align = array("CENTER", "LEFT", "LEFT", "RIGHT");
108     $table->width = array(10, "*", "*", 20);
110     foreach ($grades as $grade) {
111         $picture = print_user_picture($grade->user, $course->id, $grade->picture, false, true);
113         if ($attempts = quiz_get_user_attempts($quiz->id, $grade->user)) {
114             $userattempts = quiz_get_user_attempts_string($quiz, $attempts, $grade->grade);
115         }
117         $table->data[] = array ($picture, 
118                                 "<A HREF=\"$CFG->wwwroot/user/view.php?id=$grade->user&course=$course->id\">$grade->firstname $grade->lastname</A>", 
119                                 "$userattempts", round($grade->grade,0));
120     }
122     print_table($table);
124 // Finish the page
125     print_footer($course);
127 ?>