--- 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; $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 {