MDL-14650, create a new table chat_messages_current to save latest 8 hours messages, could improve performance. The expired message will be deleted in chat_cron function
This commit is contained in:
@@ -337,6 +337,7 @@ class ChatDaemon {
|
||||
|
||||
// Commit to DB
|
||||
$DB->insert_record('chat_messages', $msg, false);
|
||||
$DB->insert_record('chat_messages_current', $msg, false);
|
||||
|
||||
// OK, now push it out to all users
|
||||
$this->message_broadcast($msg, $this->sets_info[$sessionid]['user']);
|
||||
@@ -431,6 +432,7 @@ class ChatDaemon {
|
||||
|
||||
// Commit to DB
|
||||
$DB->insert_record('chat_messages', $msg, false);
|
||||
$DB->insert_record('chat_messages_current', $msg, false);
|
||||
|
||||
// Undo the hack
|
||||
$msg->message = $origmsg;
|
||||
@@ -543,6 +545,7 @@ class ChatDaemon {
|
||||
$msg->timestamp = time();
|
||||
|
||||
$DB->insert_record('chat_messages', $msg, false);
|
||||
$DB->insert_record('chat_messages_current', $msg, false);
|
||||
$this->message_broadcast($msg, $this->sets_info[$sessionid]['user']);
|
||||
|
||||
return true;
|
||||
@@ -750,6 +753,7 @@ class ChatDaemon {
|
||||
|
||||
$this->trace('User has disconnected, destroying uid '.$info['userid'].' with SID '.$sessionid, E_USER_WARNING);
|
||||
$DB->insert_record('chat_messages', $msg, false);
|
||||
$DB->insert_record('chat_messages_current', $msg, false);
|
||||
|
||||
// *************************** IMPORTANT
|
||||
//
|
||||
|
||||
+22
-2
@@ -23,7 +23,7 @@
|
||||
<INDEX NAME="course" UNIQUE="false" FIELDS="course"/>
|
||||
</INDEXES>
|
||||
</TABLE>
|
||||
<TABLE NAME="chat_messages" COMMENT="Stores all the actual chat messages" PREVIOUS="chat" NEXT="chat_users">
|
||||
<TABLE NAME="chat_messages" COMMENT="Stores all the actual chat messages" PREVIOUS="chat" NEXT="chat_messages_current">
|
||||
<FIELDS>
|
||||
<FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" SEQUENCE="true" ENUM="false" NEXT="chatid"/>
|
||||
<FIELD NAME="chatid" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="false" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="id" NEXT="userid"/>
|
||||
@@ -43,7 +43,27 @@
|
||||
<INDEX NAME="timestamp-chatid" UNIQUE="false" FIELDS="timestamp, chatid" PREVIOUS="groupid"/>
|
||||
</INDEXES>
|
||||
</TABLE>
|
||||
<TABLE NAME="chat_users" COMMENT="Keeps track of which users are in which chat rooms" PREVIOUS="chat_messages">
|
||||
<TABLE NAME="chat_messages_current" COMMENT="Stores current session" PREVIOUS="chat_messages" NEXT="chat_users">
|
||||
<FIELDS>
|
||||
<FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" SEQUENCE="true" ENUM="false" NEXT="chatid"/>
|
||||
<FIELD NAME="chatid" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="false" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="id" NEXT="userid"/>
|
||||
<FIELD NAME="userid" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="false" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="chatid" NEXT="groupid"/>
|
||||
<FIELD NAME="groupid" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="false" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="userid" NEXT="system"/>
|
||||
<FIELD NAME="system" TYPE="int" LENGTH="1" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="groupid" NEXT="message"/>
|
||||
<FIELD NAME="message" TYPE="text" LENGTH="small" NOTNULL="true" SEQUENCE="false" ENUM="false" PREVIOUS="system" NEXT="timestamp"/>
|
||||
<FIELD NAME="timestamp" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="message"/>
|
||||
</FIELDS>
|
||||
<KEYS>
|
||||
<KEY NAME="primary" TYPE="primary" FIELDS="id" NEXT="chatid"/>
|
||||
<KEY NAME="chatid" TYPE="foreign" FIELDS="chatid" REFTABLE="chat" REFFIELDS="id" PREVIOUS="primary"/>
|
||||
</KEYS>
|
||||
<INDEXES>
|
||||
<INDEX NAME="userid" UNIQUE="false" FIELDS="userid" NEXT="groupid"/>
|
||||
<INDEX NAME="groupid" UNIQUE="false" FIELDS="groupid" PREVIOUS="userid" NEXT="timestamp-chatid"/>
|
||||
<INDEX NAME="timestamp-chatid" UNIQUE="false" FIELDS="timestamp, chatid" PREVIOUS="groupid"/>
|
||||
</INDEXES>
|
||||
</TABLE>
|
||||
<TABLE NAME="chat_users" COMMENT="Keeps track of which users are in which chat rooms" PREVIOUS="chat_messages_current">
|
||||
<FIELDS>
|
||||
<FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" SEQUENCE="true" ENUM="false" NEXT="chatid"/>
|
||||
<FIELD NAME="chatid" TYPE="int" LENGTH="11" NOTNULL="true" UNSIGNED="false" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="id" NEXT="userid"/>
|
||||
|
||||
+52
-2
@@ -1,6 +1,6 @@
|
||||
<?php //$Id$
|
||||
|
||||
// This file keeps track of upgrades to
|
||||
// This file keeps track of upgrades to
|
||||
// the chat module
|
||||
//
|
||||
// Sometimes, changes between versions involve
|
||||
@@ -21,9 +21,59 @@ function xmldb_chat_upgrade($oldversion=0) {
|
||||
|
||||
global $CFG, $THEME, $DB;
|
||||
|
||||
$dbman = $DB->get_manager();
|
||||
|
||||
$result = true;
|
||||
|
||||
//===== 1.9.0 upgrade line ======//
|
||||
if ($result && $oldversion < 2007101510) {
|
||||
|
||||
/// Define field id to be added to chat_messages_current
|
||||
$table = new xmldb_table('chat_messages_current');
|
||||
|
||||
$field = new xmldb_field('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null, null);
|
||||
$table->addField($field);
|
||||
|
||||
$field = new xmldb_field('chatid', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0', 'id');
|
||||
$table->addField($field);
|
||||
|
||||
$field = new xmldb_field('userid', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0', 'chatid');
|
||||
$table->addField($field);
|
||||
|
||||
$field = new xmldb_field('groupid', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0', 'userid');
|
||||
$table->addField($field);
|
||||
|
||||
$field = new xmldb_field('system', XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0', 'groupid');
|
||||
$table->addField($field);
|
||||
|
||||
$field = new xmldb_field('message', XMLDB_TYPE_TEXT, 'small', null, XMLDB_NOTNULL, null, null, null, null, 'system');
|
||||
$table->addField($field);
|
||||
|
||||
$field = new xmldb_field('timestamp', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0', 'message');
|
||||
$table->addField($field);
|
||||
|
||||
$key = new xmldb_key('primary', XMLDB_KEY_PRIMARY, array('id'));
|
||||
$table->addKey($key);
|
||||
|
||||
$key = new xmldb_key('chatid', XMLDB_KEY_FOREIGN, array('chatid'), 'chat', array('id'));
|
||||
$table->addKey($key);
|
||||
|
||||
$result = $result && $dbman->create_table($table);
|
||||
|
||||
$index = new xmldb_index('userid', XMLDB_INDEX_NOTUNIQUE, array('userid'));
|
||||
if (!$dbman->index_exists($table, $index)) {
|
||||
$result = $result && $dbman->add_index($table, $index);
|
||||
}
|
||||
|
||||
$index = new xmldb_index('groupid', XMLDB_INDEX_NOTUNIQUE, array('groupid'));
|
||||
if (!$dbman->index_exists($table, $index)) {
|
||||
$result = $result && $dbman->add_index($table, $index);
|
||||
}
|
||||
|
||||
$index = new xmldb_index('timestamp-chatid', XMLDB_INDEX_NOTUNIQUE, array('timestamp', 'chatid'));
|
||||
if (!$dbman->index_exists($table, $index)) {
|
||||
$result = $result && $dbman->add_index($table, $index);
|
||||
}
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
$newmessage->systrem = 0;
|
||||
$newmessage->message = $message;
|
||||
$newmessage->timestamp = time();
|
||||
if (!$DB->insert_record('chat_messages', $newmessage)) {
|
||||
if (!$DB->insert_record('chat_messages', $newmessage) && !$DB->insert_record('chat_messages_current', $newmessage)) {
|
||||
print_error('cantinsert', 'chat');
|
||||
}
|
||||
|
||||
@@ -141,7 +141,7 @@
|
||||
$options->para = false;
|
||||
$options->newlines = true;
|
||||
|
||||
$params = array('last'=>$last, 'groupid'=>$groupid, 'chatid'=>$chat->id, 'chatentered'=>$chatentered);
|
||||
$params = array('last'=>$last, 'groupid'=>$groupid, 'chatid'=>$chat->id, 'chatentered'=>$chatentered);
|
||||
|
||||
if ($newonly) {
|
||||
$lastsql = "AND timestamp > :last";
|
||||
@@ -151,7 +151,7 @@
|
||||
|
||||
$groupselect = $groupid ? "AND (groupid=:groupid OR groupid=0)" : "";
|
||||
|
||||
$messages = $DB->get_records_select("chat_messages",
|
||||
$messages = $DB->get_records_select("chat_messages_current",
|
||||
"chatid = :chatid AND timestamp > :chatentered $lastsql $groupselect", $params,
|
||||
"timestamp DESC");
|
||||
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
if (!$cm = get_coursemodule_from_instance('chat', $chat->id, $course->id)) {
|
||||
print_error('invalidcoursemodule');
|
||||
}
|
||||
|
||||
|
||||
$context = get_context_instance(CONTEXT_MODULE, $cm->id);
|
||||
|
||||
|
||||
require_login($course->id, false, $cm);
|
||||
|
||||
require_capability('mod/chat:chat',$context);
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
if (!$cm = get_coursemodule_from_instance('chat', $chat->id, $course->id)) {
|
||||
print_error('invalidcoursemodule');
|
||||
}
|
||||
|
||||
|
||||
require_login($course->id, false, $cm);
|
||||
|
||||
if (isguest()) {
|
||||
@@ -49,8 +49,8 @@
|
||||
$message->message = $chat_message;
|
||||
$message->timestamp = time();
|
||||
|
||||
if (!$DB->insert_record('chat_messages', $message)) {
|
||||
print_error('cantinsert', 'chat');
|
||||
if (!$DB->insert_record('chat_messages', $message) || !$DB->insert_record('chat_messages_current', $message)) {
|
||||
print_error('Could not insert a chat message!');
|
||||
}
|
||||
|
||||
$chatuser->lastmessageping = time() - 2;
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
|
||||
$groupselect = $chatuser->groupid ? " AND (groupid=:groupid OR groupid=0) " : "";
|
||||
|
||||
$messages = $DB->get_records_select("chat_messages",
|
||||
$messages = $DB->get_records_select("chat_messages_current",
|
||||
"chatid = :chatid AND timestamp > :lasttime $groupselect", $params,
|
||||
"timestamp ASC");
|
||||
|
||||
|
||||
@@ -133,7 +133,7 @@
|
||||
$newcriteria = "timestamp > :lasttime";
|
||||
}
|
||||
|
||||
$messages = $DB->get_records_select("chat_messages",
|
||||
$messages = $DB->get_records_select("chat_messages_current",
|
||||
"chatid = :chatid AND $newcriteria $groupselect", $params,
|
||||
"timestamp ASC");
|
||||
|
||||
|
||||
@@ -40,7 +40,8 @@
|
||||
$message->system = 0;
|
||||
$message->timestamp = time();
|
||||
|
||||
if (!$DB->insert_record('chat_messages', $message)) {
|
||||
if (!$DB->insert_record('chat_messages', $message) ||
|
||||
!$DB->insert_record('chat_messages_current', $message)) {
|
||||
print_error('cantinsert', 'chat');
|
||||
}
|
||||
|
||||
|
||||
+25
-16
@@ -3,12 +3,11 @@
|
||||
/// Library of functions and constants for module chat
|
||||
require_once($CFG->libdir.'/pagelib.php');
|
||||
|
||||
|
||||
// The HTML head for the message window to start with (<!-- nix --> is used to get some browsers starting with output
|
||||
$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";
|
||||
$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".padding(200);
|
||||
|
||||
// The HTML head for the message window to start with (with js scrolling)
|
||||
$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 type=\"text/javascript\">\n//<![CDATA[\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";
|
||||
$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 type=\"text/javascript\">\n//<![CDATA[\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".padding(200);
|
||||
|
||||
// The HTML code for standard empty pages (e.g. if a user was kicked out)
|
||||
$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=\"#FFFFFF\"></body></html>";
|
||||
@@ -20,9 +19,9 @@ $CHAT_HTMLHEAD_MSGINPUT = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transiti
|
||||
$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 type=\"text/javascript\">\n//<![CDATA[\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=\"#FFFFFF\" OnLoad=\"document.f.arsc_message.focus();document.f.arsc_message.select();\">";
|
||||
|
||||
// Dummy data that gets output to the browser as needed, in order to make it show output
|
||||
$CHAT_DUMMY_DATA = produce_data(200);
|
||||
$CHAT_DUMMY_DATA = padding(200);
|
||||
|
||||
function produce_data($n){
|
||||
function padding($n){
|
||||
$str = '';
|
||||
for($i=0; $i<$n; $i++){
|
||||
$str.='<!-- nix -->\n';
|
||||
@@ -108,6 +107,9 @@ function chat_delete_instance($id) {
|
||||
if (! $DB->delete_records('chat_messages', array('chatid'=>$chat->id))) {
|
||||
$result = false;
|
||||
}
|
||||
if (! $DB->delete_records('chat_messages_current', array('chatid'=>$chat->id))) {
|
||||
$result = false;
|
||||
}
|
||||
if (! $DB->delete_records('chat_users', array('chatid'=>$chat->id))) {
|
||||
$result = false;
|
||||
}
|
||||
@@ -202,7 +204,7 @@ function chat_print_recent_activity($course, $viewfullnames, $timestart) {
|
||||
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
|
||||
JOIN {chat_messages_current} 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))) {
|
||||
@@ -304,7 +306,13 @@ function chat_cron () {
|
||||
|
||||
$sql = "DELETE
|
||||
FROM {chat_messages}
|
||||
WHERE ($subselect) > 0 AND timestamp < ( ".time()." -($subselect) * 24 * 3600)";
|
||||
WHERE ($subselect) > 0 AND timestamp < ( ".time()." -($subselect) * 24 * 3600)";
|
||||
|
||||
$DB->execute($sql);
|
||||
|
||||
$sql = "DELETE
|
||||
FROM {chat_messages_current}
|
||||
WHERE timestamp < ( ".time()." - 8 * 3600)";
|
||||
|
||||
$DB->execute($sql);
|
||||
|
||||
@@ -392,11 +400,11 @@ function chat_get_users($chatid, $groupid=0, $groupingid=0) {
|
||||
} else {
|
||||
$groupselect = "";
|
||||
}
|
||||
|
||||
|
||||
if (!empty($CFG->enablegroupings) && !(empty($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 = '';
|
||||
}
|
||||
@@ -422,7 +430,7 @@ function chat_get_latest_message($chatid, $groupid=0) {
|
||||
}
|
||||
|
||||
$sql = "SELECT *
|
||||
FROM {chat_messages}
|
||||
FROM {chat_messages_current}
|
||||
WHERE chatid = :chatid
|
||||
$groupselect
|
||||
ORDER BY timestamp DESC";
|
||||
@@ -498,7 +506,7 @@ function chat_login_user($chatid, $version, $groupid, $course) {
|
||||
$message->system = 1;
|
||||
$message->timestamp = time();
|
||||
|
||||
if (!$DB->insert_record('chat_messages', $message)) {
|
||||
if (!$DB->insert_record('chat_messages', $message) || !$DB->insert_record('chat_messages_current', $message)) {
|
||||
print_error('cantinsert', 'chat');
|
||||
}
|
||||
}
|
||||
@@ -528,7 +536,7 @@ function chat_delete_old_users() {
|
||||
$message->system = 1;
|
||||
$message->timestamp = time();
|
||||
|
||||
if (!$DB->insert_record('chat_messages', $message)) {
|
||||
if (!$DB->insert_record('chat_messages', $message) || !$DB->insert_record('chat_messages_current', $message) ) {
|
||||
print_error('cantinsert', 'chat');
|
||||
}
|
||||
}
|
||||
@@ -627,7 +635,7 @@ function chat_format_message_manually($message, $courseid, $sender, $currentuser
|
||||
$output->text = $message->strtime.': '.get_string('message'.$message->message, 'chat', fullname($sender));
|
||||
$output->html = '<table class="chat-event"><tr'.$rowclass.'><td class="picture">'.$message->picture.'</td><td class="text">';
|
||||
$output->html .= '<span class="event">'.$output->text.'</span></td></tr></table>';
|
||||
$output->basic = '<dl><dt class="event">'.$message->strtime.': '.get_string('message'.$message->message, 'chat', fullname($sender)).'</dt></dl>';
|
||||
$output->basic = '<dl><dt class="event">'.$message->strtime.': '.get_string('message'.$message->message, 'chat', fullname($sender)).'</dt></dl>';
|
||||
|
||||
if($message->message == 'exit' or $message->message == 'enter') {
|
||||
$output->refreshusers = true; //force user panel refresh ASAP
|
||||
@@ -649,7 +657,7 @@ function chat_format_message_manually($message, $courseid, $sender, $currentuser
|
||||
$special = false;
|
||||
|
||||
if (substr($text, 0, 5) == 'beep ') {
|
||||
/// It's a beep!
|
||||
/// It's a beep!
|
||||
$special = true;
|
||||
$beepwho = trim(substr($text, 5));
|
||||
|
||||
@@ -688,9 +696,9 @@ function chat_format_message_manually($message, $courseid, $sender, $currentuser
|
||||
$output->html .= "<span class=\"title\">$outinfo</span>";
|
||||
if ($outmain) {
|
||||
$output->html .= ": $outmain";
|
||||
$output->basic = '<dl><dt class="title">'.$outinfo.':</dt><dd class="text">'.$outmain.'</dd></dl>';
|
||||
$output->basic = '<dl><dt class="title">'.$outinfo.':</dt><dd class="text">'.$outmain.'</dd></dl>';
|
||||
} else {
|
||||
$output->basic = '<dl><dt class="title">'.$outinfo.'</dt></dl>';
|
||||
$output->basic = '<dl><dt class="title">'.$outinfo.'</dt></dl>';
|
||||
}
|
||||
$output->html .= "</td></tr></table>";
|
||||
return $output;
|
||||
@@ -790,6 +798,7 @@ function chat_reset_userdata($data) {
|
||||
$params = array($data->courseid);
|
||||
|
||||
$DB->delete_records_select('chat_messages', "chatid IN ($chatessql)", $params);
|
||||
$DB->delete_records_select('chat_messages_current', "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);
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
/// This fragment is called by moodle_needs_upgrading() and /admin/index.php
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
$module->version = 2007101509; // The (date) version of this module
|
||||
$module->version = 2007101510; // The (date) version of this module
|
||||
$module->requires = 2007101509; // Requires this Moodle version
|
||||
$module->cron = 300; // How often should cron check this module (seconds)?
|
||||
|
||||
|
||||
+5
-5
@@ -6,7 +6,7 @@
|
||||
require_once('lib.php');
|
||||
require_once($CFG->libdir.'/blocklib.php');
|
||||
require_once('pagelib.php');
|
||||
|
||||
|
||||
$id = optional_param('id', 0, PARAM_INT);
|
||||
$c = optional_param('c', 0, PARAM_INT);
|
||||
$edit = optional_param('edit', -1, PARAM_BOOL);
|
||||
@@ -42,9 +42,9 @@
|
||||
|
||||
|
||||
require_course_login($course, true, $cm);
|
||||
|
||||
|
||||
$context = get_context_instance(CONTEXT_MODULE, $cm->id);
|
||||
|
||||
|
||||
// show some info for guests
|
||||
if (isguestuser()) {
|
||||
$navigation = build_navigation('', $cm);
|
||||
@@ -135,7 +135,7 @@
|
||||
if (!empty($USER->screenreader)) {
|
||||
$chattarget = "/mod/chat/gui_basic/index.php?id=$chat->id$groupparam";
|
||||
} else {
|
||||
$chattarget = "/mod/chat/gui_$CFG->chat_method/index.php?id=$chat->id$groupparam";
|
||||
$chattarget = "/mod/chat/gui_$CFG->chat_method/index.php?id=$chat->id$groupparam";
|
||||
}
|
||||
|
||||
echo '<p>';
|
||||
@@ -194,7 +194,7 @@
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
echo '</tr></table>';
|
||||
|
||||
print_footer($course);
|
||||
|
||||
Reference in New Issue
Block a user