A default beep
[moodle.git] / mod / chat / lib.php
CommitLineData
1515a89e 1<?PHP // $Id$
2
3/// Library of functions and constants for module chat
4
5
6define("CHAT_REFRESH_ROOM", 10);
7define("CHAT_REFRESH_USERLIST", 10);
8define("CHAT_OLD_PING", 30);
9
10define("CHAT_DRAWBOARD", false); // Look into this later
11
12
13// The HTML head for the message window to start with (<!-- nix --> is used to get some browsers starting with output
14$CHAT_HTMLHEAD = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\"><html><head></head>\n<body bgcolor=\"#FFFFFF\">\n\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n";
15
16// The HTML head for the message window to start with (with js scrolling)
17$CHAT_HTMLHEAD_JS = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\"><html><head><script language=\"JavaScript\">\n<!--\nfunction move()\n{\nif (scroll_active) window.scroll(1,400000);\nwindow.setTimeout(\"move()\",100);\n}\nscroll_active = true;\nmove();\n//-->\n</script>\n</head>\n<body bgcolor=\"#FFFFFF\" onBlur=\"scroll_active = true\" onFocus=\"scroll_active = false\">\n\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n<!-- nix -->\n";
18
19// The HTML code for standard empty pages (e.g. if a user was kicked out)
20$CHAT_HTMLHEAD_OUT = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\"><html><head><title>You are out!</title></head><body bgcolor=\"$THEME->body\"></body></html>";
21
22// The HTML head for the message input page
23$CHAT_HTMLHEAD_MSGINPUT = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\"><html><head><title>Message Input</title></head><body bgcolor=\"$THEME->body\">";
24
25// The HTML code for the message input page, with JavaScript
26$CHAT_HTMLHEAD_MSGINPUT_JS = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\"><html><head><title>Message Input</title>\n<script language=\"Javascript\">\n<!--\nscroll_active = true;\nfunction empty_field_and_submit()\n{\ndocument.fdummy.arsc_message.value=document.f.arsc_message.value;\ndocument.fdummy.submit();\ndocument.f.arsc_message.focus();\ndocument.f.arsc_message.select();\nreturn false;\n}\n// -->\n</script>\n</head><body bgcolor=\"$THEME->body\" OnLoad=\"document.f.arsc_message.focus();document.f.arsc_message.select();\">";
27
28
29function chat_add_instance($chat) {
30/// Given an object containing all the necessary data,
31/// (defined by the form in mod.html) this function
32/// will create a new instance and return the id number
33/// of the new instance.
34
35 $chat->timemodified = time();
36
37 # May have to add extra stuff in here #
38
39 return insert_record("chat", $chat);
40}
41
42
43function chat_update_instance($chat) {
44/// Given an object containing all the necessary data,
45/// (defined by the form in mod.html) this function
46/// will update an existing instance with new data.
47
48 $chat->timemodified = time();
49 $chat->id = $chat->instance;
50
51 # May have to add extra stuff in here #
52
53 return update_record("chat", $chat);
54}
55
56
57function chat_delete_instance($id) {
58/// Given an ID of an instance of this module,
59/// this function will permanently delete the instance
60/// and any data that depends on it.
61
62 if (! $chat = get_record("chat", "id", "$id")) {
63 return false;
64 }
65
66 $result = true;
67
68 # Delete any dependent records here #
69
70 if (! delete_records("chat", "id", "$chat->id")) {
71 $result = false;
72 }
73
74 return $result;
75}
76
77function chat_user_outline($course, $user, $mod, $chat) {
78/// Return a small object with summary information about what a
79/// user has done with a given particular instance of this module
80/// Used for user activity reports.
81/// $return->time = the time they did it
82/// $return->info = a short text description
83
84 return $return;
85}
86
87function chat_user_complete($course, $user, $mod, $chat) {
88/// Print a detailed representation of what a user has done with
89/// a given particular instance of this module, for user activity reports.
90
91 return true;
92}
93
94function chat_print_recent_activity(&$logs, $isteacher=false) {
95/// Given a list of logs, assumed to be those since the last login
96/// this function prints a short list of changes related to this module
97/// If isteacher is true then perhaps additional information is printed.
98/// This function is called from course/lib.php: print_recent_activity()
99
100 global $CFG, $COURSE_TEACHER_COLOR;
101
102 return $content; // True if anything was printed, otherwise false
103}
104
105function chat_cron () {
106/// Function to be run periodically according to the moodle cron
107/// This function searches for things that need to be done, such
108/// as sending out mail, toggling flags etc ...
109
110 global $CFG;
111
112 return true;
113}
114
115function chat_grades($chatid) {
116/// Must return an array of grades for a given instance of this module,
117/// indexed by user. It also returns a maximum allowed grade.
118
119 $return->grades = NULL;
120 $return->maxgrade = NULL;
121
122 return $return;
123}
124
125
126//////////////////////////////////////////////////////////////////////
127/// Functions that require some SQL
128
129function chat_get_users($chatid) {
130
131 global $CFG;
132
f7e648da 133 return get_records_sql("SELECT u.id, u.firstname, u.lastname, u.picture, c.lastmessageping
1515a89e 134 FROM {$CFG->prefix}chat_users c,
135 {$CFG->prefix}user u
136 WHERE c.chatid = '$chatid'
137 AND u.id = c.userid
138 GROUP BY u.id
139 ORDER BY c.firstping ASC");
140}
141
142function chat_get_latest_message($chatid) {
143
144 global $CFG;
145
146 return get_record_sql("SELECT *
147 FROM {$CFG->prefix}chat_messages
148 WHERE chatid = '$chatid'
149 ORDER BY timestamp DESC");
150}
151
152//////////////////////////////////////////////////////////////////////
153
154function chat_login_user($chatid, $version="header_js") {
155 global $USER;
156
157 $chatuser->chatid = $chatid;
158 $chatuser->userid = $USER->id;
159 $chatuser->version = $version;
160 $chatuser->ip = $USER->lastIP;
f7e648da 161 $chatuser->lastping = $chatuser->firstping = $chatuser->lastmessageping = time();
1515a89e 162 $chatuser->sid = random_string(32);
163
164 if (!insert_record("chat_users", $chatuser)) {
165 return false;
166 }
167
168 return $chatuser->sid;
169}
170
171
172
173function chat_browser_detect($HTTP_USER_AGENT) {
174
175 if(eregi("(opera) ([0-9]{1,2}.[0-9]{1,3}){0,1}", $HTTP_USER_AGENT, $match)
176 || eregi("(opera/)([0-9]{1,2}.[0-9]{1,3}){0,1}", $HTTP_USER_AGENT, $match))
177 {
178 $BName = "Opera"; $BVersion=$match[2];
179 }
180 elseif( eregi("(konqueror)/([0-9]{1,2}.[0-9]{1,3})", $HTTP_USER_AGENT, $match) )
181 {
182 $BName = "Konqueror"; $BVersion=$match[2];
183 }
184 elseif( eregi("(lynx)/([0-9]{1,2}.[0-9]{1,2}.[0-9]{1,2})", $HTTP_USER_AGENT, $match) )
185 {
186 $BName = "Lynx"; $BVersion=$match[2];
187 }
188 elseif( eregi("(links) \(([0-9]{1,2}.[0-9]{1,3})", $HTTP_USER_AGENT, $match) )
189 {
190 $BName = "Links"; $BVersion=$match[2];
191 }
192 elseif( eregi("(msie) ([0-9]{1,2}.[0-9]{1,3})", $HTTP_USER_AGENT, $match) )
193 {
194 $BName = "MSIE"; $BVersion=$match[2];
195 }
196 elseif( eregi("(netscape6)/(6.[0-9]{1,3})", $HTTP_USER_AGENT, $match) )
197 {
198 $BName = "Netscape"; $BVersion=$match[2];
199 }
200 elseif( eregi("mozilla/5", $HTTP_USER_AGENT) )
201 {
202 $BName = "Netscape"; $BVersion="Unknown";
203 }
204 elseif( eregi("(mozilla)/([0-9]{1,2}.[0-9]{1,3})", $HTTP_USER_AGENT, $match) )
205 {
206 $BName = "Netscape"; $BVersion=$match[2];
207 }
208 elseif( eregi("w3m", $HTTP_USER_AGENT) )
209 {
210 $BName = "w3m"; $BVersion="Unknown";
211 }
212 else
213 {
214 $BName = "Unknown"; $BVersion="Unknown";
215 }
216
217 if(eregi("linux", $HTTP_USER_AGENT))
218 {
219 $BPlatform = "Linux";
220 }
221 elseif( eregi("win32", $HTTP_USER_AGENT) )
222 {
223 $BPlatform = "Windows";
224 }
225 elseif( (eregi("(win)([0-9]{2})", $HTTP_USER_AGENT, $match) )
226 || (eregi("(windows) ([0-9]{2})", $HTTP_USER_AGENT, $match) ))
227 {
228 $BPlatform = "Windows $match[2]";
229 }
230 elseif( eregi("(winnt)([0-9]{1,2}.[0-9]{1,2}){0,1}", $HTTP_USER_AGENT, $match) )
231 {
232 $BPlatform = "Windows NT $match[2]";
233 }
234 elseif( eregi("(windows nt)( ){0,1}([0-9]{1,2}.[0-9]{1,2}){0,1}", $HTTP_USER_AGENT, $match) )
235 {
236 $BPlatform = "Windows NT $match[3]";
237 }
238 elseif( eregi("mac", $HTTP_USER_AGENT) )
239 {
240 $BPlatform = "Macintosh";
241 }
242 elseif( eregi("(sunos) ([0-9]{1,2}.[0-9]{1,2}){0,1}", $HTTP_USER_AGENT, $match) )
243 {
244 $BPlatform = "SunOS $match[2]";
245 }
246 elseif( eregi("(beos) r([0-9]{1,2}.[0-9]{1,2}){0,1}", $HTTP_USER_AGENT, $match) )
247 {
248 $BPlatform = "BeOS $match[2]";
249 }
250 elseif( eregi("freebsd", $HTTP_USER_AGENT) )
251 {
252 $BPlatform = "FreeBSD";
253 }
254 elseif( eregi("openbsd", $HTTP_USER_AGENT) )
255 {
256 $BPlatform = "OpenBSD";
257 }
258 elseif( eregi("irix", $HTTP_USER_AGENT) )
259 {
260 $BPlatform = "IRIX";
261 }
262 elseif( eregi("os/2", $HTTP_USER_AGENT) )
263 {
264 $BPlatform = "OS/2";
265 }
266 elseif( eregi("plan9", $HTTP_USER_AGENT) )
267 {
268 $BPlatform = "Plan9";
269 }
270 elseif( eregi("unix", $HTTP_USER_AGENT)
271 || eregi("hp-ux", $HTTP_USER_AGENT) )
272 {
273 $BPlatform = "Unix";
274 }
275 elseif( eregi("osf", $HTTP_USER_AGENT) )
276 {
277 $BPlatform = "OSF";
278 }
279 else
280 {
281 $BPlatform = "Unknown";
282 }
283
284 $return["name"] = $BName;
285 $return["version"] = $BVersion;
286 $return["platform"] = $BPlatform;
287 return $return;
288}
289
290function chat_display_version($version, $browser)
291{
292 GLOBAL $CFG;
293
294 $checked = "";
295 if (($version == "sockets") OR ($version == "push_js"))
296 {
297 $checked = "checked";
298 }
299 if (($version == "sockets" OR $version == "push_js")
300 AND
301 ($browser["name"] == "Lynx"
302 OR
303 $browser["name"] == "Links"
304 OR
305 $browser["name"] == "w3m"
306 OR
307 $browser["name"] == "Konqueror"
308 OR
309 ($browser["name"] == "Netscape" AND substr($browser["version"], 0, 1) == "2")))
310 {
311 $checked = "";
312 }
313 if (($version == "text")
314 AND
315 ($browser["name"] == "Lynx"
316 OR
317 $browser["name"] == "Links"
318 OR
319 $browser["name"] == "w3m"))
320 {
321 $checked = "checked";
322 }
323 if (($version == "header")
324 AND
325 ($browser["name"] == "Konqueror"))
326 {
327 $checked = "checked";
328 }
329 if (($version == "header_js")
330 AND
331 ($browser["name"] == "Netscape" AND substr($browser["version"], 0, 1) == "2"))
332 {
333 $checked = "checked";
334 }
335 ?>
336 <tr>
337 <td valign="top">
338 <input type="radio" name="chat_chatversion" value="<?php echo $version; ?>"<?php echo $checked; ?>>
339 </td>
340 <td valign="top" align="left">
341 <font face="Arial" size="2">
342 <?php echo $chat_lang["gui_".$version]; ?>
343 </font>
344 </td>
345 </tr>
346 <?php
347
348}
349
350
351function chat_format_message($userid, $chatid, $timestamp, $message, $system=false) {
352/// Given a message and some information, this function formats it appropriately
353/// for displaying on the web, and returns the formatted string.
354
355 global $CFG, $USER;
356
357 if (!$user = get_record("user", "id", $userid)) {
358 return "Error finding user id = $userid";
359 }
360
361 $picture = print_user_picture($user->id, 0, $user->picture, false, true, false);
362
363 $strtime = userdate($timestamp, get_string("strftimemessage", "chat"));
364
9f85bed4 365 if ($system) { /// It's a system message
366 $message = get_string("message$message", "chat",
367 "$user->firstname $user->lastname");
1515a89e 368 $message = addslashes($message);
369 $output = "<table><tr><td valign=top>$picture</td><td>";
370 $output .= "<font size=2 color=\"#AAAAAA\">$strtime $message</font>";
371 $output .= "</td></tr></table>";
372 return $output;
373 }
374
9f85bed4 375 convert_urls_into_links($message);
376 replace_smilies($message);
377
378 if (substr($message, 0, 1) == ":") { /// It's an MOO emote
379 $outinfo = $strtime;
380 $outmain = "$user->firstname ".substr($message, 1);
381
382 } else if (substr($message, 0, 1) == "/") { /// It's a user command
1515a89e 383
384 if (substr($message, 0, 4) == "/me ") {
9f85bed4 385 $outinfo = $strtime;
386 $outmain = "$user->firstname ".substr($message, 4);
387 } else {
388 $outinfo = $strtime;
389 $outmain = $message;
1515a89e 390 }
9f85bed4 391
392 } else { /// It's a normal message
393 $outinfo = "$strtime $user->firstname";
394 $outmain = $message;
1515a89e 395 }
396
9f85bed4 397 /// Format the message as a small table
1515a89e 398
399 $output = "<table><tr><td valign=top>$picture</td><td>";
9f85bed4 400 $output .= "<font size=2><font color=\"#888888\">$outinfo</font>: $outmain</font>";
1515a89e 401 $output .= "</td></tr></table>";
402
403 return addslashes($output);
404
405}
406
407
408?>