--- loncom/interface/lonmsg.pm 2000/10/20 10:59:02 1.2
+++ loncom/interface/lonmsg.pm 2000/10/31 22:31:37 1.5
@@ -10,7 +10,7 @@
#
# 10/05 Gerd Kortemeyer)
#
-# 10/19,10/20 Gerd Kortemeyer
+# 10/19,10/20,10/30 Gerd Kortemeyer
package Apache::lonmsg;
@@ -18,18 +18,19 @@ use strict;
use Apache::lonnet();
use vars qw($msgcount);
use HTML::TokeParser;
+use Apache::Constants qw(:common);
# ===================================================================== Package
-sub package {
- var ($subject,$message)=@_;
+sub packagemsg {
+ my ($subject,$message)=@_;
$message=~s/\\<\;/g;
$message=~s/\>/\>\;/g;
$subject=~s/\\<\;/g;
$subject=~s/\>/\>\;/g;
my $now=time;
$msgcount++;
- $msgid=$now.'_'.$ENV{'user.name'}.'_'.
+ my $msgid=$now.'_'.$ENV{'user.name'}.'_'.
$ENV{'user.domain'}.'_'.$msgcount.'_'.$$;
return $msgid,
''.$ENV{'user.name'}.''.
@@ -53,7 +54,7 @@ sub package {
# ================================================== Unpack message into a hash
-sub unpackage {
+sub unpackagemsg {
my $message=shift;
my %content=();
my $parser=HTML::TokeParser->new(\$message);
@@ -79,9 +80,11 @@ sub author_res_msg {
if ($homeserver ne 'no_host') {
my $id=unpack("%32C*",$message);
my $msgid;
- ($msgid,$message)=package($filename,$message);
- return &Apache::lonnet::put(
- 'nohist_res_msgs',$filename.'_'.$id => $message);
+ ($msgid,$message)=&packagemsg($filename,$message);
+ return &Apache::lonnet::reply('put:'.$domain.':'.$author.
+ ':nohist_res_msgs:'.
+ &Apache::lonnet::escape($filename.'_'.$id).'='.
+ &Apache::lonnet::escape($message),$homeserver);
}
return 'no_host';
}
@@ -97,18 +100,21 @@ sub user_crit_msg {
my $homeserver=&Apache::lonnet::homeserver($user,$domain);
if ($homeserver ne 'no_host') {
my $msgid;
- ($msgid,$message)=package($filename,$message);
- $status=&Apache::lonnet::cput('critical',$msgid => $message);
+ ($msgid,$message)=&packagemsg($subject,$message);
+ $status=&Apache::lonnet::critical(
+ 'put:'.$domain.':'.$user.':critical:'.
+ &Apache::lonnet::escape($msgid).'='.
+ &Apache::lonnet::escape($message),$homeserver);
} else {
$status='no_host';
}
&Apache::lonnet::logthis(
- 'INFO: Sending critical email '.$msgid.
+ 'Sending critical email '.$msgid.
', log status: '.
&Apache::lonnet::log($ENV{'user.domain'},$ENV{'user.name'},
$ENV{'user.home'},
'Sending critical '.$msgid.' to '.$user.' at '.$domain.' with status: '
- .$status).'');
+ .$status));
return $status;
}
@@ -116,7 +122,22 @@ sub user_crit_msg {
sub user_crit_received {
my $message=shift;
-
+ my %contents=&unpackagemsg($message);
+ my $status='rec: '.
+ &user_normal_msg($contents{'sendername'},$contents{'senderdomain'},
+ 'Receipt: '.$ENV{'user.name'}.' at '.$ENV{'user.domain'},
+ 'User '.$ENV{'user.name'}.' at '.$ENV{'user.domain'}.
+ ' acknowledged receipt of message "'.
+ $contents{'subject'}.'" dated '.$contents{'time'}.".\n\n"
+ .'Message ID: '.$contents{'msgid'});
+ $status.=' trans: '.
+ &Apache::lonnet::put('nohist_email',$contents{'msgid'} => $message);
+ $status.=' del: '.
+ &Apache::lonnet::del('critical',$contents{'msgid'});
+ &Apache::lonnet::log($ENV{'user.domain'},$ENV{'user.name'},
+ $ENV{'user.home'},'Received critical message '.
+ $contents{'msgid'}.
+ ', '.$status);
}
# ======================================================== Normal communication
@@ -130,8 +151,11 @@ sub user_normal_msg {
my $homeserver=&Apache::lonnet::homeserver($user,$domain);
if ($homeserver ne 'no_host') {
my $msgid;
- ($msgid,$message)=package($filename,$message);
- $status=&Apache::lonnet::cput('nohist_email',$msgid => $message);
+ ($msgid,$message)=&packagemsg($subject,$message);
+ $status=&Apache::lonnet::critical(
+ 'put:'.$domain.':'.$user.':nohist_email:'.
+ &Apache::lonnet::escape($msgid).'='.
+ &Apache::lonnet::escape($message),$homeserver);
} else {
$status='no_host';
}
@@ -141,6 +165,27 @@ sub user_normal_msg {
return $status;
}
+# ===================================================================== Handler
+
+sub handler {
+ my $r=shift;
+
+# ----------------------------------------------------------- Set document type
+
+ $r->content_type('text/html');
+ $r->send_http_header;
+
+ return OK if $r->header_only;
+
+# --------------------------------------------------------------- Render Output
+
+ $r->print('
EMail and Messaging');
+ $r->print('');
+ $r->print('EMail
');
+ $r->print('');
+ return OK;
+
+}
# ================================================= Main program, reset counter
sub BEGIN {