[prev in list] [next in list] [prev in thread] [next in thread]
List: lon-capa-cvs
Subject: [LON-CAPA-cvs] cvs: loncom(version_2_11_X) /interface loncommon.pm
From: raeburn <raeburn () source ! lon-capa ! org>
Date: 2019-08-28 2:38:44
Message-ID: cvsraeburn1566959924 () cvsserver
[Download RAW message or body]
raeburn Wed Aug 28 02:38:44 2019 EDT
Modified files: (Branch: version_2_11_X)
/loncom/interface loncommon.pm
Log:
- For 2.11
Backport 1.1297
Index: loncom/interface/loncommon.pm
diff -u loncom/interface/loncommon.pm:1.1075.2.138 \
loncom/interface/loncommon.pm:1.1075.2.139
--- loncom/interface/loncommon.pm:1.1075.2.138 Sun Aug 25 22:56:14 2019
+++ loncom/interface/loncommon.pm Wed Aug 28 02:38:42 2019
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# a pile of common routines
#
-# $Id: loncommon.pm,v 1.1075.2.138 2019/08/25 22:56:14 raeburn Exp $
+# $Id: loncommon.pm,v 1.1075.2.139 2019/08/28 02:38:42 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -14180,6 +14180,12 @@
origmail (scalar - email address of recipient from loncapa.conf,
i.e., predates configuration by DC via domainprefs.pm
+$requname username of requester (if mailing type is helpdeskmail)
+
+$requdom domain of requester (if mailing type is helpdeskmail)
+
+$reqemail e-mail address of requester (if mailing type is helpdeskmail)
+
Returns: comma separated list of addresses to which to send e-mail.
=back
@@ -14189,7 +14195,7 @@
############################################################
############################################################
sub build_recipient_list {
- my ($defmail,$mailing,$defdom,$origmail) = @_;
+ my ($defmail,$mailing,$defdom,$origmail,$requname,$requdom,$reqemail) = @_;
my @recipients;
my ($otheremails,$lastresort,$allbcc,$addtext);
my %domconfig =
@@ -14230,10 +14236,97 @@
} elsif ($origmail ne '') {
$lastresort = $origmail;
}
+ if ($mailing eq 'helpdeskmail') {
+ if ((ref($domconfig{'contacts'}{'overrides'}) eq 'HASH') &&
+ (keys(%{$domconfig{'contacts'}{'overrides'}}))) {
+ my ($inststatus,$inststatus_checked);
+ if (($env{'user.name'} ne '') && ($env{'user.domain'} ne '') &&
+ ($env{'user.domain'} ne 'public')) {
+ $inststatus_checked = 1;
+ $inststatus = $env{'environment.inststatus'};
+ }
+ unless ($inststatus_checked) {
+ if (($requname ne '') && ($requdom ne '')) {
+ if (($requname =~ /^$match_username$/) &&
+ ($requdom =~ /^$match_domain$/) &&
+ (&Apache::lonnet::domain($requdom))) {
+ my $requhome = &Apache::lonnet::homeserver($requname,
+ $requdom);
+ unless ($requhome eq 'no_host') {
+ my %userenv = \
&Apache::lonnet::userenvironment($requdom,$requname,'inststatus'); + \
$inststatus = $userenv{'inststatus'}; + \
$inststatus_checked = 1; + }
+ }
+ }
+ }
+ unless ($inststatus_checked) {
+ if ($reqemail =~ /^[^\@]+\@[^\@]+$/) {
+ my %srch = (srchby => 'email',
+ srchdomain => $defdom,
+ srchterm => $reqemail,
+ srchtype => 'exact');
+ my %srch_results = &Apache::lonnet::usersearch(\%srch);
+ foreach my $uname (keys(%srch_results)) {
+ if (ref($srch_results{$uname}{'inststatus'}) eq 'ARRAY') \
{ + $inststatus = \
join(',',@{$srch_results{$uname}{'inststatus'}}); + \
$inststatus_checked = 1; + last;
+ }
+ }
+ unless ($inststatus_checked) {
+ my ($dirsrchres,%srch_results) = \
&Apache::lonnet::inst_directory_query(\%srch); + if \
($dirsrchres eq 'ok') { + foreach my $uname \
(keys(%srch_results)) { + if \
(ref($srch_results{$uname}{'inststatus'}) eq 'ARRAY') { + \
$inststatus = join(',',@{$srch_results{$uname}{'inststatus'}}); + \
$inststatus_checked = 1; + last;
+ }
+ }
+ }
+ }
+ }
+ }
+ if ($inststatus ne '') {
+ foreach my $status (split(/\:/,$inststatus)) {
+ if (ref($domconfig{'contacts'}{'overrides'}{$status}) eq \
'HASH') { + my @contacts = ('adminemail','supportemail');
+ foreach my $item (@contacts) {
+ if \
($domconfig{'contacts'}{'overrides'}{$status}{$item}) { + \
my $addr = $domconfig{'contacts'}{'overrides'}{$status}; + \
if (!grep(/^\Q$addr\E$/,@recipients)) { + \
push(@recipients,$addr); + }
+ }
+ }
+ $otheremails = \
$domconfig{'contacts'}{'overrides'}{$status}{'others'}; + \
if ($domconfig{'contacts'}{'overrides'}{$status}{'bcc'}) { + \
my @bccs = split(/,/,$domconfig{'contacts'}{'overrides'}{$status}{'bcc'}); + \
my @ok_bccs; + foreach my $bcc (@bccs) {
+ $bcc =~ s/^\s+//g;
+ $bcc =~ s/\s+$//g;
+ if ($bcc =~ m/^[^\@]+\@[^\@]+$/) {
+ if (!(grep(/^\Q$bcc\E$/,@ok_bccs))) {
+ push(@ok_bccs,$bcc);
+ }
+ }
+ }
+ if (@ok_bccs > 0) {
+ $allbcc = join(', ',@ok_bccs);
+ }
+ }
+ $addtext = \
$domconfig{'contacts'}{'overrides'}{$status}{'include'}; + \
last; + }
+ }
+ }
+ }
+ }
} elsif ($origmail ne '') {
$lastresort = $origmail;
}
-
if (($mailing eq 'helpdeskmail') && ($lastresort ne '')) {
unless (grep(/^\Q$defdom\E$/,&Apache::lonnet::current_machine_domains())) {
my $lonhost = $Apache::lonnet::perlvar{'lonHostID'};
_______________________________________________
LON-CAPA-cvs mailing list
LON-CAPA-cvs@mail.lon-capa.org
http://mail.lon-capa.org/mailman/listinfo/lon-capa-cvs
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic