version 1.209, 2007/05/10 00:50:52
|
version 1.213, 2008/09/13 02:37:26
|
Line 179 sub packagemsg {
|
Line 179 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 209 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 229 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 279 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 288 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 319 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 334 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 363 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 378 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 387 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 385 to access the full message.',$url);
|
Line 395 to access the full message.',$url);
|
sub newmail { |
sub newmail { |
if ((time-$env{'user.mailcheck.time'})>300) { |
if ((time-$env{'user.mailcheck.time'})>300) { |
my %what=&Apache::lonnet::get('email_status',['recnewemail']); |
my %what=&Apache::lonnet::get('email_status',['recnewemail']); |
&Apache::lonnet::appenv('user.mailcheck.time'=>time); |
&Apache::lonnet::appenv({'user.mailcheck.time'=>time}); |
if ($what{'recnewemail'}>0) { return 1; } |
if ($what{'recnewemail'}>0) { return 1; } |
} |
} |
return 0; |
return 0; |
Line 499 sub store_instructor_comment {
|
Line 509 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 518 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::critical( |
$status=&Apache::lonnet::cput('critical', {$msgid => $packed_message}, |
'put:'.$domain.':'.$user.':critical:'. |
$domain,$user); |
&escape($msgid).'='. |
|
&escape($packed_message),$homeserver); |
|
if (defined($sentmessage)) { |
if (defined($sentmessage)) { |
$$sentmessage = $packed_message; |
$$sentmessage = $packed_message; |
} |
} |
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 555 sub user_crit_msg_raw {
|
Line 563 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 572 sub user_crit_msg_raw {
|
Line 580 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 583 sub user_crit_msg {
|
Line 591 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 651 sub user_normal_msg_raw {
|
Line 660 sub user_normal_msg_raw {
|
undef,$crsmsgid,$symb,$error,$recipid); |
undef,$crsmsgid,$symb,$error,$recipid); |
|
|
# Store in user folder |
# Store in user folder |
$status=&Apache::lonnet::critical( |
$status= |
'put:'.$domain.':'.$user.':nohist_email:'. |
&Apache::lonnet::cput('nohist_email',{$msgid => $packed_message}, |
&escape($msgid).'='. |
$domain,$user); |
&escape($packed_message),$homeserver); |
|
# Save new message received time |
# Save new message received time |
&Apache::lonnet::put |
&Apache::lonnet::put |
('email_status',{'recnewemail'=>time},$domain,$user); |
('email_status',{'recnewemail'=>time},$domain,$user); |
Line 740 sub user_normal_msg {
|
Line 748 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,$senderhome) = @_; |
my ($msgsubj,$subj_prefix,$numsent,$stamp,$msgname,$msgdom,$msgcount,$context,$pid,$savemsg,$recusers,$recudoms,$baseurl,$attachmenturl,$symb,$error,$senderuname,$senderdom) = @_; |
my $sentsubj; |
my $sentsubj; |
if ($numsent > 1) { |
if ($numsent > 1) { |
$sentsubj = $subj_prefix.' ('.$numsent.' sent) '.$msgsubj; |
$sentsubj = $subj_prefix.' ('.$numsent.' sent) '.$msgsubj; |
Line 757 sub process_sent_mail {
|
Line 765 sub process_sent_mail {
|
&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); |
my $status = &store_sent_mail($sentmsgid,$sentmessage,$senderuname, |
my $status = &store_sent_mail($sentmsgid,$sentmessage,$senderuname, |
$senderdom,$senderhome); |
$senderdom); |
return $status; |
return $status; |
} |
} |
|
|
sub store_sent_mail { |
sub store_sent_mail { |
my ($msgid,$message,$senderuname,$senderdom,$senderhome) = @_; |
my ($msgid,$message,$senderuname,$senderdom) = @_; |
if ($senderuname eq '') { |
if ($senderuname eq '') { |
$senderuname = $env{'user.name'}; |
$senderuname = $env{'user.name'}; |
} |
} |
if ($senderdom eq '') { |
if ($senderdom eq '') { |
$senderdom = $env{'user.domain'}; |
$senderdom = $env{'user.domain'}; |
} |
} |
if ($senderhome eq '') { |
my $status =' '.&Apache::lonnet::cput('nohist_email_sent', |
$senderhome = $env{'user.home'}; |
{$msgid => $message}, |
} |
$senderdom,$senderuname); |
my $status =' '.&Apache::lonnet::critical( |
|
'put:'.$senderdom.':'.$senderuname.':nohist_email_sent:'. |
|
&escape($msgid).'='.&escape($message),$senderhome); |
|
return $status; |
return $status; |
} |
} |
|
|
Line 919 sub decide_receiver {
|
Line 924 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::loncommon::get_genlanguages(@userlangs); |
|
my $user_lh = Apache::localize->get_handle(@languages); |
|
return $user_lh; |
|
} |
|
|
=pod |
=pod |
|
|
=back |
=back |