version 1.245, 2020/06/09 21:32:32
|
version 1.251, 2024/02/08 03:02:12
|
Line 120 Critical message to a user
|
Line 120 Critical message to a user
|
|
|
New routine that respects "forward" and calls old routine |
New routine that respects "forward" and calls old routine |
|
|
=item * B<user_crit_msg($user, $domain, $subject, $message, $sendback, $nosentstore, $recipid, $attachmenturl, $permresults)>: |
=item * B<user_crit_msg($user, $domain, $subject, $message, $sendback, $toperm, $sentmessage, $nosentstore, $recipid, $attachmenturl, $permresults, $senthide)>: |
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 148 New routine that respects "forward" and
|
Line 148 New routine that respects "forward" and
|
|
|
=item * B<user_normal_msg($user, $domain, $subject, $message, $citation, |
=item * B<user_normal_msg($user, $domain, $subject, $message, $citation, |
$baseurl, $attachmenturl, $toperm, $sentmessage, $symb, $restitle, |
$baseurl, $attachmenturl, $toperm, $sentmessage, $symb, $restitle, |
$error,$nosentstore,$recipid,$permresults)>: |
$error,$nosentstore,$recipid,$permresults,$senthide)>: |
Sends a message to the $user at $domain, with subject $subject and message $message. |
Sends a message to the $user at $domain, with subject $subject and message $message. |
|
|
Additionally it will check if the user has a Forwarding address |
Additionally it will check if the user has a Forwarding address |
Line 218 use LONCAPA qw(:DEFAULT :match);
|
Line 218 use LONCAPA qw(:DEFAULT :match);
|
|
|
|
|
sub packagemsg { |
sub packagemsg { |
my ($subject,$message,$citation,$baseurl,$attachmenturl, |
my ($subject,$message,$citation,$baseurl,$attachmenturl,$recuser,$recdomain, |
$recuser,$recdomain,$msgid,$type,$crsmsgid,$symb,$error,$recipid)=@_; |
$msgid,$type,$crsmsgid,$symb,$error,$recipid,$senthide,$origmsgid)=@_; |
$message =&HTML::Entities::encode($message,'<>&"'); |
$message =&HTML::Entities::encode($message,'<>&"'); |
$citation=&HTML::Entities::encode($citation,'<>&"'); |
$citation=&HTML::Entities::encode($citation,'<>&"'); |
$subject =&HTML::Entities::encode($subject,'<>&"'); |
$subject =&HTML::Entities::encode($subject,'<>&"'); |
Line 229 sub packagemsg {
|
Line 229 sub packagemsg {
|
#remove machine specification |
#remove machine specification |
$attachmenturl =~ s|^https?://[^/]+/|/|; |
$attachmenturl =~ s|^https?://[^/]+/|/|; |
$attachmenturl =&HTML::Entities::encode($attachmenturl,'<>&"'); |
$attachmenturl =&HTML::Entities::encode($attachmenturl,'<>&"'); |
|
if ($senthide) { |
|
foreach my $item ($subject,$message) { |
|
if ($item ne '') { |
|
$item = 'Not shown due to IP block'; |
|
} |
|
} |
|
if ($attachmenturl ne '') { |
|
$attachmenturl = ''; |
|
} |
|
if ($citation ne '') { |
|
$citation = ''; |
|
} |
|
if ($msgid ne '') { |
|
$msgid = ''; |
|
} |
|
} |
my $course_context = &get_course_context(); |
my $course_context = &get_course_context(); |
my $now=time; |
my $now=time; |
|
my $ip = &Apache::lonnet::get_requestor_ip(); |
my $msgcount = &get_uniq(); |
my $msgcount = &get_uniq(); |
unless(defined($msgid)) { |
unless(defined($msgid)) { |
$msgid = &buildmsgid($now,$subject,$env{'user.name'},$env{'user.domain'}, |
$msgid = &buildmsgid($now,$subject,$env{'user.name'},$env{'user.domain'}, |
Line 250 sub packagemsg {
|
Line 267 sub packagemsg {
|
} |
} |
$result .= '<servername>'.$ENV{'SERVER_NAME'}.'</servername>'. |
$result .= '<servername>'.$ENV{'SERVER_NAME'}.'</servername>'. |
'<host>'.$ENV{'HTTP_HOST'}.'</host>'. |
'<host>'.$ENV{'HTTP_HOST'}.'</host>'. |
'<client>'.$ENV{'REMOTE_ADDR'}.'</client>'. |
'<client>'.$ip.'</client>'. |
'<browsertype>'.$env{'browser.type'}.'</browsertype>'. |
'<browsertype>'.$env{'browser.type'}.'</browsertype>'. |
'<browseros>'.$env{'browser.os'}.'</browseros>'. |
'<browseros>'.$env{'browser.os'}.'</browseros>'. |
'<browserversion>'.$env{'browser.version'}.'</browserversion>'. |
'<browserversion>'.$env{'browser.version'}.'</browserversion>'. |
Line 318 sub packagemsg {
|
Line 335 sub packagemsg {
|
} |
} |
} |
} |
} |
} |
|
if ($senthide) { |
|
$result .= '<senthide>$origmsgid</senthide>'; |
|
} |
return ($msgid,$result); |
return ($msgid,$result); |
} |
} |
|
|
Line 434 sub sendemail {
|
Line 454 sub sendemail {
|
$replytoaddress = 'do-not-reply@'.$hostname; |
$replytoaddress = 'do-not-reply@'.$hostname; |
} else { |
} else { |
my %senderemails; |
my %senderemails; |
my $have_sender; |
my ($have_sender,$setreplyto); |
if ($env{'form.reply_to_addr'}) { |
if ($env{'form.reply_to_addr'}) { |
my ($replytoname,$replytodom) = split(/:/,$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 (($replytoname eq $env{'user.name'} && $replytodom eq $env{'user.domain'})) { |
|
$setreplyto = 1; |
|
} else { |
if (&Apache::lonnet::homeserver($replytoname,$replytodom) ne 'no_host') { |
if (&Apache::lonnet::homeserver($replytoname,$replytodom) ne 'no_host') { |
%senderemails = |
%senderemails = |
&Apache::loncommon::getemails($replytoname,$replytodom); |
&Apache::loncommon::getemails($replytoname,$replytodom); |
$have_sender = 1; |
$have_sender = 1; |
|
$setreplyto = 1; |
} |
} |
} |
} |
} |
} |
Line 451 sub sendemail {
|
Line 474 sub sendemail {
|
foreach my $type ('permanentemail','critnotification','notification') { |
foreach my $type ('permanentemail','critnotification','notification') { |
if ($senderemails{$type}) { |
if ($senderemails{$type}) { |
($senderaddress) = split(/,/,$senderemails{$type}); |
($senderaddress) = split(/,/,$senderemails{$type}); |
last if ($senderaddress); |
if ($senderaddress) { |
|
if ($setreplyto) { |
|
$replytoaddress = $senderaddress; |
|
} |
|
last; |
|
} |
} |
} |
} |
} |
} |
} |
Line 490 sub sendnotification {
|
Line 518 sub sendnotification {
|
|
|
$text=~s/\<\;/\</gs; |
$text=~s/\<\;/\</gs; |
$text=~s/\>\;/\>/gs; |
$text=~s/\>\;/\>/gs; |
my $homeserver = &Apache::lonnet::homeserver($touname,$toudom); |
my $touhome = &Apache::lonnet::homeserver($touname,$toudom); |
my $hostname = &Apache::lonnet::hostname($homeserver); |
my $url = &Apache::lonnet::url_prefix('',$toudom,$touhome,'email'). |
my $protocol = $Apache::lonnet::protocol{$homeserver}; |
|
$protocol = 'http' if ($protocol ne 'https'); |
|
my $url = $protocol.'://'.$hostname. |
|
'/adm/email?username='.$touname.'&domain='.$toudom. |
'/adm/email?username='.$touname.'&domain='.$toudom. |
'&display='.&escape($msgid); |
'&display='.&escape($msgid); |
my ($sendtime,$shortsubj,$fromname,$fromdomain,$status,$fromcid, |
my ($sendtime,$shortsubj,$fromname,$fromdomain,$status,$fromcid, |
Line 538 to access the full message.',$url);
|
Line 563 to access the full message.',$url);
|
$subject = $subj; |
$subject = $subj; |
} |
} |
|
|
my ($blocked,$blocktext); |
my ($blocked,$blocktext,$clientip); |
|
$clientip = &Apache::lonnet::get_requestor_ip(); |
if (!$crit) { |
if (!$crit) { |
my %setters; |
my %setters; |
my ($startblock,$endblock) = |
my ($startblock,$endblock,$triggerblock,$by_ip,$blockdom) = |
&Apache::loncommon::blockcheck(\%setters,'com',$touname,$toudom); |
&Apache::loncommon::blockcheck(\%setters,'com',$clientip,$touname,$toudom); |
if ($startblock && $endblock) { |
if ($startblock && $endblock) { |
$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_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); |
$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); |
|
} elsif ($by_ip) { |
|
$blocked = 1; |
|
$blocktext = &mt_user($user_lh,'LON-CAPA messages sent to you will be inaccessible from your IP address [_1], because communication is being blocked for certain IP address(es).',$clientip); |
} |
} |
} |
} |
if ($userenv{'notifywithhtml'} ne '') { |
if ($userenv{'notifywithhtml'} ne '') { |
Line 708 sub store_instructor_comment {
|
Line 737 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,$attachmenturl,$permresults)=@_; |
$nosentstore,$recipid,$attachmenturl,$permresults,$senthide)=@_; |
# Check if allowed missing |
# Check if allowed missing |
my ($status,$packed_message); |
my ($status,$packed_message); |
my $msgid='undefined'; |
my $msgid='undefined'; |
Line 726 sub user_crit_msg_raw {
|
Line 755 sub user_crit_msg_raw {
|
$$sentmessage = $packed_message; |
$$sentmessage = $packed_message; |
} |
} |
if (!$nosentstore) { |
if (!$nosentstore) { |
(undef,my $packed_message_no_citation) = |
my ($sentmsgid,$packed_message_no_citation) = |
&packagemsg($subject,$message,undef,undef,$attachmenturl,$user, |
&packagemsg($subject,$message,undef,undef,$attachmenturl,$user, |
$domain,$msgid); |
$domain,$msgid,undef,undef,undef,undef,undef,$senthide,$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); |
if ($senthide && $sentmsgid) { |
|
&store_sent_mail($sentmsgid,$packed_message_no_citation); |
|
} else { |
|
&store_sent_mail($msgid,$packed_message_no_citation); |
|
} |
} |
} |
} |
} |
} else { |
} else { |
Line 780 sub user_crit_msg_raw {
|
Line 813 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,$attachmenturl,$permresults)=@_; |
$nosentstore,$recipid,$attachmenturl,$permresults,$senthide)=@_; |
my @status; |
my @status; |
my %userenv = &Apache::lonnet::get('environment',['msgforward'], |
my %userenv = &Apache::lonnet::get('environment',['msgforward'], |
$domain,$user); |
$domain,$user); |
Line 791 sub user_crit_msg {
|
Line 824 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,$attachmenturl,$permresults)); |
$recipid,$attachmenturl,$permresults,$senthide)); |
} |
} |
} 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,$permresults)); |
$attachmenturl,$permresults,$senthide)); |
} |
} |
if (wantarray) { |
if (wantarray) { |
return @status; |
return @status; |
Line 846 sub user_crit_received {
|
Line 879 sub user_crit_received {
|
sub user_normal_msg_raw { |
sub user_normal_msg_raw { |
my ($user,$domain,$subject,$message,$citation,$baseurl,$attachmenturl, |
my ($user,$domain,$subject,$message,$citation,$baseurl,$attachmenturl, |
$toperm,$currid,$newid,$sentmessage,$crsmsgid,$symb,$restitle, |
$toperm,$currid,$newid,$sentmessage,$crsmsgid,$symb,$restitle, |
$error,$nosentstore,$recipid,$permresults)=@_; |
$error,$nosentstore,$recipid,$permresults,$senthide)=@_; |
# Check if allowed missing |
# Check if allowed missing |
my ($status,$packed_message); |
my ($status,$packed_message); |
my $msgid='undefined'; |
my $msgid='undefined'; |
Line 868 sub user_normal_msg_raw {
|
Line 901 sub user_normal_msg_raw {
|
('email_status',{'recnewemail'=>time},$domain,$user); |
('email_status',{'recnewemail'=>time},$domain,$user); |
# Into sent-mail folder if sent mail storage required |
# Into sent-mail folder if sent mail storage required |
if (!$nosentstore) { |
if (!$nosentstore) { |
(undef,my $packed_message_no_citation) = |
my ($sentmsgid,$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, |
|
undef,$senthide,$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); |
if ($senthide && $sentmsgid) { |
|
&store_sent_mail($sentmsgid,$packed_message_no_citation); |
|
} else { |
|
&store_sent_mail($msgid,$packed_message_no_citation); |
|
} |
} |
} |
} |
} |
if (ref($newid) eq 'SCALAR') { |
if (ref($newid) eq 'SCALAR') { |
Line 923 sub user_normal_msg_raw {
|
Line 961 sub user_normal_msg_raw {
|
sub user_normal_msg { |
sub user_normal_msg { |
my ($user,$domain,$subject,$message,$citation,$baseurl,$attachmenturl, |
my ($user,$domain,$subject,$message,$citation,$baseurl,$attachmenturl, |
$toperm,$sentmessage,$symb,$restitle,$error,$nosentstore,$recipid, |
$toperm,$sentmessage,$symb,$restitle,$error,$nosentstore,$recipid, |
$permresults)=@_; |
$permresults,$senthide)=@_; |
my @status; |
my @status; |
my %userenv = &Apache::lonnet::get('environment',['msgforward'], |
my %userenv = &Apache::lonnet::get('environment',['msgforward'], |
$domain,$user); |
$domain,$user); |
Line 935 sub user_normal_msg {
|
Line 973 sub user_normal_msg {
|
&user_normal_msg_raw($forwuser,$forwdomain,$subject,$message, |
&user_normal_msg_raw($forwuser,$forwdomain,$subject,$message, |
$citation,$baseurl,$attachmenturl,$toperm, |
$citation,$baseurl,$attachmenturl,$toperm, |
undef,undef,$sentmessage,undef,$symb, |
undef,undef,$sentmessage,undef,$symb, |
$restitle,$error,$nosentstore,$recipid,$permresults)); |
$restitle,$error,$nosentstore,$recipid, |
|
$permresults,$senthide)); |
} |
} |
} else { |
} else { |
push(@status,&user_normal_msg_raw($user,$domain,$subject,$message, |
push(@status,&user_normal_msg_raw($user,$domain,$subject,$message, |
$citation,$baseurl,$attachmenturl,$toperm, |
$citation,$baseurl,$attachmenturl,$toperm, |
undef,undef,$sentmessage,undef,$symb, |
undef,undef,$sentmessage,undef,$symb, |
$restitle,$error,$nosentstore,$recipid,$permresults)); |
$restitle,$error,$nosentstore,$recipid, |
|
$permresults,$senthide)); |
} |
} |
if (wantarray) { |
if (wantarray) { |
return @status; |
return @status; |