--- loncom/interface/lonmsg.pm 2000/10/20 10:59:02 1.2
+++ loncom/interface/lonmsg.pm 2000/10/20 18:06:08 1.4
@@ -21,15 +21,15 @@ use HTML::TokeParser;
# ===================================================================== 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 +53,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 +79,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 +99,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 +121,16 @@ sub user_crit_msg {
sub user_crit_received {
my $message=shift;
-
+ my %contents=&unpackagemsg($message);
+ &Apache::lonnet::log('Received critical message '.$contents{'msgid'});
+ &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'});
+ &Apache::lonnet::put('nohist_email',$contents{'msgid'} => $message);
+ &Apache::lonnet::del('critical',$contents{'msgid'});
}
# ======================================================== Normal communication
@@ -130,8 +144,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';
}