//This function executes all the backup procedure about this mod
function chat_backup_mods($bf,$preferences) {
-
- global $CFG;
+ global $CFG, $DB;
$status = true;
//Iterate over chat table
- $chats = get_records ("chat","course",$preferences->backup_course,"id");
+ $chats = $DB->get_records ("chat", array("course"=>$preferences->backup_course), "id");
if ($chats) {
foreach ($chats as $chat) {
if (backup_mod_selected($preferences,'chat',$chat->id)) {
}
function chat_backup_one_mod($bf,$preferences,$chat) {
-
- global $CFG;
+ global $CFG, $DB;
if (is_numeric($chat)) {
- $chat = get_record('chat','id',$chat);
+ $chat = $DB->get_record('chat', array('id'=>$chat));
}
$status = true;
//Backup chat_messages contents (executed from chat_backup_mods)
function backup_chat_messages ($bf,$preferences,$chat) {
-
- global $CFG;
+ global $CFG, $DB;
$status = true;
- $chat_messages = get_records("chat_messages","chatid",$chat,"id");
+ $chat_messages = $DB->get_records("chat_messages", array("chatid"=>$chat), "id");
//If there is messages
if ($chat_messages) {
//Write start tag
//Returns an array of chats id
function chat_ids ($course) {
+ global $DB;
- global $CFG;
-
- return get_records_sql ("SELECT c.id, c.course
- FROM {$CFG->prefix}chat c
- WHERE c.course = '$course'");
+ return $DB->get_records_sql("SELECT c.id, c.course
+ FROM {chat} c
+ WHERE c.course = ?", array($course));
}
//Returns an array of assignment_submissions id
function chat_message_ids_by_course ($course) {
+ global $DB;
- global $CFG;
-
- return get_records_sql ("SELECT m.id , m.chatid
- FROM {$CFG->prefix}chat_messages m,
- {$CFG->prefix}chat c
- WHERE c.course = '$course' AND
- m.chatid = c.id");
+ return $DB->get_records_sql("SELECT m.id , m.chatid
+ FROM {chat_messages} m, {chat} c
+ WHERE c.course = ? AND
+ m.chatid = c.id", array($course));
}
//Returns an array of chat id
function chat_message_ids_by_instance ($instanceid) {
+ global $DB;
- global $CFG;
-
- return get_records_sql ("SELECT m.id , m.chatid
- FROM {$CFG->prefix}chat_messages m
- WHERE m.chatid = $instanceid");
+ return $DB->get_records_sql("SELECT m.id , m.chatid
+ FROM {chat_messages} m
+ WHERE m.chatid = ?", array($instanceid));
}
?>
}
function user_lazy_update($sessionid) {
+ global $DB;
+
// TODO: this can and should be written as a single UPDATE query
if(empty($this->sets_info[$sessionid])) {
$this->trace('user_lazy_update() called for an invalid SID: '.$sessionid, E_USER_WARNING);
if($now - $this->sets_info[$sessionid]['lastinfocommit'] > $this->_freq_update_records) {
// commit to permanent storage
$this->sets_info[$sessionid]['lastinfocommit'] = $now;
- update_record('chat_users', $this->sets_info[$sessionid]['chatuser']);
+ $DB->update_record('chat_users', $this->sets_info[$sessionid]['chatuser']);
}
return true;
}
}
function dispatch_sidekick($handle, $type, $sessionid, $customdata) {
- global $CFG;
+ global $CFG, $DB;
switch($type) {
case CHAT_SIDEKICK_BEEP:
$msg->timestamp = time();
// Commit to DB
- insert_record('chat_messages', $msg, false);
+ $DB->insert_record('chat_messages', $msg, false);
// OK, now push it out to all users
$this->message_broadcast($msg, $this->sets_info[$sessionid]['user']);
// A slight hack to prevent malformed SQL inserts
$origmsg = $msg->message;
- $msg->message = addslashes($msg->message);
+ $msg->message = $msg->message;
// Commit to DB
- insert_record('chat_messages', $msg, false);
+ $DB->insert_record('chat_messages', $msg, false);
// Undo the hack
$msg->message = $origmsg;
}
function promote_final($sessionid, $customdata) {
+ global $DB;
+
if(isset($this->conn_sets[$sessionid])) {
$this->trace('Set cannot be finalized: Session '.$sessionid.' is already active');
return false;
}
- $chatuser = get_record('chat_users', 'sid', $sessionid);
+ $chatuser = $DB->get_record('chat_users', array('sid'=>$sessionid));
if($chatuser === false) {
$this->dismiss_half($sessionid);
return false;
}
- $chat = get_record('chat', 'id', $chatuser->chatid);
+ $chat = $DB->get_record('chat', array('id'=>$chatuser->chatid));
if($chat === false) {
$this->dismiss_half($sessionid);
return false;
}
- $user = get_record('user', 'id', $chatuser->userid);
+ $user = $DB->get_record('user', array('id'=>$chatuser->userid));
if($user === false) {
$this->dismiss_half($sessionid);
return false;
}
- $course = get_record('course', 'id', $chat->course); {
- if($course === false) {
+ $course = $DB->get_record('course', array('id'=>$chat->course));
+ if($course === false) {
$this->dismiss_half($sessionid);
return false;
- }
}
global $CHAT_HTMLHEAD_JS, $CFG;
// Finally, broadcast the "entered the chat" message
- $msg = &New stdClass;
+ $msg = new stdClass;
$msg->chatid = $chatuser->chatid;
$msg->userid = $chatuser->userid;
$msg->groupid = $chatuser->groupid;
$msg->message = 'enter';
$msg->timestamp = time();
- insert_record('chat_messages', $msg, false);
+ $DB->insert_record('chat_messages', $msg, false);
$this->message_broadcast($msg, $this->sets_info[$sessionid]['user']);
return true;
}
function disconnect_session($sessionid) {
+ global $DB;
+
$info = $this->sets_info[$sessionid];
- delete_records('chat_users', 'sid', $sessionid);
+ $DB->delete_records('chat_users', array('sid'=>$sessionid));
$msg = &New stdClass;
$msg->chatid = $info['chatid'];
$msg->userid = $info['userid'];
$msg->timestamp = time();
$this->trace('User has disconnected, destroying uid '.$info['userid'].' with SID '.$sessionid, E_USER_WARNING);
- insert_record('chat_messages', $msg, false);
+ $DB->insert_record('chat_messages', $msg, false);
// *************************** IMPORTANT
//
$DAEMON->trace('Started Moodle chatd on port '.$CFG->chat_serverport.', listening socket '.$DAEMON->listen_socket, E_USER_WARNING);
/// Clear the decks of old stuff
-delete_records('chat_users', 'version', 'sockets');
+$DB->delete_records('chat_users', array('version'=>'sockets'));
while(true) {
$active = array();
print_error('errornousers', 'chat');
}
- set_field('chat_users', 'lastping', time(), 'sid', $chat_sid);
+ $DB->set_field('chat_users', 'lastping', time(), array('sid'=>$chat_sid));
if (!isset($SESSION->chatprefs)) {
$SESSION->chatprefs = array();
$newmessage->systrem = 0;
$newmessage->message = $message;
$newmessage->timestamp = time();
- if (!insert_record('chat_messages', $newmessage)) {
+ if (!$DB->insert_record('chat_messages', $newmessage)) {
print_error('cantinsert', 'chat');
}
- set_field('chat_users', 'lastmessageping', time(), 'sid', $chat_sid);
+ $DB->set_field('chat_users', 'lastmessageping', time(), array('sid'=>$chat_sid));
add_to_log($course->id, 'chat', 'talk', "view.php?id=$cm->id", $chat->id, $cm->id);
}
$options->para = false;
$options->newlines = true;
+ $params = array('last'=>$last, 'groupid'=>$groupid, 'chatid'=>$chat->id, 'chatentered'=>$chatentered);
+
if ($newonly) {
- $lastsql = "AND timestamp > $last";
+ $lastsql = "AND timestamp > :last";
} else {
$lastsql = "";
}
- $groupselect = $groupid ? "AND (groupid='$groupid' OR groupid='0')" : "";
+ $groupselect = $groupid ? "AND (groupid=:groupid OR groupid=0)" : "";
+
$messages = $DB->get_records_select("chat_messages",
- "chatid = '$chat->id' AND timestamp > $chatentered $lastsql $groupselect", null,
+ "chatid = :chatid AND timestamp > :chatentered $lastsql $groupselect", $params,
"timestamp DESC");
if ($messages) {
$chat_sid = required_param('chat_sid', PARAM_ALPHANUM);
- if (!$chatuser = get_record('chat_users', 'sid', $chat_sid)) {
+ if (!$chatuser = $DB->get_record('chat_users', array('sid'=>$chat_sid))) {
print_error('Not logged in!');
}
//Get the user theme
- $USER = get_record('user', 'id', $chatuser->userid);
+ $USER = $DB->get_record('user', array('id'=>$chatuser->userid));
//Setup course, lang and theme
course_setup($chatuser->course);
$id = required_param('id', PARAM_INT);
$groupid = optional_param('groupid', 0, PARAM_INT); //only for teachers
- if (!$chat = get_record('chat', 'id', $id)) {
+ if (!$chat = $DB->get_record('chat', array('id'=>$id))) {
print_error('invalidid', 'chat');
}
- if (!$course = get_record('course', 'id', $chat->course)) {
+ if (!$course = $DB->get_record('course', array('id'=>$chat->course))) {
print_error('invalidcourseid');
}
$chat_sid = required_param('chat_sid', PARAM_ALPHANUM);
$chat_message = required_param('chat_message', PARAM_RAW);
- if (!$chatuser = get_record('chat_users', 'sid', $chat_sid)) {
+ if (!$chatuser = $DB->get_record('chat_users', array('sid'=>$chat_sid))) {
print_error('Not logged in!');
}
- if (!$chat = get_record('chat', 'id', $chatuser->chatid)) {
+ if (!$chat = $DB->get_record('chat', array('id'=>$chatuser->chatid))) {
print_error('No chat found');
}
- if (!$course = get_record('course', 'id', $chat->course)) {
+ if (!$course = $DB->get_record('course', array('id'=>$chat->course))) {
print_error('Could not find the course this belongs to!');
}
/// Clean up the message
- $chat_message = addslashes(clean_text(stripslashes($chat_message), FORMAT_MOODLE)); // Strip bad tags
+ $chat_message = clean_text(stripslashes($chat_message), FORMAT_MOODLE); // Strip bad tags
/// Add the message to the database
$message->message = $chat_message;
$message->timestamp = time();
- if (!insert_record('chat_messages', $message)) {
+ if (!$DB->insert_record('chat_messages', $message)) {
print_error('Could not insert a chat message!');
}
$chatuser->lastmessageping = time() - 2;
- update_record('chat_users', $chatuser);
+ $DB->update_record('chat_users', $chatuser);
if ($cm = get_coursemodule_from_instance('chat', $chat->id, $course->id)) {
add_to_log($course->id, 'chat', 'talk', "view.php?id=$cm->id", $chat->id, $cm->id);
$timenow = time();
- $groupselect = $chatuser->groupid ? " AND (groupid='".$chatuser->groupid."' OR groupid='0') " : "";
+ $params = array('groupid'=>$chatuser->groupid, 'chatid'=>$chatuser->chatid, 'lasttime'=>$chat_lasttime);
+
+ $groupselect = $chatuser->groupid ? " AND (groupid=:groupid OR groupid=0) " : "";
$messages = $DB->get_records_select("chat_messages",
- "chatid = '$chatuser->chatid' AND timestamp > '$chat_lasttime' $groupselect", null,
+ "chatid = :chatid AND timestamp > :lasttime $groupselect", $params,
"timestamp ASC");
if ($messages) {
}
$chatuser->lastping = time();
- set_field('chat_users', 'lastping', $chatuser->lastping, 'id', $chatuser->id );
+ $DB->set_field('chat_users', 'lastping', $chatuser->lastping, array('id'=>$chatuser->id));
if ($refreshusers) {
echo "if (parent.users.document.anchors[0] != null) {" .
// ping first so we can later shortcut as needed.
$chatuser->lastping = time();
- set_field('chat_users', 'lastping', $chatuser->lastping, 'id', $chatuser->id );
+ $DB->set_field('chat_users', 'lastping', $chatuser->lastping, array('id'=>$chatuser->id));
if ($message = chat_get_latest_message($chatuser->chatid, $chatuser->groupid)) {
$chat_newlasttime = $message->timestamp;
$timenow = time();
-
- $groupselect = $chatuser->groupid ? " AND (groupid='".$chatuser->groupid."' OR groupid='0') " : "";
+ $params = array('groupid'=>$chatuser->groupid, 'lastid'=>$chat_lastid, 'lasttime'=>$chat_lasttime, 'chatid'=>$chatuser->chatid);
+ $groupselect = $chatuser->groupid ? " AND (groupid=:groupid OR groupid=0) " : "";
$newcriteria = '';
if ($chat_lastid > 0) {
- $newcriteria = "id > $chat_lastid";
+ $newcriteria = "id > :lastid";
} else {
if ($chat_lasttime == 0) { //display some previous messages
$chat_lasttime = $timenow - $CFG->chat_old_ping; //TO DO - any better value??
}
- $newcriteria = "timestamp > $chat_lasttime";
+ $newcriteria = "timestamp > :lasttime";
}
$messages = $DB->get_records_select("chat_messages",
- "chatid = '$chatuser->chatid' AND $newcriteria $groupselect", null,
+ "chatid = :chatid AND $newcriteria $groupselect", $params,
"timestamp ASC");
if ($messages) {
$nomoodlecookie = true; // Session not needed!
- include('../../../config.php');
- include('../lib.php');
+ require('../../../config.php');
+ require('../lib.php');
$chat_sid = required_param('chat_sid', PARAM_ALPHANUM);
$beep = optional_param('beep', 0, PARAM_INT); // beep target
- if (!$chatuser = get_record('chat_users', 'sid', $chat_sid)) {
+ if (!$chatuser = $DB->get_record('chat_users', array('sid'=>$chat_sid))) {
print_error('notlogged', 'chat');
}
//Get the minimal course
- if (!$course = get_record('course','id',$chatuser->course,'','','','','id,theme,lang')) {
+ if (!$course = $DB->get_record('course', array('id'=>$chatuser->course), 'id,theme,lang')) {
print_error('invalidcourseid');
}
//Get the user theme and enough info to be used in chat_format_message() which passes it along to
- if (!$USER = get_record('user','id',$chatuser->userid)) { // no optimisation here, it would break again in future!
+ if (!$USER = $DB->get_record('user', array('id'=>$chatuser->userid))) { // no optimisation here, it would break again in future!
print_error('invaliduser');
}
$USER->description = '';
$message->system = 0;
$message->timestamp = time();
- if (!insert_record('chat_messages', $message)) {
+ if (!$DB->insert_record('chat_messages', $message)) {
print_error('cantinsert', 'chat');
}
}
$chatuser->lastping = time();
- set_field('chat_users', 'lastping', $chatuser->lastping, 'id', $chatuser->id );
+ $DB->set_field('chat_users', 'lastping', $chatuser->lastping, array('id'=>$chatuser->id));
$refreshurl = "users.php?chat_sid=$chat_sid";
$chat_sid = required_param('chat_sid', PARAM_ALPHANUM);
- if (!$chatuser = get_record('chat_users', 'sid', $chat_sid)) {
+ if (!$chatuser = $DB->get_record('chat_users', array('sid'=>$chat_sid))) {
print_error('Not logged in!');
}
//Get the user theme
- $USER = get_record('user', 'id', $chatuser->userid);
+ $USER = $DB->get_record('user', array('id'=>$chatuser->userid));
//Setup course, lang and theme
course_setup($chatuser->course);
$id = required_param('id', PARAM_INT);
$groupid = optional_param('groupid', 0, PARAM_INT); //only for teachers
- if (!$chat = get_record('chat', 'id', $id)) {
+ if (!$chat = $DB->get_record('chat', array('id'=>$id))) {
print_error('Could not find that chat room!');
}
- if (!$course = get_record('course', 'id', $chat->course)) {
+ if (!$course = $DB->get_record('course', array('id'=>$chat->course))) {
print_error('Could not find the course this belongs to!');
}
$id = required_param('id', PARAM_INT); // course
- if (! $course = get_record('course', 'id', $id)) {
+ if (! $course = $DB->get_record('course', array('id'=>$id))) {
print_error('invalidcourseid');
}
/// Used for user activity reports.
/// $return->time = the time they did it
/// $return->info = a short text description
-
- $return = NULL;
- return $return;
+ return NULL;
}
function chat_user_complete($course, $user, $mod, $chat) {
/// Print a detailed representation of what a user has done with
/// a given particular instance of this module, for user activity reports.
-
return true;
}
function chat_print_recent_activity($course, $viewfullnames, $timestart) {
/// Given a course and a date, prints a summary of all chat rooms past and present
/// This function is called from course/lib.php: print_recent_activity()
-
- global $CFG, $USER;
+ global $CFG, $USER, $DB;
// this is approximate only, but it is really fast ;-)
$timeout = $CFG->chat_old_ping * 10;
- if (!$mcms = get_records_sql("SELECT cm.id, MAX(chm.timestamp) AS lasttime
- FROM {$CFG->prefix}course_modules cm
- JOIN {$CFG->prefix}modules md ON md.id = cm.module
- JOIN {$CFG->prefix}chat ch ON ch.id = cm.instance
- JOIN {$CFG->prefix}chat_messages chm ON chm.chatid = ch.id
- WHERE chm.timestamp > $timestart AND ch.course = {$course->id} AND md.name = 'chat'
- GROUP BY cm.id
- ORDER BY lasttime ASC")) {
+ if (!$mcms = $DB->get_records_sql("SELECT cm.id, MAX(chm.timestamp) AS lasttime
+ FROM {course_modules} cm
+ JOIN {modules} md ON md.id = cm.module
+ JOIN {chat} ch ON ch.id = cm.instance
+ JOIN {chat_messages} chm ON chm.chatid = ch.id
+ WHERE chm.timestamp > ? AND ch.course = ? AND md.name = 'chat'
+ GROUP BY cm.id
+ ORDER BY lasttime ASC", array($timestart, $course->id))) {
return false;
}
$mygroupids = implode(',', $mygroupids);
$cm->mygroupids = $mygroupids;
- if (!$mcm = get_record_sql("SELECT cm.id, MAX(chm.timestamp) AS lasttime
- FROM {$CFG->prefix}course_modules cm
- JOIN {$CFG->prefix}chat ch ON ch.id = cm.instance
- JOIN {$CFG->prefix}chat_messages chm ON chm.chatid = ch.id
- WHERE chm.timestamp > $timestart AND cm.id = {$cm->id} AND
- (chm.groupid IN ($mygroupids) OR chm.groupid = 0)
- GROUP BY cm.id")) {
+ if (!$mcm = $DB->get_record_sql("SELECT cm.id, MAX(chm.timestamp) AS lasttime
+ FROM {course_modules} cm
+ JOIN {chat} ch ON ch.id = cm.instance
+ JOIN {chat_messages} chm ON chm.chatid = ch.id
+ WHERE chm.timestamp > ? AND cm.id = ? AND
+ (chm.groupid IN ($mygroupids) OR chm.groupid = 0)
+ GROUP BY cm.id", array($timestart, $cm->id))) {
continue;
}
$timeoldext = time() - ($CFG->chat_old_ping*10); // JSless gui_basic needs much longer timeouts
$timeoldext = floor($timeoldext/10)*10; // better db caching
- $timeout = "AND (chu.version<>'basic' AND chu.lastping>$timeold) OR (chu.version='basic' AND chu.lastping>$timeoldext)";
+ $params = array('timeold'=>$timeold, 'timeoldext'=>$timeoldext, 'cmid'=>$cm->id);
+
+ $timeout = "AND (chu.version<>'basic' AND chu.lastping>:timeold) OR (chu.version='basic' AND chu.lastping>:timeoldext)";
foreach ($current as $cm) {
//count users first
$groupselect = "";
}
- if (!$users = get_records_sql("SELECT u.id, u.firstname, u.lastname, u.email, u.picture
- FROM {$CFG->prefix}course_modules cm
- JOIN {$CFG->prefix}chat ch ON ch.id = cm.instance
- JOIN {$CFG->prefix}chat_users chu ON chu.chatid = ch.id
- JOIN {$CFG->prefix}user u ON u.id = chu.userid
- WHERE cm.id = {$cm->id} $timeout $groupselect
- GROUP BY u.id, u.firstname, u.lastname, u.email, u.picture")) {
+ if (!$users = $DB->get_records_sql("SELECT u.id, u.firstname, u.lastname, u.email, u.picture
+ FROM {course_modules} cm
+ JOIN {chat} ch ON ch.id = cm.instance
+ JOIN {chat_users} chu ON chu.chatid = ch.id
+ JOIN {user} u ON u.id = chu.userid
+ WHERE cm.id = :cmid $timeout $groupselect
+ GROUP BY u.id, u.firstname, u.lastname, u.email, u.picture", $params)) {
}
$link = $CFG->wwwroot.'/mod/chat/view.php?id='.$cm->id;
/// Function to be run periodically according to the moodle cron
/// This function searches for things that need to be done, such
/// as sending out mail, toggling flags etc ...
-
- global $CFG;
+ global $DB;
chat_update_chat_times();
/// Delete old messages with a
/// single SQL query.
$subselect = "SELECT c.keepdays
- FROM {$CFG->prefix}chat c
- WHERE c.id = {$CFG->prefix}chat_messages.chatid";
+ FROM {chat} c
+ WHERE c.id = {chat_messages}.chatid";
$sql = "DELETE
- FROM {$CFG->prefix}chat_messages
+ FROM {chat_messages}
WHERE ($subselect) > 0 AND timestamp < ( ".time()." -($subselect) * 24 * 3600)";
- execute_sql($sql, false);
+ $DB->execute($sql);
return true;
}
function chat_get_participants($chatid, $groupid=0) {
//Returns the users with data in one chat
//(users with records in chat_messages, students)
+ global $DB;
- global $CFG;
+ $params = array('groupid'=>$groupid, 'chatid'=>$chatid);
if ($groupid) {
- $groupselect = " AND (c.groupid='$groupid' OR c.groupid='0')";
+ $groupselect = " AND (c.groupid=:groupid OR c.groupid='0')";
} else {
$groupselect = "";
}
//Get students
- $students = get_records_sql("SELECT DISTINCT u.id, u.id
- FROM {$CFG->prefix}user u,
- {$CFG->prefix}chat_messages c
- WHERE c.chatid = '$chatid' $groupselect
- AND u.id = c.userid");
+ $students = $DB->get_records_sql("SELECT DISTINCT u.id, u.id
+ FROM {user} u, {chat_messages} c
+ WHERE c.chatid = :chatid $groupselect
+ AND u.id = c.userid", $params);
//Return students array (it contains an array of unique users)
return ($students);
// If courseid = 0, then every chat event in the site is checked, else
// only chat events belonging to the course specified are checked.
// This function is used, in its new format, by restore_refresh_events()
+ global $DB;
if ($courseid) {
- if (! $chats = get_records("chat", "course", $courseid)) {
+ if (! $chats = $DB->get_records("chat", array("course"=>$courseid))) {
return true;
}
} else {
- if (! $chats = get_records("chat")) {
+ if (! $chats = $DB->get_records("chat")) {
return true;
}
}
- $moduleid = get_field('modules', 'id', 'name', 'chat');
+ $moduleid = $DB->get_field('modules', 'id', array('name'=>'chat'));
foreach ($chats as $chat) {
$event = NULL;
- $event->name = addslashes($chat->name);
- $event->description = addslashes($chat->intro);
+ $event->name = $chat->name;
+ $event->description = $chat->intro;
$event->timestart = $chat->chattime;
- if ($event->id = get_field('event', 'id', 'modulename', 'chat', 'instance', $chat->id)) {
+ if ($event->id = $DB->get_field('event', 'id', array('modulename'=>'chat', 'instance'=>$chat->id))) {
update_event($event);
} else {
$event->instance = $chat->id;
$event->eventtype = $chat->schedule;
$event->timeduration = 0;
- $event->visible = get_field('course_modules', 'visible', 'module', $moduleid, 'instance', $chat->id);
+ $event->visible = $DB->get_field('course_modules', 'visible', array('module'=>$moduleid, 'instance'=>$chat->id));
add_event($event);
}
/// Functions that require some SQL
function chat_get_users($chatid, $groupid=0, $groupingid=0) {
+ global $DB;
- global $CFG;
+ $params = array('chatid'=>$chatid, 'groupid'=>$groupid, 'groupingid'=>$groupingid);
if ($groupid) {
- $groupselect = " AND (c.groupid='$groupid' OR c.groupid='0')";
+ $groupselect = " AND (c.groupid=:groupid OR c.groupid='0')";
} else {
$groupselect = "";
}
if (!empty($CFG->enablegroupings) && !(empty($groupingid))) {
- $groupingjoin = "INNER JOIN {$CFG->prefix}groups_members gm ON u.id = gm.userid
- INNER JOIN {$CFG->prefix}groupings_groups gg ON gm.groupid = gg.groupid AND gg.groupingid = $groupingid ";
+ $groupingjoin = "JOIN {groups_members} gm ON u.id = gm.userid
+ JOIN {groupings_groups} gg ON gm.groupid = gg.groupid AND gg.groupingid = :groupingid ";
} else {
$groupingjoin = '';
}
- return get_records_sql("SELECT DISTINCT u.id, u.firstname, u.lastname, u.picture, c.lastmessageping, c.firstping, u.imagealt
- FROM {$CFG->prefix}chat_users c
- INNER JOIN {$CFG->prefix}user u ON u.id = c.userid
- $groupingjoin
- WHERE c.chatid = '$chatid'
- $groupselect
- ORDER BY c.firstping ASC");
+ return $DB->get_records_sql("SELECT DISTINCT u.id, u.firstname, u.lastname, u.picture, c.lastmessageping, c.firstping, u.imagealt
+ FROM {chat_users} c
+ JOIN {user} u ON u.id = c.userid
+ $groupingjoin
+ WHERE c.chatid = :chatid
+ $groupselect
+ ORDER BY c.firstping ASC", $params);
}
function chat_get_latest_message($chatid, $groupid=0) {
global $DB;
- $params = array();
+ $params = array('chatid'=>$chatid, 'groupid'=>$groupid);
if ($groupid) {
- $groupselect = " AND (groupid=? OR groupid=0)";
- $params[] = $groupid;
+ $groupselect = "AND (groupid=:groupid OR groupid=0)";
} else {
$groupselect = "";
}
$sql = "SELECT *
FROM {chat_messages}
- WHERE chatid = ?
+ WHERE chatid = :chatid
$groupselect
ORDER BY timestamp DESC";
- $params[] = $chatid;
return $DB->get_record_sql($sql, $params, true);
}
// login if not already logged in
function chat_login_user($chatid, $version, $groupid, $course) {
- global $USER;
- if (($version != 'sockets') and $chatuser = get_record_select('chat_users', "chatid='$chatid' AND userid='$USER->id' AND groupid='$groupid'")) {
+ global $USER, $DB;
+
+ if (($version != 'sockets') and $chatuser = $DB->get_record('chat_users', array('chatid'=>$chatid, 'userid'=>$USER->id, 'groupid'=>$groupid))) {
$chatuser->version = $version;
$chatuser->ip = $USER->lastip;
$chatuser->lastping = time();
or ($chatuser->userid != $USER->id)) {
return false;
}
- if (!update_record('chat_users', $chatuser)) {
+ if (!$DB->update_record('chat_users', $chatuser)) {
return false;
}
} else {
}
- if (!insert_record('chat_users', $chatuser)) {
+ if (!$DB->insert_record('chat_users', $chatuser)) {
return false;
}
$message->system = 1;
$message->timestamp = time();
- if (!insert_record('chat_messages', $message)) {
+ if (!$DB->insert_record('chat_messages', $message)) {
print_error('cantinsert', 'chat');
}
}
function chat_delete_old_users() {
// Delete the old and in the way
-
- global $CFG;
+ global $CFG, $DB;
$timeold = time() - $CFG->chat_old_ping;
$timeoldext = time() - ($CFG->chat_old_ping*10); // JSless gui_basic needs much longer timeouts
- $query = "(version<>'basic' AND lastping<'$timeold') OR (version='basic' AND lastping<'$timeoldext')";
+ $query = "(version<>'basic' AND lastping<?) OR (version='basic' AND lastping<?)";
+ $params = array($timeold, $timeoldext);
- if ($oldusers = get_records_select('chat_users', $query) ) {
- delete_records_select('chat_users', $query);
+ if ($oldusers = $DB->get_records_select('chat_users', $query, $params) ) {
+ $DB->delete_records_select('chat_users', $query, $params);
foreach ($oldusers as $olduser) {
$message = new object();
$message->chatid = $olduser->chatid;
$message->system = 1;
$message->timestamp = time();
- if (!insert_record('chat_messages', $message)) {
+ if (!$DB->insert_record('chat_messages', $message)) {
print_error('cantinsert', 'chat');
}
}
function chat_update_chat_times($chatid=0) {
/// Updates chat records so that the next chat time is correct
+ global $DB;
$timenow = time();
+
+ $params = array('timenow'=>$timenow, 'chatid'=>$chatid);
+
if ($chatid) {
- if (!$chats[] = get_record_select("chat", "id = '$chatid' AND chattime <= '$timenow' AND schedule > '0'")) {
+ if (!$chats[] = $DB->get_record_select("chat", "id = :chatid AND chattime <= :timenow AND schedule > 0", $params)) {
return;
}
} else {
- if (!$chats = get_records_select("chat", "chattime <= '$timenow' AND schedule > '0'")) {
+ if (!$chats = $DB->get_records_select("chat", "chattime <= :timenow AND schedule > 0", $params)) {
return;
}
}
}
break;
}
- update_record("chat", $chat);
+ $DB->update_record("chat", $chat);
+
+ $event = new object(); // Update calendar too
- $event = NULL; // Update calendar too
- $cond = "modulename='chat' AND instance = {$chat->id}
- AND timestart != {$chat->chattime}";
- if ($event->id = get_field_select('event', 'id', $cond)) {
+ $cond = "modulename='chat' AND instance = :chatid AND timestart <> :chattime";
+ $params = array('chattime'=>$chat->chattime, 'chatid'=>$chatid);
+
+ if ($event->id = $DB->get_field_select('event', 'id', $cond, $params)) {
$event->timestart = $chat->chattime;
update_event($event);
}
/// Given a message object full of information, this function
/// formats it appropriately into text and html, then
/// returns the formatted data.
+ global $DB;
static $users; // Cache user lookups
if (isset($users[$message->userid])) {
$user = $users[$message->userid];
- } else if ($user = get_record('user', 'id', $message->userid, '','','','','id,picture,firstname,lastname')) {
+ } else if ($user = $DB->get_record('user', array('id'=>$message->userid), 'id,picture,firstname,lastname')) {
$users[$message->userid] = $user;
} else {
return NULL;
* @return array status array
*/
function chat_reset_userdata($data) {
- global $CFG;
+ global $CFG, $DB;
$componentstr = get_string('modulenameplural', 'chat');
$status = array();
if (!empty($data->reset_chat)) {
$chatessql = "SELECT ch.id
- FROM {$CFG->prefix}chat ch
- WHERE ch.course={$data->courseid}";
+ FROM {chat} ch
+ WHERE ch.course=?";
+ $params = array($data->courseid);
- delete_records_select('chat_messages', "chatid IN ($chatessql)");
- delete_records_select('chat_users', "chatid IN ($chatessql)");
+ $DB->delete_records_select('chat_messages', "chatid IN ($chatessql)", $params);
+ $DB->delete_records_select('chat_users', "chatid IN ($chatessql)", $params);
$status[] = array('component'=>$componentstr, 'item'=>get_string('removemessages', 'chat'), 'error'=>false);
}
if (! $cm = get_coursemodule_from_id('chat', $id)) {
print_error('invalidcoursemodule');
}
- if (! $chat = get_record('chat', 'id', $cm->instance)) {
+ if (! $chat = $DB->get_record('chat', array('id'=>$cm->instance))) {
print_error('invalidcoursemodule');
}
- if (! $course = get_record('course', 'id', $chat->course)) {
+ if (! $course = $DB->get_record('course', array('id'=>$chat->course))) {
print_error('coursemisconf');
}
$currentgroup = groups_get_activity_group($cm, true);
groups_print_activity_menu($cm, "report.php?id=$cm->id");
+ $params = array('currentgroup'=>$currentgroup, 'chatid'=>$chat->id, 'start'=>$start, 'end'=>$end);
if ($currentgroup) {
- $groupselect = " AND groupid = '$currentgroup'";
+ $groupselect = " AND groupid = :currentgroup";
} else {
$groupselect = "";
}
"report.php?id=$cm->id");
}
- if (!$messages = get_records_select('chat_messages', "chatid = $chat->id AND
- timestamp >= '$start' AND
- timestamp <= '$end' $groupselect", "timestamp ASC")) {
+ if (!$messages = $DB->get_records_select('chat_messages', "chatid = :chatid AND
+ timestamp >= :start AND
+ timestamp <= :end $groupselect", "timestamp ASC", $params)) {
print_heading(get_string('nomessages', 'chat'));
} else {
$currentgroup = false;
}
+ $params = array('currentgroup'=>$currentgroup, 'chatid'=>$chat->id, 'start'=>$start, 'end'=>$end);
+
if (!empty($currentgroup)) {
- $groupselect = " AND groupid = '$currentgroup'";
+ $groupselect = " AND groupid = :currentgroup";
} else {
$groupselect = "";
}
/// Delete a session if one has been specified
if ($deletesession and has_capability('mod/chat:deletelog', $context) and $confirmdelete and $start and $end and confirm_sesskey()) {
- delete_records_select('chat_messages', "chatid = $chat->id AND
- timestamp >= '$start' AND
- timestamp <= '$end' $groupselect");
+ $DB->delete_records_select('chat_messages', "chatid = :chatid AND timestamp >= :start AND
+ timestamp <= :end $groupselect", $params);
$strdeleted = get_string('deleted');
notify("$strdeleted: ".userdate($start).' --> '. userdate($end));
unset($deletesession);
/// Get the messages
if (empty($messages)) { /// May have already got them above
- if (!$messages = get_records_select('chat_messages', "chatid = '$chat->id' $groupselect", "timestamp DESC")) {
+ if (!$messages = $DB->get_records_select('chat_messages', "chatid = :chatid $groupselect", $params, "timestamp DESC")) {
print_heading(get_string('nomessages', 'chat'));
print_footer($course);
exit;
arsort($sessionusers);
foreach ($sessionusers as $sessionuser => $usermessagecount) {
- if ($user = get_record('user', 'id', $sessionuser)) {
+ if ($user = $DB->get_record('user', array('id'=>$sessionuser))) {
print_user_picture($user, $course->id, $user->picture);
echo ' '.fullname($user, true); // XXX TODO use capability instead of true
echo " ($usermessagecount)<br />";
if (! $chat = $DB->get_record('chat', array('id'=>$c))) {
print_error('coursemisconf');
}
- if (! $course = get_record('course', array('id'=>$chat->course))) {
+ if (! $course = $DB->get_record('course', array('id'=>$chat->course))) {
print_error('coursemisconf');
}
if (! $cm = get_coursemodule_from_instance('chat', $chat->id, $course->id)) {
groups_print_activity_menu($cm, "view.php?id=$cm->id");
if ($currentgroup) {
- $groupselect = " AND groupid = '$currentgroup'";
$groupparam = "&groupid=$currentgroup";
} else {
- $groupselect = "";
$groupparam = "";
}