]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-14650, create a new table `chat_messages_current` to save latest 8 hours messages...
authordongsheng <dongsheng>
Thu, 24 Jul 2008 03:15:03 +0000 (03:15 +0000)
committerdongsheng <dongsheng>
Thu, 24 Jul 2008 03:15:03 +0000 (03:15 +0000)
12 files changed:
mod/chat/chatd.php
mod/chat/db/install.xml
mod/chat/db/upgrade.php
mod/chat/gui_basic/index.php
mod/chat/gui_header_js/index.php
mod/chat/gui_header_js/insert.php
mod/chat/gui_header_js/jsupdate.php
mod/chat/gui_header_js/jsupdated.php
mod/chat/gui_header_js/users.php
mod/chat/lib.php
mod/chat/version.php
mod/chat/view.php

index dd69746fbc9bc01e7e9df1bb3e608c1eba657a83..5b903a51f53875bdeb201e6083136e88db9910c2 100755 (executable)
@@ -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
         //
index 10134d0b8a5f5fec5360a081546b64f493680223..1cad1e1fe64e6c0d449365739738ea3aa5daad58 100644 (file)
@@ -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"/>
         <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"/>
index f2876317fda70d8b9c96a81c725fb4fe21dd149f..6f63201b4078bcce830069136e37a24c43f24ec9 100644 (file)
@@ -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;
 }
index 4a64cbb31a08d14bc9b0c62ae1b2a98e7079d684..c284dddaad890a881bd14e4352a1aa3fe6c060bb 100644 (file)
@@ -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');
             }
 
     $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";
 
     $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");
 
index f90af0777e80af56e53e2f40622843574b01ecd0..a468e6c567d3ce022649a43694d43c7f3ddb3d5b 100644 (file)
@@ -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);
index 406e7345a464f605d574b952ae0eb2bdf93ce7a7..4c0d6bacfd99e0b3cc62add1483e19e7bd48677a 100644 (file)
@@ -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;
index 87fed99ccef7f0decb1be1f9119655c338b52aeb..819628f3ad23a2989876aa4943178e842ca1f7c1 100644 (file)
@@ -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");
 
index 33f410b956f0e22811556aec28222151b066c30e..f2af38754ef008914366002cde0ca358f8178f67 100644 (file)
             $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");
         
index 991c6a94903e6366a77c1d526ded3958c95b3960..e623a2fd4ac23888c988ee04c263f881a944a103 100644 (file)
@@ -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');
         }
 
index 57217b48daa5083a49ecfb5988a59d0835bcaa17..da5ab75284a7344167e1a14509c713ec5dd7e1e4 100644 (file)
@@ -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);
     }
index c216f0d39b09ca83986cf3b1b0dfbf6925f9c1d5..632b37beaf5267e898ebc48d6e8ebae039215a09 100644 (file)
@@ -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)?
 
index 1def50e5318da534e0599f320a4e049fee68e2c7..caa37354ddefce80f9ee9f62404c4c0b2018b7a2 100644 (file)
@@ -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);
                 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>';
                 break;
         }
     }
-    
+
     echo '</tr></table>';
 
     print_footer($course);