f9903ed0 |
1 | <?PHP // $Id$ |
2 | |
3 | // Graph size |
551b0b98 |
4 | $SURVEY_GHEIGHT = 500; |
5 | $SURVEY_GWIDTH = 900; |
f9903ed0 |
6 | |
551b0b98 |
7 | $SURVEY_QTYPE = array ( |
f9903ed0 |
8 | "-3" => "Virtual Actual and Preferred", |
9 | "-2" => "Virtual Preferred", |
10 | "-1" => "Virtual Actual", |
11 | "0" => "Text", |
12 | "1" => "Actual", |
13 | "2" => "Preferred", |
14 | "3" => "Actual and Preferred", |
15 | ); |
16 | |
17 | function survey_already_done($survey, $user) { |
18 | return record_exists_sql("SELECT * FROM survey_answers WHERE survey='$survey' AND user='$user'"); |
19 | } |
20 | |
551b0b98 |
21 | function survey_get_status($survey) { |
f9903ed0 |
22 | |
23 | $timenow = time(); |
24 | if ($survey->locked) { |
25 | if (($survey->timeopen <= $timenow) && ($timenow <= $survey->timeclose)) { |
26 | return "released"; |
27 | } else if ($survey->timenow >= $survey->timeclose) { |
28 | return "finished"; |
29 | } else { |
30 | return "error"; |
31 | } |
32 | } else { |
33 | return "editing"; |
34 | } |
35 | |
36 | } |
37 | |
551b0b98 |
38 | function survey_get_responses($survey) { |
39 | return get_records_sql("SELECT a.time as time, count(*) as numanswers, u.* |
40 | FROM survey_answers AS a, user AS u |
41 | WHERE a.answer1 <> '0' AND a.answer2 <> '0' |
42 | AND a.survey = $survey |
43 | AND a.user = u.id |
44 | GROUP BY a.user ORDER BY a.time ASC"); |
45 | } |
f9903ed0 |
46 | |
362f9c9c |
47 | function survey_count_responses($survey) { |
551b0b98 |
48 | if ($responses = survey_get_responses($survey)) { |
49 | return count($responses); |
50 | } else { |
51 | return 0; |
52 | } |
f9903ed0 |
53 | } |
54 | |
b416a1c3 |
55 | |
551b0b98 |
56 | function survey_print_all_responses($survey, $results) { |
b416a1c3 |
57 | global $THEME; |
58 | |
59 | echo "<TABLE CELLPADDING=5 CELLSPACING=2 ALIGN=CENTER>"; |
60 | echo "<TR><TD>Name<TD>Time<TD>Answered</TR>"; |
61 | |
62 | foreach ($results as $a) { |
63 | |
64 | echo "<TR>"; |
65 | echo "<TD><A HREF=\"report.php?action=student&student=$a->id&id=$survey\">$a->firstname $a->lastname</A></TD>"; |
7a302afc |
66 | echo "<TD>".userdate($a->time, "%e %B %Y, %I:%M %p")."</TD>"; |
b416a1c3 |
67 | echo "<TD align=right>$a->numanswers</TD>"; |
68 | echo "</TR>"; |
69 | } |
70 | echo "</TABLE>"; |
71 | } |
72 | |
b416a1c3 |
73 | |
551b0b98 |
74 | function survey_get_template_name($templateid) { |
f9903ed0 |
75 | global $db; |
76 | |
77 | if ($templateid) { |
78 | if ($ss = $db->Execute("SELECT name FROM surveys WHERE id = $templateid")) { |
79 | return $ss->fields["name"]; |
80 | } |
81 | } else { |
82 | return ""; |
83 | } |
84 | } |
85 | |
0d22e7cc |
86 | |
551b0b98 |
87 | function survey_get_analysis($survey, $user) { |
88 | global $db; |
89 | |
90 | return get_record_sql("SELECT notes from survey_analysis WHERE survey='$survey' and user='$user'"); |
91 | } |
92 | |
93 | function survey_update_analysis($survey, $user, $notes) { |
f9903ed0 |
94 | global $db; |
95 | |
96 | return $db->Execute("UPDATE survey_analysis SET notes='$notes' WHERE survey='$survey' and user='$user'"); |
97 | } |
98 | |
0d22e7cc |
99 | |
551b0b98 |
100 | function survey_add_analysis($survey, $user, $notes) { |
f9903ed0 |
101 | global $db; |
102 | |
103 | return $db->Execute("INSERT INTO survey_analysis SET notes='$notes', survey='$survey', user='$user'"); |
104 | } |
105 | |
0e30c987 |
106 | function survey_shorten_name ($name, $numwords) { |
107 | $words = explode(" ", $name); |
108 | for ($i=0; $i < $numwords; $i++) { |
109 | $output .= $words[$i]." "; |
110 | } |
111 | return $output; |
112 | } |
f9903ed0 |
113 | |
0d22e7cc |
114 | function survey_user_summary($course, $user, $mod, $survey) { |
115 | global $CFG; |
116 | } |
117 | |
118 | |
119 | function survey_user_outline($course, $user, $mod, $survey) { |
120 | if ($answers = get_records_sql("SELECT * FROM survey_answers WHERE survey='$survey->id' AND user='$user->id'")) { |
121 | |
122 | $lastanswer = array_pop($answers); |
123 | |
124 | $result->info = "Done"; |
125 | $result->time = $lastanswer->time; |
126 | return $result; |
0d22e7cc |
127 | } |
128 | return NULL; |
129 | } |
130 | |
131 | |
132 | function survey_user_complete($course, $user, $mod, $survey) { |
3f4deb2b |
133 | global $CFG; |
0d22e7cc |
134 | |
135 | if (survey_already_done($survey->id, $user->id)) { |
136 | echo "<IMG SRC=\"$CFG->wwwroot/mod/survey/graph.php?id=$mod->id&sid=$user->id&type=student.png\">"; |
137 | } else { |
138 | echo "Not done yet"; |
139 | } |
140 | } |
f9903ed0 |
141 | |
0e30c987 |
142 | |
143 | function survey_print_multi($question) { |
144 | GLOBAL $db, $qnum, $checklist, $THEME; |
145 | |
146 | |
147 | echo "<P> </P>\n"; |
148 | echo "<P><FONT SIZE=4><B>$question->text</B></FONT></P>"; |
149 | |
150 | echo "<TABLE ALIGN=CENTER WIDTH=90% CELLPADDING=4 CELLSPACING=1 BORDER=0>"; |
151 | |
152 | $options = explode( ",", $question->options); |
153 | $numoptions = count($options); |
154 | |
155 | $oneanswer = ($question->type == 1 || $question->type == 2) ? true : false; |
156 | if ($question->type == 2) { |
157 | $P = "P"; |
158 | } else { |
159 | $P = ""; |
160 | } |
161 | |
162 | if ($oneanswer) { |
163 | echo "<TR WIDTH=100% ><TD COLSPAN=2><P>$question->intro</P></TD>"; |
164 | } else { |
165 | echo "<TR WIDTH=100% ><TD COLSPAN=3><P>$question->intro</P></TD>"; |
166 | } |
167 | |
168 | while (list ($key, $val) = each ($options)) { |
169 | echo "<TD width=10% ALIGN=CENTER><FONT SIZE=1><P>$val</P></FONT></TD>\n"; |
170 | } |
171 | echo "<TD ALIGN=CENTER BGCOLOR=\"$THEME->body\"> </TD></TR>\n"; |
172 | |
173 | $subquestions = get_records_sql("SELECT * FROM survey_questions WHERE id in ($question->multi) "); |
174 | |
175 | foreach ($subquestions as $q) { |
176 | $qnum++; |
177 | $bgcolor = survey_question_color($qnum); |
178 | |
179 | echo "<TR BGCOLOR=$bgcolor>"; |
180 | if ($oneanswer) { |
181 | echo "<TD WIDTH=10 VALIGN=top><P><B>$qnum</B></P></TD>"; |
182 | echo "<TD VALIGN=top><P>$q->text</P></TD>"; |
183 | for ($i=1;$i<=$numoptions;$i++) { |
184 | echo "<TD WIDTH=10% ALIGN=CENTER><INPUT TYPE=radio NAME=q$P$q->id VALUE=$i></TD>"; |
185 | } |
186 | echo "<TD BGCOLOR=white><INPUT TYPE=radio NAME=q$P$q->id VALUE=0 checked></TD>"; |
187 | $checklist["q$P$q->id"] = $numoptions; |
188 | |
189 | } else { |
190 | echo "<TD WIDTH=10 VALIGN=middle rowspan=2><P><B>$qnum</B></P></TD>"; |
191 | echo "<TD WIDTH=10% NOWRAP><P><FONT SIZE=1>I prefer that </FONT></P></TD>"; |
192 | echo "<TD WIDTH=40% VALIGN=middle rowspan=2><P>$q->text</P></TD>"; |
193 | for ($i=1;$i<=$numoptions;$i++) { |
194 | echo "<TD WIDTH=10% ALIGN=CENTER><INPUT TYPE=radio NAME=qP$q->id VALUE=$i></TD>"; |
195 | } |
196 | echo "<TD BGCOLOR=\"$THEME->body\"><INPUT TYPE=radio NAME=qP$q->id VALUE=0 checked></TD>"; |
197 | echo "</TR>"; |
198 | |
199 | echo "<TR BGCOLOR=$bgcolor>"; |
200 | echo "<TD WIDTH=10% NOWRAP><P><FONT SIZE=1>I found that </P></TD>"; |
201 | for ($i=1;$i<=$numoptions;$i++) { |
202 | echo "<TD WIDTH=10% ALIGN=CENTER><INPUT TYPE=radio NAME=q$q->id VALUE=$i></TD>"; |
203 | } |
204 | echo "<TD WIDTH=5% BGCOLOR=\"$THEME->body\"><INPUT TYPE=radio NAME=q$q->id VALUE=0 checked></TD>"; |
205 | $checklist["qP$q->id"] = $numoptions; |
206 | $checklist["q$q->id"] = $numoptions; |
207 | } |
208 | echo "</TR>\n"; |
209 | } |
210 | echo "</TABLE>"; |
211 | } |
212 | |
213 | |
214 | |
215 | function survey_print_single($question) { |
216 | GLOBAL $db, $qnum; |
217 | |
218 | $bgcolor = survey_question_color(0); |
219 | |
220 | $qnum++; |
221 | |
222 | echo "<P> </P>\n"; |
223 | echo "<TABLE ALIGN=CENTER WIDTH=90% CELLPADDING=4 CELLSPACING=0>\n"; |
224 | echo "<TR BGCOLOR=$bgcolor>"; |
225 | echo "<TD VALIGN=top><B>$qnum</B></TD>"; |
226 | echo "<TD WIDTH=50% VALIGN=top><P>$question->text</P></TD>\n"; |
227 | echo "<TD WIDTH=50% VALIGN=top><P><FONT SIZE=+1>\n"; |
228 | |
229 | |
230 | if ($question->type == 0) { // Plain text field |
231 | echo "<TEXTAREA ROWS=3 COLS=30 WRAP=virtual NAME=\"$question->id\">$question->options</TEXTAREA>"; |
232 | |
233 | } else if ($question->type > 0) { // Choose one of a number |
234 | echo "<SELECT NAME=$question->id>"; |
235 | echo "<OPTION VALUE=0 SELECTED>Choose...</OPTION>"; |
236 | $options = explode( ",", $question->options); |
237 | foreach ($options as $key => $val) { |
238 | $key++; |
239 | echo "<OPTION VALUE=\"$key\">$val</OPTION>"; |
240 | } |
241 | echo "</SELECT>"; |
242 | |
243 | } else if ($question->type < 0) { // Choose several of a number |
244 | $options = explode( ",", $question->options); |
245 | echo "<P>THIS TYPE OF QUESTION NOT SUPPORTED YET</P>"; |
246 | } |
247 | |
248 | echo "</FONT></TD></TR></TABLE>"; |
249 | |
250 | } |
251 | |
252 | function survey_question_color($qnum) { |
253 | global $THEME; |
254 | |
255 | if ($qnum) { |
256 | return $qnum % 2 ? $THEME->cellcontent : $THEME->cellcontent2; |
257 | //return $qnum % 2 ? "#CCFFCC" : "#CCFFFF"; |
258 | } else { |
259 | return $THEME->cellcontent; |
260 | } |
261 | } |
262 | |
f9903ed0 |
263 | ?> |