--- loncom/interface/lonchatfetch.pm	2003/03/29 01:39:10	1.9
+++ loncom/interface/lonchatfetch.pm	2003/07/24 17:53:59	1.12
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Chat Fetching
 #
-# $Id: lonchatfetch.pm,v 1.9 2003/03/29 01:39:10 www Exp $
+# $Id: lonchatfetch.pm,v 1.12 2003/07/24 17:53:59 matthew Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -29,7 +29,7 @@
 package Apache::lonchatfetch;
 
 use strict;
-use Apache::Constants qw(:common);
+use Apache::Constants qw(:common :http);
 use Apache::lontexconvert;
 use Apache::loncommon;
 use Apache::lonnet;
@@ -37,6 +37,12 @@ use Apache::lonnet;
 sub handler {
     my $r = shift;
 
+    if (! &Apache::lonnet::allowed('pch',$ENV{'request.course.id'}.
+             ($ENV{'request.course.sec'}?'/'.$ENV{'request.course.sec'}:''))
+        ) {
+        return HTTP_NOT_ACCEPTABLE;
+    }
+
     my $loaderror=&Apache::lonnet::overloaderror($r);
     if ($loaderror) { return $loaderror; }
     $loaderror=
@@ -57,8 +63,15 @@ sub handler {
     my @entries=split(/\:/,
        &Apache::lonnet::reply(
         "chatretr:$cdom:$cnum:$ENV{'user.domain'}:$ENV{'user.name'}",$chome));
-    my ($lastid)=($entries[$#entries]=~/^(\w+)/);
-    my ($thentime,$idnum)=split(/\_/,$lastid);
+# Figure out what the last valid entry-id is
+    my ($lastid,$thentime,$idnum);
+    foreach (@entries) {
+	$_=~/^(\w+)/;
+        if ($1 ne 'active_participant') {
+	    $lastid=$1;
+            ($thentime,$idnum)=split(/\_/,$lastid);
+	}
+    }
 # ----------------------------------------------------------- Can see identity?
     my $crs='/'.$ENV{'request.course.id'};
     if ($ENV{'request.course.sec'}) {
@@ -89,7 +102,12 @@ sub handler {
 					     &Apache::lonnet::unescape($msg));
 	    $contrib=&Apache::lonnet::unescape($contrib);
 	    $contrib=~s/\n/\<br \/\>/g;
-	    $contrib=&Apache::lontexconvert::msgtexconverted($contrib);
+	    ($contrib,my $errors)=&Apache::lontexconvert::msgtexconverted($contrib);
+	    if ($errors) { $contrib.="[Message not fully displayed due to incorrect embedded TeX]"; }
+	    if ($errors && $snum eq $ENV{'user.name'} &&
+		$sdom eq $ENV{'user.domain'} ) {
+		$contrib.="<br />[TeX error message: $errors]";
+	    }
 	    $contrib=~s/\n/ /g;
 	    $contrib=~s/\'/\&\#39\;/g;
 	    my $sender='';