version 1.211, 2008/03/12 02:45:07
|
version 1.214.2.1, 2008/12/13 23:37:56
|
Line 120 sub packagemsg {
|
Line 120 sub packagemsg {
|
'<role>'.$env{'request.role'}.'</role>'. |
'<role>'.$env{'request.role'}.'</role>'. |
'<resource>'.$env{'request.filename'}.'</resource>'. |
'<resource>'.$env{'request.filename'}.'</resource>'. |
'<msgid>'.$msgid.'</msgid>'; |
'<msgid>'.$msgid.'</msgid>'; |
|
if (defined($env{'form.group'})) { |
|
$result .= '<group>'.$env{'form.group'}.'</group>'; |
|
} |
if (ref($recuser) eq 'ARRAY') { |
if (ref($recuser) eq 'ARRAY') { |
for (my $i=0; $i<@{$recuser}; $i++) { |
for (my $i=0; $i<@{$recuser}; $i++) { |
if ($type eq 'dcmail') { |
if ($type eq 'dcmail') { |
Line 179 sub packagemsg {
|
Line 182 sub packagemsg {
|
|
|
sub get_course_context { |
sub get_course_context { |
my $course_context; |
my $course_context; |
|
my $msgkey; |
if (defined($env{'form.replyid'})) { |
if (defined($env{'form.replyid'})) { |
|
$msgkey = $env{'form.replyid'}; |
|
} elsif (defined($env{'form.forwid'})) { |
|
$msgkey = $env{'form.forwid'} |
|
} elsif (defined($env{'form.multiforwid'})) { |
|
$msgkey = $env{'form.multiforwid'}; |
|
} |
|
if ($msgkey ne '') { |
my ($sendtime,$shortsubj,$fromname,$fromdomain,$count,$origcid)= |
my ($sendtime,$shortsubj,$fromname,$fromdomain,$count,$origcid)= |
split(/\:/,&unescape($env{'form.replyid'})); |
split(/\:/,&unescape($msgkey)); |
$course_context = $origcid; |
$course_context = $origcid; |
} |
} |
foreach my $key (keys(%env)) { |
foreach my $key (keys(%env)) { |
Line 201 sub get_course_context {
|
Line 212 sub get_course_context {
|
# ================================================== Unpack message into a hash |
# ================================================== Unpack message into a hash |
|
|
sub unpackagemsg { |
sub unpackagemsg { |
my ($message,$notoken)=@_; |
my ($message,$notoken,$noattachmentlink)=@_; |
my %content=(); |
my %content=(); |
my $parser=HTML::TokeParser->new(\$message); |
my $parser=HTML::TokeParser->new(\$message); |
my $token; |
my $token; |
Line 221 sub unpackagemsg {
|
Line 232 sub unpackagemsg {
|
} |
} |
} |
} |
if (!exists($content{'recuser'})) { $content{'recuser'} = []; } |
if (!exists($content{'recuser'})) { $content{'recuser'} = []; } |
if ($content{'attachmenturl'}) { |
if (($content{'attachmenturl'}) && (!$noattachmentlink)) { |
my ($fname)=($content{'attachmenturl'}=~m|/([^/]+)$|); |
my ($fname)=($content{'attachmenturl'}=~m|/([^/]+)$|); |
if ($notoken) { |
if ($notoken) { |
$content{'message'}.='<p>'.&mt('Attachment').': <tt>'.$fname.'</tt>'; |
$content{'message'}.='<p>'.&mt('Attachment').': <tt>'.$fname.'</tt>'; |
Line 271 sub unpackmsgid {
|
Line 282 sub unpackmsgid {
|
|
|
|
|
sub sendemail { |
sub sendemail { |
my ($to,$subject,$body)=@_; |
my ($to,$subject,$body,$to_uname,$to_udom,$user_lh)=@_; |
my %senderemails=&Apache::loncommon::getemails(); |
my %senderemails=&Apache::loncommon::getemails(); |
my $senderaddress=''; |
my $senderaddress=''; |
foreach my $type ('notification','permanentemail','critnotification') { |
foreach my $type ('notification','permanentemail','critnotification') { |
Line 280 sub sendemail {
|
Line 291 sub sendemail {
|
} |
} |
} |
} |
$body= |
$body= |
"*** ".&mt('This is an automatic message generated by the LON-CAPA system.')."\n". |
"*** ".&mt_user($user_lh,'This is an automatic message generated by the LON-CAPA system.')."\n". |
"*** ".($senderaddress?&mt('You can reply to this message'):&mt('Please do not reply to this address.')."\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('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; |
my $msg = new Mail::Send; |
$msg->to($to); |
$msg->to($to); |
$msg->subject('[LON-CAPA] '.$subject); |
$msg->subject('[LON-CAPA] '.$subject); |
Line 311 sub sendnotification {
|
Line 322 sub sendnotification {
|
my ($sendtime,$shortsubj,$fromname,$fromdomain,$status,$fromcid, |
my ($sendtime,$shortsubj,$fromname,$fromdomain,$status,$fromcid, |
$symb,$error) = &Apache::lonmsg::unpackmsgid($msgid); |
$symb,$error) = &Apache::lonmsg::unpackmsgid($msgid); |
my ($coursetext,$body,$bodybegin,$bodysubj,$bodyend); |
my ($coursetext,$body,$bodybegin,$bodysubj,$bodyend); |
|
my $user_lh = &user_lang($touname,$toudom,$fromcid); |
if ($fromcid ne '') { |
if ($fromcid ne '') { |
$coursetext = "\n".&mt('Course').': '; |
$coursetext = "\n".&mt_user($user_lh,'Course').': '; |
if ($env{'course.'.$fromcid.'.description'} ne '') { |
if ($env{'course.'.$fromcid.'.description'} ne '') { |
$coursetext .= $env{'course.'.$fromcid.'.description'}; |
$coursetext .= $env{'course.'.$fromcid.'.description'}; |
} else { |
} else { |
Line 325 sub sendnotification {
|
Line 337 sub sendnotification {
|
} |
} |
my @recipients = split(/,/,$to); |
my @recipients = split(/,/,$to); |
$bodybegin = $coursetext. |
$bodybegin = $coursetext. |
&mt('You received a'.$critical.' message from [_1] in LON-CAPA.',$sender).' '; |
&mt_user($user_lh, |
$bodysubj = &mt('The subject is |
'You received a'.$critical.' message from [_1] in LON-CAPA.',$sender).' '; |
|
$bodysubj = &mt_user($user_lh,'The subject is |
|
|
[_1] |
[_1] |
|
|
',$subj)."\n". |
',$subj)."\n". |
'=== '.&mt('Excerpt')." ============================================================ |
'=== '.&mt_user($user_lh,'Excerpt')." ============================================================ |
"; |
"; |
$bodyend = " |
$bodyend = " |
======================================================================== |
======================================================================== |
|
|
".&mt('Use |
".&mt_user($user_lh,'Use |
|
|
[_1] |
[_1] |
|
|
to access the full message.',$url); |
to access the full message.',$url); |
my %userenv = &Apache::lonnet::get('environment',['notifywithhtml'],$toudom,$touname); |
my %userenv = &Apache::lonnet::get('environment',['notifywithhtml'],$toudom,$touname); |
my $subject = &mt("'New' $critical message from ").$sender; |
my $subject = &mt_user($user_lh,"'New' $critical message from ").$sender; |
|
|
my ($blocked,$blocktext); |
my ($blocked,$blocktext); |
if (!$crit) { |
if (!$crit) { |
Line 353 to access the full message.',$url);
|
Line 366 to access the full message.',$url);
|
$blocked = 1; |
$blocked = 1; |
my $showstart = &Apache::lonlocal::locallocaltime($startblock); |
my $showstart = &Apache::lonlocal::locallocaltime($startblock); |
my $showend = &Apache::lonlocal::locallocaltime($endblock); |
my $showend = &Apache::lonlocal::locallocaltime($endblock); |
$blocktext = &mt('LON-CAPA messages sent to you between [_1] and [_2] will be inaccessible until the end of this time period, because you are a student in a course with an active communications block.',$showstart,$showend); |
$blocktext = &mt_user($user_lh,'LON-CAPA messages sent to you between [_1] and [_2] will be inaccessible until the end of this time period, because you are a student in a course with an active communications block.',$showstart,$showend); |
} |
} |
} |
} |
if ($userenv{'notifywithhtml'} ne '') { |
if ($userenv{'notifywithhtml'} ne '') { |
Line 368 to access the full message.',$url);
|
Line 381 to access the full message.',$url);
|
} |
} |
$body = $bodybegin.$bodysubj.$sendtext.$bodyend; |
$body = $bodybegin.$bodysubj.$sendtext.$bodyend; |
} |
} |
&sendemail($addr,$subject,$body); |
&sendemail($addr,$subject,$body,$touname,$toudom,$user_lh); |
} |
} |
} else { |
} else { |
if ($blocked) { |
if ($blocked) { |
Line 377 to access the full message.',$url);
|
Line 390 to access the full message.',$url);
|
$text =~ s/\<\/*[^\>]+\>//gs; |
$text =~ s/\<\/*[^\>]+\>//gs; |
$body = $bodybegin.$bodysubj.$text.$bodyend; |
$body = $bodybegin.$bodysubj.$text.$bodyend; |
} |
} |
&sendemail($to,$subject,$body); |
&sendemail($to,$subject,$body,$touname,$toudom,$user_lh); |
} |
} |
} |
} |
# ============================================================= Check for email |
# ============================================================= Check for email |
Line 499 sub store_instructor_comment {
|
Line 512 sub store_instructor_comment {
|
|
|
sub user_crit_msg_raw { |
sub user_crit_msg_raw { |
my ($user,$domain,$subject,$message,$sendback,$toperm,$sentmessage, |
my ($user,$domain,$subject,$message,$sendback,$toperm,$sentmessage, |
$nosentstore,$recipid)=@_; |
$nosentstore,$recipid,$attachmenturl)=@_; |
# Check if allowed missing |
# Check if allowed missing |
my ($status,$packed_message); |
my ($status,$packed_message); |
my $msgid='undefined'; |
my $msgid='undefined'; |
Line 508 sub user_crit_msg_raw {
|
Line 521 sub user_crit_msg_raw {
|
my $homeserver=&Apache::lonnet::homeserver($user,$domain); |
my $homeserver=&Apache::lonnet::homeserver($user,$domain); |
if ($homeserver ne 'no_host') { |
if ($homeserver ne 'no_host') { |
($msgid,$packed_message)=&packagemsg($subject,$message,undef,undef, |
($msgid,$packed_message)=&packagemsg($subject,$message,undef,undef, |
undef,undef,undef,undef,undef,undef,undef, |
$attachmenturl,undef,undef,undef,undef,undef, |
undef,$recipid); |
undef,undef,$recipid); |
if ($sendback) { $packed_message.='<sendback>true</sendback>'; } |
if ($sendback) { $packed_message.='<sendback>true</sendback>'; } |
$status=&Apache::lonnet::cput('critical', {$msgid => $packed_message}, |
$status=&Apache::lonnet::cput('critical', {$msgid => $packed_message}, |
$domain,$user); |
$domain,$user); |
Line 518 sub user_crit_msg_raw {
|
Line 531 sub user_crit_msg_raw {
|
} |
} |
if (!$nosentstore) { |
if (!$nosentstore) { |
(undef,my $packed_message_no_citation) = |
(undef,my $packed_message_no_citation) = |
&packagemsg($subject,$message,undef,undef,undef,$user,$domain, |
&packagemsg($subject,$message,undef,undef,$attachmenturl,$user, |
$msgid); |
$domain,$msgid); |
if ($status eq 'ok' || $status eq 'con_delayed') { |
if ($status eq 'ok' || $status eq 'con_delayed') { |
&store_sent_mail($msgid,$packed_message_no_citation); |
&store_sent_mail($msgid,$packed_message_no_citation); |
} |
} |
Line 553 sub user_crit_msg_raw {
|
Line 566 sub user_crit_msg_raw {
|
|
|
=pod |
=pod |
|
|
=item * B<user_crit_msg($user, $domain, $subject, $message, $sendback, $nosentstore,$recipid)>: |
=item * B<user_crit_msg($user, $domain, $subject, $message, $sendback, $nosentstore,$recipid,$attachmenturl)>: |
Sends a critical message $message to the $user at $domain. If $sendback |
Sends a critical message $message to the $user at $domain. If $sendback |
is true, a receipt will be sent to the current user when $user receives |
is true, a receipt will be sent to the current user when $user receives |
the message. |
the message. |
Line 570 sub user_crit_msg_raw {
|
Line 583 sub user_crit_msg_raw {
|
|
|
sub user_crit_msg { |
sub user_crit_msg { |
my ($user,$domain,$subject,$message,$sendback,$toperm,$sentmessage, |
my ($user,$domain,$subject,$message,$sendback,$toperm,$sentmessage, |
$nosentstore,$recipid)=@_; |
$nosentstore,$recipid,$attachmenturl)=@_; |
my @status; |
my @status; |
my %userenv = &Apache::lonnet::get('environment',['msgforward'], |
my %userenv = &Apache::lonnet::get('environment',['msgforward'], |
$domain,$user); |
$domain,$user); |
Line 581 sub user_crit_msg {
|
Line 594 sub user_crit_msg {
|
push(@status, |
push(@status, |
&user_crit_msg_raw($forwuser,$forwdomain,$subject,$message, |
&user_crit_msg_raw($forwuser,$forwdomain,$subject,$message, |
$sendback,$toperm,$sentmessage,$nosentstore, |
$sendback,$toperm,$sentmessage,$nosentstore, |
$recipid)); |
$recipid,$attachmenturl)); |
} |
} |
} else { |
} else { |
push(@status, |
push(@status, |
&user_crit_msg_raw($user,$domain,$subject,$message,$sendback, |
&user_crit_msg_raw($user,$domain,$subject,$message,$sendback, |
$toperm,$sentmessage,$nosentstore,$recipid)); |
$toperm,$sentmessage,$nosentstore,$recipid, |
|
$attachmenturl)); |
} |
} |
if (wantarray) { |
if (wantarray) { |
return @status; |
return @status; |
Line 677 sub user_normal_msg_raw {
|
Line 691 sub user_normal_msg_raw {
|
$text,$msgid); |
$text,$msgid); |
} |
} |
if ($toperm && $userenv{'permanentemail'}) { |
if ($toperm && $userenv{'permanentemail'}) { |
&sendnotification($userenv{'permanentemail'},$user,$domain,$subject,0, |
if ((!$userenv{'notification'}) || ($userenv{'notification'} ne $userenv{'permanentemail'})) { |
$text,$msgid); |
&sendnotification($userenv{'permanentemail'},$user,$domain,$subject,0, |
|
$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'}, |
Line 737 sub user_normal_msg {
|
Line 753 sub user_normal_msg {
|
} |
} |
|
|
sub process_sent_mail { |
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; |
my $sentsubj; |
if ($numsent > 1) { |
if ($numsent > 1) { |
$sentsubj = $subj_prefix.' ('.$numsent.' sent) '.$msgsubj; |
$sentsubj = $subj_prefix.' ('.$numsent.' sent) '.$msgsubj; |
Line 752 sub process_sent_mail {
|
Line 768 sub process_sent_mail {
|
&buildmsgid($stamp,$sentsubj,$msgname,$msgdom,$msgcount,$context,$pid); |
&buildmsgid($stamp,$sentsubj,$msgname,$msgdom,$msgcount,$context,$pid); |
(undef,my $sentmessage) = |
(undef,my $sentmessage) = |
&packagemsg($msgsubj,$savemsg,undef,$baseurl,$attachmenturl,$recusers, |
&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, |
my $status = &store_sent_mail($sentmsgid,$sentmessage,$senderuname, |
$senderdom); |
$senderdom); |
return $status; |
return $status; |
Line 913 sub decide_receiver {
|
Line 929 sub decide_receiver {
|
return ($typestyle,%to); |
return ($typestyle,%to); |
} |
} |
|
|
|
sub user_lang { |
|
my ($touname,$toudom,$fromcid) = @_; |
|
my @userlangs; |
|
if (($fromcid ne '') && ($env{'course.'.$fromcid.'.languages'} ne '')) { |
|
@userlangs=(@userlangs,split(/\s*(\,|\;|\:)\s*/, |
|
$env{'course.'.$fromcid.'.languages'})); |
|
} else { |
|
my %langhash = &Apache::lonnet::get('environment',['languages'],$toudom,$touname); |
|
if ($langhash{'languages'} ne '') { |
|
@userlangs = split(/\s*(\,|\;|\:)\s*/,$langhash{'languages'}); |
|
} else { |
|
my %domdefs = &Apache::lonnet::get_domain_defaults($toudom); |
|
if ($domdefs{'lang_def'} ne '') { |
|
@userlangs = ($domdefs{'lang_def'}); |
|
} |
|
} |
|
} |
|
my @languages=&Apache::lonlocal::get_genlanguages(@userlangs); |
|
my $user_lh = Apache::localize->get_handle(@languages); |
|
return $user_lh; |
|
} |
|
|
=pod |
=pod |
|
|
=back |
=back |