Just a couple of changes
[moodle.git] / mod / survey / lib.php
CommitLineData
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
17function survey_already_done($survey, $user) {
18 return record_exists_sql("SELECT * FROM survey_answers WHERE survey='$survey' AND user='$user'");
19}
20
551b0b98 21function 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 38function 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 47function 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 56function 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 74function 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 87function 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
93function 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 100function 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 106function 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 114function survey_user_summary($course, $user, $mod, $survey) {
115 global $CFG;
116}
117
118
119function 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
132function 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
143function survey_print_multi($question) {
144 GLOBAL $db, $qnum, $checklist, $THEME;
145
146
147 echo "<P>&nbsp</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\">&nbsp</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&nbsp;</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&nbsp;</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
215function survey_print_single($question) {
216 GLOBAL $db, $qnum;
217
218 $bgcolor = survey_question_color(0);
219
220 $qnum++;
221
222 echo "<P>&nbsp</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
252function 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?>