0fc59399 |
1 | <?php // $Id$ |
2 | |
3 | /// Item analysis displays a table of quiz questions and their performance |
4 | |
5 | require_once("locallib.php"); |
6 | require_once($CFG->libdir.'/tablelib.php'); |
7 | |
8 | |
9 | function stats_sumx($sum, $data){ |
10 | $sum[0] += $data[0]; |
11 | $sum[1] += $data[1]; |
12 | return $sum; |
13 | } |
14 | |
15 | function stats_sumx2($sum, $data){ |
16 | $sum[0] += $data[0]*$data[0]; |
17 | $sum[1] += $data[1]*$data[1]; |
18 | return $sum; |
19 | } |
20 | |
21 | function stats_sumxy($sum, $data){ |
22 | $sum[0] += $data[0]*$data[1]; |
23 | return $sum; |
24 | } |
25 | |
26 | |
27 | /// Item analysis displays a table of quiz questions and their performance |
28 | |
29 | class quiz_report extends quiz_default_report { |
30 | |
31 | function display($quiz, $cm, $course) { /// This function just displays the report |
32 | |
33 | global $CFG, $SESSION, $db, $QUIZ_QTYPES; |
34 | define(QUIZ_ALLATTEMPTS, 0); |
35 | define(QUIZ_HIGHESTATTEMPT, 1); |
36 | define(QUIZ_FIRSTATTEMPT, 2); |
37 | define(QUIZ_LASTATTEMPT, 3); |
38 | |
39 | $strnoquiz = get_string('noquiz','quiz'); |
40 | $strnoattempts = get_string('noattempts','quiz'); |
41 | $strtimeformat = get_string('strftimedatetime'); |
42 | |
43 | if (!$quiz->questions) { |
44 | print_heading($strnoattempts); |
45 | return true; |
46 | } |
47 | |
48 | /// Check to see if groups are being used in this quiz |
49 | if ($groupmode = groupmode($course, $cm)) { // Groups are being used |
50 | $currentgroup = setup_and_print_groups($course, $groupmode, "report.php?id=$cm->id&mode=overview"); |
51 | } else { |
52 | $currentgroup = false; |
53 | } |
54 | |
55 | /// Get all users: teachers and students |
56 | if ($currentgroup) { |
57 | $users = get_group_users($currentgroup); |
58 | } |
59 | else { |
60 | $users = get_course_users($course->id); |
61 | } |
62 | |
63 | /// Remove teachers |
64 | $teachers = get_course_teachers($course->id); |
65 | if(!empty($teachers)) { |
66 | $keys = array_keys($teachers); |
67 | } |
68 | foreach($keys as $key) { |
69 | unset($users[$key]); |
70 | } |
71 | |
72 | if(empty($users)) { |
73 | print_heading($strnoattempts); |
74 | return true; |
75 | } |
76 | |
77 | // set tTable and Analysis stats options |
78 | if(!isset($SESSION->quiz_analysis_table)) { |
79 | $SESSION->quiz_analysis_table = array('attemptselection' => 0, 'lowmarklimit' => 0); |
80 | } |
81 | |
82 | foreach($SESSION->quiz_analysis_table as $option => $value) { |
83 | $urlparam = optional_param($option, NULL); |
84 | if($urlparam === NULL) { |
85 | $$option = $value; |
86 | } |
87 | else { |
88 | $$option = $SESSION->quiz_analysis_table[$option] = $urlparam; |
89 | } |
90 | } |
91 | |
92 | $scorelimit = $quiz->grade * $lowmarklimit/ 100; |
93 | |
94 | // ULPGC ecastro DEBUG this is here to allow for differnt SQL to select attempts |
95 | switch ($attemptselection) { |
96 | case QUIZ_ALLATTEMPTS : |
97 | $limit = ''; |
98 | $group = ''; |
99 | break; |
100 | case QUIZ_HIGHESTATTEMPT : |
101 | $limit = ', max(qa.sumgrades) '; |
102 | $group = ' GROUP BY qa.userid '; |
103 | break; |
104 | case QUIZ_FIRSTATTEMPT : |
105 | $limit = ', min(qa.timemodified) '; |
106 | $group = ' GROUP BY qa.userid '; |
107 | break; |
108 | case QUIZ_LASTATTEMPT : |
109 | $limit = ', max(qa.timemodified) '; |
110 | $group = ' GROUP BY qa.userid '; |
111 | break; |
112 | } |
113 | |
114 | $select = 'SELECT qa.* '.$limit; |
115 | $sql = 'FROM '.$CFG->prefix.'user u '. |
116 | 'LEFT JOIN '.$CFG->prefix.'quiz_attempts qa ON u.id = qa.userid '. |
117 | 'LEFT JOIN '.$CFG->prefix.'quiz_states qr ON qr.attempt = qa.id '. // es posible |
118 | 'WHERE u.id IN ('.implode(',', array_keys($users)).') AND ( qa.quiz = '.$quiz->id.') '. // ULPGC ecastro |
119 | ' AND ( qa.sumgrades >= '.$scorelimit.' ) '; |
120 | Content-type: text/html
Official Moodle git projects - moodle.git/blame - mod/quiz/report/analysis/report.php
500 - Internal Server Error
Malformed UTF-8 character (fatal) at (eval 8) line 1, <$fd> line 250.