]> git.mjollnir.org Git - moodle.git/commitdiff
Ah! Now we're getting somewhere - chat reports look quite nice now!
authormoodler <moodler>
Mon, 21 Jul 2003 04:08:32 +0000 (04:08 +0000)
committermoodler <moodler>
Mon, 21 Jul 2003 04:08:32 +0000 (04:08 +0000)
mod/chat/report.php

index b00a30273d0fb19cc15bef96b8b2a1c5d39edf72..235ecdf2801cb493f29d9c3d1482b78f74febd1e 100644 (file)
@@ -5,7 +5,9 @@
     require_once("../../config.php");
     require_once("lib.php");
 
-    require_variable($id);    // Chat Module ID, or
+    require_variable($id);      // Chat Module ID, or
+    optional_variable($start, 0);  // Start of period
+    optional_variable($end, 0);    // End of period
 
     if (! $chat = get_record("chat", "id", $id)) {
         error("Course module is incorrect");
     $strchat  = get_string("modulename", "chat");
     $strchatreport  = get_string("chatreport", "chat");
 
+/// Print a session if once has been specified
+
+    if ($start and $end) {   // Show a full transcript
+
+        print_header("$course->shortname: $chat->name: $strchatreport", "$course->fullname",
+                     "$navigation <a href=\"index.php?id=$course->id\">$strchats</a> -> 
+                     <a href=\"view.php?id=$cm->id\">$chat->name</a> -> 
+                     <a href=\"report.php?id=$chat->id\">$strchatreport</a>", 
+                      "", "", true, "", navmenu($course, $cm));
+
+        if (!$messages = get_records_select("chat_messages", "chatid = $chat->id AND 
+                                                              timestamp > '$start' AND 
+                                                              timestamp < '$end'", "timestamp ASC")) {
+            print_heading(get_string("nomessages", "chat"));
+
+        } else {
+            echo "<p align=\"center\">".userdate($start)." --> ". userdate($end)."</p>";
+
+            print_simple_box_start("center");
+            foreach ($messages as $message) {  // We are walking FORWARDS through messages
+                $formatmessage = chat_format_message($message);
+                echo $formatmessage->html;
+            }
+            print_simple_box_end("center");
+        }
+
+        print_continue("report.php?id=$chat->id");
+        print_footer($course);
+        exit;
+    }
+
+
+/// Print the Sessions display
+
     print_header("$course->shortname: $chat->name: $strchatreport", "$course->fullname",
                  "$navigation <a href=\"index.php?id=$course->id\">$strchats</a> -> 
                  <a href=\"view.php?id=$cm->id\">$chat->name</a> -> $strchatreport", 
                   "", "", true, "", navmenu($course, $cm));
 
-/// Print the main part of the page
-
-    print_heading($chat->name);
 
-    print_simple_box( get_string("sessions", "chat"), "center");
+    print_heading($chat->name.": ".get_string("sessions", "chat"));
 
     if (!$messages = get_records("chat_messages", "chatid", $chat->id, "timestamp DESC")) {
         print_heading(get_string("nomessages", "chat"));
         exit;
     }
 
-    $sessiongap = 5 * 60;    // 5 minutes
+    /// Show all the sessions
+
+    $sessiongap = 5 * 60;    // 5 minutes silence means a new session
     $sessionend = 0;
     $sessionstart   = 0;
     $sessionusers = array();
     $lasttime   = 0;
 
-    foreach ($messages as $message) {  // We are walking BACKWARDS throuhg messages
+    foreach ($messages as $message) {  // We are walking BACKWARDS through the messages
         if (!$lasttime) {
             $lasttime = $message->timestamp;
         }
             $sessionend = $message->timestamp;
         }
         if (($lasttime - $message->timestamp) < $sessiongap) {  // Same session
-            if ($message->userid and !$message->system) {
-                $sessionusers[$message->userid] = $message->timestamp;  // Remember user
+            if ($message->userid and !$message->system) {       // Remember user and count messages
+                if (empty($sessionusers[$message->userid])) {
+                    $sessionusers[$message->userid] = 1;
+                } else {
+                    $sessionusers[$message->userid] ++;
+                }
             }
         } else {  
             $sessionstart = $lasttime;
 
             if ($sessionend - $sessionstart > 60 and count($sessionusers) > 1) {
 
-                print_heading(userdate($sessionstart)." --> ". userdate($sessionend));
+                echo "<p align=\"center\">".userdate($sessionstart)." --> ". userdate($sessionend)."</p>";
 
                 print_simple_box_start("center");
 
-                foreach ($sessionusers as $sessionuser => $lastusertime) {
+                arsort($sessionusers);
+                foreach ($sessionusers as $sessionuser => $usermessagecount) {
                     if ($user = get_record("user", "id", $sessionuser)) {
                         print_user_picture($user->id, $course->id, $user->picture);
-                        echo "&nbsp;$user->firstname $user->lastname<br clear=all />";
+                        echo "&nbsp;$user->firstname $user->lastname";
+                        echo "&nbsp;($usermessagecount) <br />";
                     }
                 }
 
+                echo "<p align=\"right\"><a href=\"report.php?id=$chat->id&start=$sessionstart&end=$sessionend\">see chat</a>";
                 print_simple_box_end();
             }
 
             $sessionend = $message->timestamp;
             $sessionusers = array();
-            $sessionusers[$message->userid] = $message->timestamp;  // Remember user
+            $sessionusers[$message->userid] = 1;
         }
         $lasttime = $message->timestamp;
     }