--- loncom/lonnet/perl/lonnet.pm 2017/01/05 18:44:41 1.1333 +++ loncom/lonnet/perl/lonnet.pm 2017/01/28 03:49:00 1.1334 @@ -1,7 +1,7 @@ # The LearningOnline Network # TCP networking package # -# $Id: lonnet.pm,v 1.1333 2017/01/05 18:44:41 raeburn Exp $ +# $Id: lonnet.pm,v 1.1334 2017/01/28 03:49:00 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -4116,7 +4116,7 @@ sub flushcourselogs { } } # -# Reverse lookup of domain roles (dc, ad, li, sc, dh, au) +# Reverse lookup of domain roles (dc, ad, li, sc, dh, da, au) # my %domrolebuffer = (); foreach my $entry (keys(%domainrolehash)) { @@ -4263,7 +4263,7 @@ sub userrolelog { {$trole.':'.$username.':'.$domain.':'.$env{'user.name'}.':'.$env{'user.domain'}.':'} =$tend.':'.$tstart; } - if ($trole =~ /^(dc|ad|li|au|dg|sc|dh)/ ) { + if ($trole =~ /^(dc|ad|li|au|dg|sc|dh|da)/ ) { my (undef,$rudom,$runame,$rsec)=split(/\//,$area); $domainrolehash {$trole.':'.$username.':'.$domain.':'.$runame.':'.$rudom.':'.$rsec} @@ -4547,17 +4547,22 @@ sub get_my_adhocroles { } } if (($cdom ne '') && ($cnum ne '')) { - if ($env{"user.role.dh./$cdom/"}) { + if (($env{"user.role.dh./$cdom/"}) || ($env{"user.role.da./$cdom/"})) { my $then=$env{'user.login.time'}; my $update=$env{'user.update.time'}; my $liverole = 1; - my ($tstart,$tend)=split(/\./,$env{'user.role.dh./'.$cdom}); - my $limit = $update; - if ($env{'request.role'} eq 'dh./'.$cdom.'/') { - $limit = $then; + foreach my $role ('dh','da') { + if ($env{"user.role.$role./$cdom/"}) { + my ($tstart,$tend)=split(/\./,$env{"user.role.$role./$cdom"}); + my $limit = $update; + if ($env{'request.role'} eq "$role./$cdom/") { + $limit = $then; + } + if ($tstart && $tstart>$limit) { $liverole = 0; } + if ($tend && $tend <$limit) { $liverole = 0; } + last if ($liverole); + } } - if ($tstart && $tstart>$limit) { $liverole = 0; } - if ($tend && $tend <$limit) { $liverole = 0; } if ($liverole) { if (&homeserver($cnum,$cdom) ne 'no_host') { my ($accessref,$accessinfo,%access_in_dom); @@ -9127,7 +9132,8 @@ sub assignrole { &courserolelog($role,$uname,$udom,$url,$origstart,$origend,$delflag, $selfenroll,$context); } elsif (($role eq 'li') || ($role eq 'dg') || ($role eq 'sc') || - ($role eq 'au') || ($role eq 'dc') || ($role eq 'dh')) { + ($role eq 'au') || ($role eq 'dc') || ($role eq 'dh') || + ($role eq 'da')) { &domainrolelog($role,$uname,$udom,$url,$origstart,$origend,$delflag, $context); } elsif (($role eq 'ca') || ($role eq 'aa')) {