--- loncom/interface/lonmsg.pm 2008/09/13 02:37:26 1.213
+++ loncom/interface/lonmsg.pm 2009/01/04 16:21:10 1.214.2.4
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Routines for messaging
#
-# $Id: lonmsg.pm,v 1.213 2008/09/13 02:37:26 raeburn Exp $
+# $Id: lonmsg.pm,v 1.214.2.4 2009/01/04 16:21:10 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -83,10 +83,10 @@ sub packagemsg {
$citation=&HTML::Entities::encode($citation,'<>&"');
$subject =&HTML::Entities::encode($subject,'<>&"');
#remove machine specification
- $baseurl =~ s|^http://[^/]+/|/|;
+ $baseurl =~ s|^https?\://[^/]+/|/|;
$baseurl =&HTML::Entities::encode($baseurl,'<>&"');
#remove machine specification
- $attachmenturl =~ s|^http://[^/]+/|/|;
+ $attachmenturl =~ s|^https?\://[^/]+/|/|;
$attachmenturl =&HTML::Entities::encode($attachmenturl,'<>&"');
my $course_context = &get_course_context();
my $now=time;
@@ -120,6 +120,9 @@ sub packagemsg {
''.$env{'request.role'}.''.
''.$env{'request.filename'}.''.
''.$msgid.'';
+ if (defined($env{'form.group'})) {
+ $result .= ''.$env{'form.group'}.'';
+ }
if (ref($recuser) eq 'ARRAY') {
for (my $i=0; $i<@{$recuser}; $i++) {
if ($type eq 'dcmail') {
@@ -280,21 +283,48 @@ sub unpackmsgid {
sub sendemail {
my ($to,$subject,$body,$to_uname,$to_udom,$user_lh)=@_;
- my %senderemails=&Apache::loncommon::getemails();
my $senderaddress='';
- foreach my $type ('notification','permanentemail','critnotification') {
- if ($senderemails{$type}) {
- $senderaddress=$senderemails{$type};
- }
+ my $replytoaddress='';
+ if ($env{'form.can_reply'} eq 'N') {
+ my $lonhost = $Apache::lonnet::perlvar{'lonHostID'};
+ my $hostname = &Apache::lonnet::hostname($lonhost);
+ $replytoaddress = 'do-not-reply@'.$hostname;
+ } else {
+ my %senderemails;
+ my $have_sender;
+ if ($env{'form.reply_to_addr'}) {
+ my ($replytoname,$replytodom) = split(/:/,$env{'form.reply_to_addr'});
+ if (!($replytoname eq $env{'user.name'} && $replytodom eq $env{'user.domain'})) {
+ if (&Apache::lonnet::homeserver($replytoname,$replytodom) ne 'no_host') {
+ %senderemails =
+ &Apache::loncommon::getemails($replytoname,$replytodom);
+ $have_sender = 1;
+ }
+ }
+ }
+ if (!$have_sender) {
+ %senderemails=&Apache::loncommon::getemails();
+ }
+ foreach my $type ('permanentemail','critnotification','notification') {
+ if ($senderemails{$type}) {
+ ($senderaddress) = split(/,/,$senderemails{$type});
+ last if ($senderaddress);
+ }
+ }
}
$body=
"*** ".&mt_user($user_lh,'This is an automatic message generated by the LON-CAPA system.')."\n".
"*** ".($senderaddress?&mt_user($user_lh,'You can reply to this message'):&mt_user($user_lh,'Please do not reply to this address.')."\n*** ".
- &mt_user($user_lh,'A reply will not be received by the recipient!'))."\n\n".$body;
+ &mt_user($user_lh,'A reply will not be received by the recipient!'))."\n\n".$body;
my $msg = new Mail::Send;
$msg->to($to);
$msg->subject('[LON-CAPA] '.$subject);
- if ($senderaddress) { $msg->add('Reply-to',$senderaddress); $msg->add('From',$senderaddress); }
+ if ($replytoaddress) {
+ $msg->add('Reply-to',$replytoaddress);
+ }
+ if ($senderaddress) {
+ $msg->add('From',$senderaddress);
+ }
if (my $fh = $msg->open()) {
print $fh $body;
$fh->close;
@@ -313,9 +343,11 @@ sub sendnotification {
$text=~s/\<\;/\/gs;
- my $url='http://'.
- &Apache::lonnet::hostname(&Apache::lonnet::homeserver($touname,$toudom)).
- '/adm/email?username='.$touname.'&domain='.$toudom;
+ my $homeserver = &Apache::lonnet::homeserver($touname,$toudom);
+ my $protocol = $Apache::lonnet::protocol{$homeserver};
+ $protocol = 'http' if ($protocol ne 'https');
+ my $url = $protocol.'://'.&Apache::lonnet::hostname($homeserver).
+ '/adm/email?username='.$touname.'&domain='.$toudom;
my ($sendtime,$shortsubj,$fromname,$fromdomain,$status,$fromcid,
$symb,$error) = &Apache::lonmsg::unpackmsgid($msgid);
my ($coursetext,$body,$bodybegin,$bodysubj,$bodyend);
@@ -688,8 +720,10 @@ sub user_normal_msg_raw {
$text,$msgid);
}
if ($toperm && $userenv{'permanentemail'}) {
- &sendnotification($userenv{'permanentemail'},$user,$domain,$subject,0,
- $text,$msgid);
+ if ((!$userenv{'notification'}) || ($userenv{'notification'} ne $userenv{'permanentemail'})) {
+ &sendnotification($userenv{'permanentemail'},$user,$domain,$subject,0,
+ $text,$msgid);
+ }
}
&Apache::lonnet::log($env{'user.domain'},$env{'user.name'},
$env{'user.home'},
@@ -748,7 +782,7 @@ sub user_normal_msg {
}
sub process_sent_mail {
- my ($msgsubj,$subj_prefix,$numsent,$stamp,$msgname,$msgdom,$msgcount,$context,$pid,$savemsg,$recusers,$recudoms,$baseurl,$attachmenturl,$symb,$error,$senderuname,$senderdom) = @_;
+ my ($msgsubj,$subj_prefix,$numsent,$stamp,$msgname,$msgdom,$msgcount,$context,$pid,$savemsg,$recusers,$recudoms,$baseurl,$attachmenturl,$symb,$error,$senderuname,$senderdom,$recipid) = @_;
my $sentsubj;
if ($numsent > 1) {
$sentsubj = $subj_prefix.' ('.$numsent.' sent) '.$msgsubj;
@@ -763,7 +797,7 @@ sub process_sent_mail {
&buildmsgid($stamp,$sentsubj,$msgname,$msgdom,$msgcount,$context,$pid);
(undef,my $sentmessage) =
&packagemsg($msgsubj,$savemsg,undef,$baseurl,$attachmenturl,$recusers,
- $recudoms,$sentmsgid,undef,undef,$symb,$error);
+ $recudoms,$sentmsgid,undef,undef,$symb,$error,$recipid);
my $status = &store_sent_mail($sentmsgid,$sentmessage,$senderuname,
$senderdom);
return $status;
@@ -931,7 +965,7 @@ sub user_lang {
@userlangs=(@userlangs,split(/\s*(\,|\;|\:)\s*/,
$env{'course.'.$fromcid.'.languages'}));
} else {
- my %langhash = &Apache::lonnet::get('environment',['languages'],$toudom,$touname);
+ my %langhash = &Apache::loncommon::getlangs($toudom,$touname);
if ($langhash{'languages'} ne '') {
@userlangs = split(/\s*(\,|\;|\:)\s*/,$langhash{'languages'});
} else {
@@ -941,7 +975,7 @@ sub user_lang {
}
}
}
- my @languages=&Apache::loncommon::get_genlanguages(@userlangs);
+ my @languages=&Apache::lonlocal::get_genlanguages(@userlangs);
my $user_lh = Apache::localize->get_handle(@languages);
return $user_lh;
}