version 1.193, 2006/12/27 20:42:12
|
version 1.197, 2007/02/23 00:39:31
|
Line 246 sub sendemail {
|
Line 246 sub sendemail {
|
# ==================================================== Send notification emails |
# ==================================================== Send notification emails |
|
|
sub sendnotification { |
sub sendnotification { |
my ($to,$touname,$toudom,$subj,$crit,$text)=@_; |
my ($to,$touname,$toudom,$subj,$crit,$text,$msgid)=@_; |
my $sender=$env{'environment.firstname'}.' '.$env{'environment.lastname'}; |
my $sender=$env{'environment.firstname'}.' '.$env{'environment.lastname'}; |
unless ($sender=~/\w/) { |
unless ($sender=~/\w/) { |
$sender=$env{'user.name'}.'@'.$env{'user.domain'}; |
$sender=$env{'user.name'}.'@'.$env{'user.domain'}; |
Line 258 sub sendnotification {
|
Line 258 sub sendnotification {
|
my $url='http://'. |
my $url='http://'. |
$Apache::lonnet::hostname{&Apache::lonnet::homeserver($touname,$toudom)}. |
$Apache::lonnet::hostname{&Apache::lonnet::homeserver($touname,$toudom)}. |
'/adm/email?username='.$touname.'&domain='.$toudom; |
'/adm/email?username='.$touname.'&domain='.$toudom; |
my $body=(<<ENDMSG); |
my ($sendtime,$shortsubj,$fromname,$fromdomain,$status,$fromcid, |
You received a$critical message from $sender in LON-CAPA. The subject is |
$symb,$error) = &Apache::lonmsg::unpackmsgid($msgid); |
|
my $coursetext; |
|
if ($fromcid ne '') { |
|
$coursetext = "\n".&mt('Course').': '; |
|
if ($env{'course.'.$fromcid.'.description'} ne '') { |
|
$coursetext .= $env{'course.'.$fromcid.'.description'}; |
|
} else { |
|
my %coursehash = &Apache::lonnet::coursedescription($fromcid,); |
|
if ($coursehash{'description'} ne '') { |
|
$coursetext .= $coursehash{'description'}; |
|
} |
|
} |
|
$coursetext .= "\n\n"; |
|
} |
|
my $body = $coursetext. |
|
&mt('You received a'.$critical.' message from [_1] in LON-CAPA.',$sender).' '.&mt('The subject is |
|
|
$subj |
[_1] |
|
|
=== Excerpt ============================================================ |
',$subj)."\n". |
|
'=== '.&mt('Excerpt')." ============================================================ |
$text |
$text |
======================================================================== |
======================================================================== |
|
|
Use |
".&mt('Use |
|
|
$url |
[_1] |
|
|
to access the full message. |
to access the full message.',$url); |
ENDMSG |
|
&sendemail($to,'New'.$critical.' message from '.$sender,$body); |
&sendemail($to,'New'.$critical.' message from '.$sender,$body); |
} |
} |
# ============================================================= Check for email |
# ============================================================= Check for email |
Line 423 sub user_crit_msg_raw {
|
Line 438 sub user_crit_msg_raw {
|
my %userenv = &Apache::loncommon::getemails($user,$domain); |
my %userenv = &Apache::loncommon::getemails($user,$domain); |
if ($userenv{'critnotification'}) { |
if ($userenv{'critnotification'}) { |
&sendnotification($userenv{'critnotification'},$user,$domain,$subject,1, |
&sendnotification($userenv{'critnotification'},$user,$domain,$subject,1, |
$text); |
$text,$msgid); |
} |
} |
if ($toperm && $userenv{'permanentemail'}) { |
if ($toperm && $userenv{'permanentemail'}) { |
&sendnotification($userenv{'permanentemail'},$user,$domain,$subject,1, |
&sendnotification($userenv{'permanentemail'},$user,$domain,$subject,1, |
$text); |
$text,$msgid); |
} |
} |
# Log this |
# Log this |
&Apache::lonnet::logthis( |
&Apache::lonnet::logthis( |
Line 538 sub user_normal_msg_raw {
|
Line 553 sub user_normal_msg_raw {
|
unless (($env{'request.course.id'}) && |
unless (($env{'request.course.id'}) && |
(($env{'form.sendmode'} eq 'group') || |
(($env{'form.sendmode'} eq 'group') || |
(($env{'form.critmsg'}) || ($env{'form.sendbck'})) && |
(($env{'form.critmsg'}) || ($env{'form.sendbck'})) && |
(&Apache::lonnet::allowed('srm',$env{'request.course.id'}) |
(&Apache::lonnet::allowed('srm',$env{'request.course.id'}) |
|| &Apache::lonnet::allowed('srm',$env{'request.course.id'}. |
|| &Apache::lonnet::allowed('srm',$env{'request.course.id'}. |
'/'.$env{'request.course.sec'})))) { |
'/'.$env{'request.course.sec'})))) { |
(undef,my $packed_message_no_citation) = |
(undef,my $packed_message_no_citation) = |
&packagemsg($subject,$message,undef,$baseurl,$attachmenturl, |
&packagemsg($subject,$message,undef,$baseurl,$attachmenturl, |
$user,$domain,$currid,undef,$crsmsgid,$symb,$error); |
$user,$domain,$currid,undef,$crsmsgid,$symb,$error); |
Line 548 sub user_normal_msg_raw {
|
Line 563 sub user_normal_msg_raw {
|
&store_sent_mail($msgid,$packed_message_no_citation); |
&store_sent_mail($msgid,$packed_message_no_citation); |
} |
} |
} |
} |
} else { |
if (defined($newid)) { |
$status='no_host'; |
$$newid = $msgid; |
} |
} |
if (defined($newid)) { |
if (defined($sentmessage)) { |
$$newid = $msgid; |
$$sentmessage = $packed_message; |
} |
} |
if (defined($sentmessage)) { |
|
$$sentmessage = $packed_message; |
|
} |
|
|
|
# Notifications |
# Notifications |
my %userenv = &Apache::lonnet::get('environment',['notification', |
my %userenv = &Apache::lonnet::get('environment',['notification', |
'permanentemail'], |
'permanentemail'], |
$domain,$user); |
$domain,$user); |
if ($userenv{'notification'}) { |
if ($userenv{'notification'}) { |
&sendnotification($userenv{'notification'},$user,$domain,$subject,0, |
&sendnotification($userenv{'notification'},$user,$domain,$subject,0, |
$text); |
$text,$msgid); |
} |
} |
if ($toperm && $userenv{'permanentemail'}) { |
if ($toperm && $userenv{'permanentemail'}) { |
&sendnotification($userenv{'permanentemail'},$user,$domain,$subject,0, |
&sendnotification($userenv{'permanentemail'},$user,$domain,$subject,0, |
$text); |
$text,$msgid); |
} |
} |
&Apache::lonnet::log($env{'user.domain'},$env{'user.name'}, |
&Apache::lonnet::log($env{'user.domain'},$env{'user.name'}, |
$env{'user.home'}, |
$env{'user.home'}, |
'Sending '.$msgid.' to '.$user.' at '.$domain.' with status: '.$status); |
'Sending '.$msgid.' to '.$user.' at '.$domain.' with status: '.$status); |
|
} else { |
|
$status='no_host'; |
|
} |
return $status; |
return $status; |
} |
} |
|
|
Line 651 sub get_user_folders {
|
Line 665 sub get_user_folders {
|
return %userfolders; |
return %userfolders; |
} |
} |
|
|
|
sub secapply { |
|
my $rec=shift; |
|
my $defaultflag=shift; |
|
$rec=~s/\s+//g; |
|
$rec=~s/\@/\:/g; |
|
my ($adr,$sections_or_groups)=($rec=~/^([^\(]+)\(([^\)]+)\)/); |
|
if ($sections_or_groups) { |
|
foreach my $item (split(/\;/,$sections_or_groups)) { |
|
if (($item eq $env{'request.course.sec'}) || |
|
($defaultflag && ($item eq '*'))) { |
|
return $adr; |
|
} elsif ($env{'request.course.groups'}) { |
|
my @usersgroups = split(/:/,$env{'request.course.groups'}); |
|
if (grep(/^\Q$item\E$/,@usersgroups)) { |
|
return $adr; |
|
} |
|
} |
|
} |
|
} else { |
|
return $rec; |
|
} |
|
return ''; |
|
} |
|
|
|
=pod |
|
|
|
=over 4 |
|
|
|
=item * |
|
|
|
decide_receiver($feedurl,$author,$question,$course,$policy,$defaultflag); |
|
|
|
Arguments |
|
$feedurl - /res/ url of resource (only need if $author is true) |
|
$author,$question,$course,$policy - all true/false parameters |
|
if true will attempt to find the addresses of user that should receive |
|
this type of feedback (author - feedback to author of resource $feedurl, |
|
$question 'Resource Content Questions', $course 'Course Content Question', |
|
$policy 'Course Policy') |
|
(Additionally it also checks $env for whether the corresponding form.<name> |
|
element exists, for ease of use in a html response context) |
|
|
|
$defaultflag - (internal should be left blank) if true gather addresses |
|
that aren't for a section even if I have a section |
|
(used for reccursion internally, first we look for |
|
addresses for our specific section then we recurse |
|
and look for non section addresses) |
|
|
|
Returns |
|
$typestyle - string of html text, describing what addresses were found |
|
%to - a hash, which keys are addresses of users to send messages to |
|
the keys will look like name:domain |
|
|
|
=cut |
|
|
|
sub decide_receiver { |
|
my ($feedurl,$author,$question,$course,$policy,$defaultflag) = @_; |
|
&Apache::lonenc::check_decrypt(\$feedurl); |
|
my $typestyle=''; |
|
my %to=(); |
|
if ($env{'form.discuss'} eq 'author' ||$author) { |
|
$typestyle.='Submitting as Author Feedback<br />'; |
|
$feedurl=~ m{^/res/($LONCAPA::domain_re)/($LONCAPA::username_re)/}; |
|
$to{$2.':'.$1}=1; |
|
} |
|
my $cid = $env{'request.course.id'}; |
|
if ($env{'form.discuss'} eq 'question' ||$question) { |
|
$typestyle.=&mt('Submitting as Question').'<br />'; |
|
foreach my $item (split(/\,/,$env{'course.'.$cid.'.question.email'})) { |
|
my $rec=&secapply($item,$defaultflag); |
|
if ($rec) { $to{$rec}=1; } |
|
} |
|
} |
|
if ($env{'form.discuss'} eq 'course' ||$course) { |
|
$typestyle.=&mt('Submitting as Comment').'<br />'; |
|
foreach my $item (split(/\,/,$env{'course.'.$cid.'.comment.email'})) { |
|
my $rec=&secapply($item,$defaultflag); |
|
if ($rec) { $to{$rec}=1; } |
|
} |
|
} |
|
if ($env{'form.discuss'} eq 'policy' ||$policy) { |
|
$typestyle.=&mt('Submitting as Policy Feedback').'<br />'; |
|
foreach my $item (split(/\,/,$env{'course.'.$cid.'.policy.email'})) { |
|
my $rec=&secapply($item,$defaultflag); |
|
if ($rec) { $to{$rec}=1; } |
|
} |
|
} |
|
if ((scalar(%to) eq '0') && (!$defaultflag)) { |
|
($typestyle,%to)= |
|
&decide_receiver($feedurl,$author,$question,$course,$policy,1); |
|
} |
|
return ($typestyle,%to); |
|
} |
|
|
1; |
1; |
__END__ |
__END__ |
|
|