version 1.208, 2007/05/09 23:53:15
|
version 1.212, 2008/06/06 05:24:28
|
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 351 to access the full message.',$url);
|
Line 359 to access the full message.',$url);
|
&Apache::loncommon::blockcheck(\%setters,'com',$touname,$toudom); |
&Apache::loncommon::blockcheck(\%setters,'com',$touname,$toudom); |
if ($startblock && $endblock) { |
if ($startblock && $endblock) { |
$blocked = 1; |
$blocked = 1; |
my $showstart = localtime($startblock); |
my $showstart = &Apache::lonlocal::locallocaltime($startblock); |
my $showend = localtime($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('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); |
} |
} |
} |
} |
Line 385 to access the full message.',$url);
|
Line 393 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 507 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 516 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 561 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 578 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 589 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 658 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 746 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 763 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; |
} |
} |
|
|