version 1.238, 2015/02/12 21:22:07
|
version 1.244, 2018/12/27 18:14:25
|
Line 200 Returns
|
Line 200 Returns
|
|
|
use strict; |
use strict; |
use Apache::lonnet; |
use Apache::lonnet; |
|
use Apache::loncommon; |
use HTML::TokeParser(); |
use HTML::TokeParser(); |
use Apache::lonlocal; |
use Apache::lonlocal; |
use Mail::Send; |
|
use HTML::Entities; |
use HTML::Entities; |
use Encode; |
use Encode; |
use LONCAPA qw(:DEFAULT :match); |
use LONCAPA qw(:DEFAULT :match); |
Line 397 sub buildmsgid {
|
Line 397 sub buildmsgid {
|
} |
} |
|
|
sub unpackmsgid { |
sub unpackmsgid { |
my ($msgid,$folder,$skipstatus,$status_cache)=@_; |
my ($msgid,$folder,$skipstatus,$status_cache,$onlycid)=@_; |
$msgid=&unescape($msgid); |
$msgid=&unescape($msgid); |
my ($sendtime,$shortsubj,$fromname,$fromdomain,$count,$fromcid, |
my ($sendtime,$shortsubj,$fromname,$fromdomain,$count,$fromcid, |
$processid,$symb,$error) = split(/\:/,&unescape($msgid)); |
$processid,$symb,$error) = split(/\:/,&unescape($msgid)); |
|
if (!defined($processid)) { $fromcid = ''; } |
|
if (($onlycid) && ($onlycid ne $fromcid)) { |
|
return ($sendtime,'',$fromname,$fromdomain,'',$fromcid,'',$error); |
|
} |
$shortsubj = &unescape($shortsubj); |
$shortsubj = &unescape($shortsubj); |
$shortsubj = &HTML::Entities::decode($shortsubj); |
$shortsubj = &HTML::Entities::decode($shortsubj); |
$symb = &unescape($symb); |
$symb = &unescape($symb); |
if (!defined($processid)) { $fromcid = ''; } |
|
my %status=(); |
my %status=(); |
unless ($skipstatus) { |
unless ($skipstatus) { |
if (ref($status_cache)) { |
if (ref($status_cache)) { |
Line 421 sub unpackmsgid {
|
Line 424 sub unpackmsgid {
|
|
|
|
|
sub sendemail { |
sub sendemail { |
my ($to,$subject,$body,$to_uname,$to_udom,$user_lh)=@_; |
my ($to,$subject,$body,$to_uname,$to_udom,$user_lh,$attachmenturl)=@_; |
my $senderaddress=''; |
my $senderaddress=''; |
my $replytoaddress=''; |
my $replytoaddress=''; |
my $msgsent; |
my $msgsent; |
Line 457 sub sendemail {
|
Line 460 sub sendemail {
|
"*** ".($senderaddress?&mt_user($user_lh,'You can reply to this e-mail'):&mt_user($user_lh,'Please do not reply to this address.')."\n*** ". |
"*** ".($senderaddress?&mt_user($user_lh,'You can reply to this e-mail'):&mt_user($user_lh,'Please do not reply to this address.')."\n*** ". |
&mt_user($user_lh,'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; |
$attachmenturl = &Apache::lonnet::filelocation("",$attachmenturl); |
$msg->to($to); |
my $filesize = (stat($attachmenturl))[7]; |
$msg->subject('[LON-CAPA] '.$subject); |
if ($filesize > 1048576) { |
if ($replytoaddress) { |
# Don't send if it exceeds 1 MB. |
$msg->add('Reply-to',$replytoaddress); |
print '<p><span class="LC_error">' |
} |
.&mt('Email not sent. Attachment exceeds permitted length.') |
if ($senderaddress) { |
.'</span><br /></p>'; |
$msg->add('From',$senderaddress); |
} else { |
} |
# Otherwise build and send the email |
$msg->add('Content-type','text/plain; charset=UTF-8'); |
$subject = '[LON-CAPA] '.$subject; |
if (my $fh = $msg->open()) { |
&Apache::loncommon::mime_email($senderaddress, $to, $subject, $body, ,'', |
print $fh $body; |
'', $attachmenturl, '', ''); |
$fh->close; |
|
$msgsent = 1; |
$msgsent = 1; |
} |
} |
return $msgsent; |
return $msgsent; |
Line 478 sub sendemail {
|
Line 480 sub sendemail {
|
# ==================================================== Send notification emails |
# ==================================================== Send notification emails |
|
|
sub sendnotification { |
sub sendnotification { |
my ($to,$touname,$toudom,$subj,$crit,$text,$msgid)=@_; |
my ($to,$touname,$toudom,$subj,$crit,$text,$msgid,$attachmenturl)=@_; |
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 489 sub sendnotification {
|
Line 491 sub sendnotification {
|
$text=~s/\<\;/\</gs; |
$text=~s/\<\;/\</gs; |
$text=~s/\>\;/\>/gs; |
$text=~s/\>\;/\>/gs; |
my $homeserver = &Apache::lonnet::homeserver($touname,$toudom); |
my $homeserver = &Apache::lonnet::homeserver($touname,$toudom); |
|
my $hostname = &Apache::lonnet::hostname($homeserver); |
my $protocol = $Apache::lonnet::protocol{$homeserver}; |
my $protocol = $Apache::lonnet::protocol{$homeserver}; |
$protocol = 'http' if ($protocol ne 'https'); |
$protocol = 'http' if ($protocol ne 'https'); |
my $url = $protocol.'://'.&Apache::lonnet::hostname($homeserver). |
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 562 to access the full message.',$url);
|
Line 565 to access the full message.',$url);
|
} |
} |
$body = $bodybegin.$bodysubj.$sendtext.$bodyend; |
$body = $bodybegin.$bodysubj.$sendtext.$bodyend; |
} |
} |
if (&sendemail($addr,$subject,$body,$touname,$toudom,$user_lh)) { |
if (&sendemail($addr,$subject,$body,$touname,$toudom,$user_lh,$attachmenturl)) { |
$numsent ++; |
$numsent ++; |
} |
} |
} |
} |
Line 573 to access the full message.',$url);
|
Line 576 to access the full message.',$url);
|
my $htmlfree = &make_htmlfree($text); |
my $htmlfree = &make_htmlfree($text); |
$body = $bodybegin.$bodysubj.$htmlfree.$bodyend; |
$body = $bodybegin.$bodysubj.$htmlfree.$bodyend; |
} |
} |
if (&sendemail($to,$subject,$body,$touname,$toudom,$user_lh)) { |
if (&sendemail($to,$subject,$body,$touname,$toudom,$user_lh,$attachmenturl)) { |
$numsent ++; |
$numsent ++; |
} |
} |
} |
} |
Line 634 sub retrieve_author_res_msg {
|
Line 637 sub retrieve_author_res_msg {
|
my ($domain,$author)=($url=~/^($match_domain)\/($match_username)\//); |
my ($domain,$author)=($url=~/^($match_domain)\/($match_username)\//); |
my %errormsgs=&Apache::lonnet::dump('nohist_res_msgs',$domain,$author); |
my %errormsgs=&Apache::lonnet::dump('nohist_res_msgs',$domain,$author); |
my $msgs=''; |
my $msgs=''; |
foreach (keys(%errormsgs)) { |
foreach my $msg (keys(%errormsgs)) { |
if ($_=~/^\Q$url\E\_\d+$/) { |
if ($msg =~ /^\Q$url\E\_\d+$/) { |
my %content=&unpackagemsg($errormsgs{$_}); |
my %content=&unpackagemsg($errormsgs{$msg}); |
$msgs.='<p><img src="/adm/lonMisc/bomb.gif" /><b>'. |
$msgs.='<p><img src="/adm/lonMisc/bomb.gif" /><b>'. |
$content{'time'}.'</b>: '.$content{'message'}. |
$content{'time'}.'</b>: '.$content{'message'}. |
'<br /></p>'; |
'<br /></p>'; |
Line 654 sub del_url_author_res_msg {
|
Line 657 sub del_url_author_res_msg {
|
$url=&Apache::lonnet::declutter($url); |
$url=&Apache::lonnet::declutter($url); |
my ($domain,$author)=($url=~/^($match_domain)\/($match_username)\//); |
my ($domain,$author)=($url=~/^($match_domain)\/($match_username)\//); |
my @delmsgs=(); |
my @delmsgs=(); |
foreach (&Apache::lonnet::getkeys('nohist_res_msgs',$domain,$author)) { |
foreach my $msg (&Apache::lonnet::getkeys('nohist_res_msgs',$domain,$author)) { |
if ($_=~/^\Q$url\E\_\d+$/) { |
if ($msg =~ /^\Q$url\E\_\d+$/) { |
push (@delmsgs,$_); |
push (@delmsgs,$msg); |
} |
} |
} |
} |
return &Apache::lonnet::del('nohist_res_msgs',\@delmsgs,$domain,$author); |
return &Apache::lonnet::del('nohist_res_msgs',\@delmsgs,$domain,$author); |
Line 668 sub clear_author_res_msg {
|
Line 671 sub clear_author_res_msg {
|
$url=&Apache::lonnet::declutter($url); |
$url=&Apache::lonnet::declutter($url); |
my ($domain,$author)=($url=~/^($match_domain)\/($match_username)\//); |
my ($domain,$author)=($url=~/^($match_domain)\/($match_username)\//); |
my @delmsgs=(); |
my @delmsgs=(); |
foreach (&Apache::lonnet::getkeys('nohist_res_msgs',$domain,$author)) { |
foreach my $msg (&Apache::lonnet::getkeys('nohist_res_msgs',$domain,$author)) { |
if ($_=~/^\Q$url\E/) { |
if ($msg =~ /^\Q$url\E/) { |
push (@delmsgs,$_); |
push (@delmsgs,$msg); |
} |
} |
} |
} |
return &Apache::lonnet::del('nohist_res_msgs',\@delmsgs,$domain,$author); |
return &Apache::lonnet::del('nohist_res_msgs',\@delmsgs,$domain,$author); |
Line 681 sub clear_author_res_msg {
|
Line 684 sub clear_author_res_msg {
|
sub all_url_author_res_msg { |
sub all_url_author_res_msg { |
my ($author,$domain)=@_; |
my ($author,$domain)=@_; |
my %returnhash=(); |
my %returnhash=(); |
foreach (&Apache::lonnet::getkeys('nohist_res_msgs',$domain,$author)) { |
foreach my $msg (&Apache::lonnet::getkeys('nohist_res_msgs',$domain,$author)) { |
$_=~/^(.+)\_\d+/; |
$msg =~ /^(.+)\_\d+/; |
$returnhash{$1}=1; |
$returnhash{$1}=1; |
} |
} |
return %returnhash; |
return %returnhash; |
Line 742 sub user_crit_msg_raw {
|
Line 745 sub user_crit_msg_raw {
|
my $numperm = 0; |
my $numperm = 0; |
my $permlogmsgstatus; |
my $permlogmsgstatus; |
if ($critnotify) { |
if ($critnotify) { |
$numcrit = &sendnotification($critnotify,$user,$domain,$subject,1,$text,$msgid); |
$numcrit = &sendnotification($critnotify,$user,$domain,$subject,1,$text,$msgid,$attachmenturl); |
} |
} |
if ($toperm && $permemail) { |
if ($toperm && $permemail) { |
if ($critnotify && $numcrit) { |
if ($critnotify && $numcrit) { |
Line 751 sub user_crit_msg_raw {
|
Line 754 sub user_crit_msg_raw {
|
} |
} |
} |
} |
unless ($numperm) { |
unless ($numperm) { |
$numperm = &sendnotification($permemail,$user,$domain,$subject,1,$text,$msgid); |
$numperm = &sendnotification($permemail,$user,$domain,$subject,1,$text,$msgid,$attachmenturl); |
} |
} |
} |
} |
if ($toperm) { |
if ($toperm) { |
Line 886 sub user_normal_msg_raw {
|
Line 889 sub user_normal_msg_raw {
|
my $numperm = 0; |
my $numperm = 0; |
my $permlogmsgstatus; |
my $permlogmsgstatus; |
if ($notify) { |
if ($notify) { |
$numnotify = &sendnotification($notify,$user,$domain,$subject,0,$text,$msgid); |
$numnotify = &sendnotification($notify,$user,$domain,$subject,0,$text,$msgid,$attachmenturl); |
} |
} |
if ($toperm && $permemail) { |
if ($toperm && $permemail) { |
if ($notify && $numnotify) { |
if ($notify && $numnotify) { |
Line 896 sub user_normal_msg_raw {
|
Line 899 sub user_normal_msg_raw {
|
} |
} |
unless ($numperm) { |
unless ($numperm) { |
$numperm = &sendnotification($permemail,$user,$domain,$subject,0, |
$numperm = &sendnotification($permemail,$user,$domain,$subject,0, |
$text,$msgid); |
$text,$msgid,$attachmenturl); |
} |
} |
} |
} |
if ($toperm) { |
if ($toperm) { |
Line 926 sub user_normal_msg {
|
Line 929 sub user_normal_msg {
|
$domain,$user); |
$domain,$user); |
my $msgforward=$userenv{'msgforward'}; |
my $msgforward=$userenv{'msgforward'}; |
if ($msgforward) { |
if ($msgforward) { |
foreach (split(/\,/,$msgforward)) { |
foreach my $fwd (split(/\,/,$msgforward)) { |
my ($forwuser,$forwdomain)=split(/\:/,$_); |
my ($forwuser,$forwdomain)=split(/\:/,$fwd); |
push(@status, |
push(@status, |
&user_normal_msg_raw($forwuser,$forwdomain,$subject,$message, |
&user_normal_msg_raw($forwuser,$forwdomain,$subject,$message, |
$citation,$baseurl,$attachmenturl,$toperm, |
$citation,$baseurl,$attachmenturl,$toperm, |