--- loncom/auth/lonroles.pm 2016/10/27 21:06:00 1.319 +++ loncom/auth/lonroles.pm 2016/10/27 22:51:08 1.320 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # User Roles Screen # -# $Id: lonroles.pm,v 1.319 2016/10/27 21:06:00 raeburn Exp $ +# $Id: lonroles.pm,v 1.320 2016/10/27 22:51:08 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -396,38 +396,38 @@ sub handler { } if ($numdh) { # Is this an ad hoc custom role in a course/community? - if (my ($domain,$rolename,$coursenum) = ($envkey =~ m{^form\.cr/($match_domain)/\1\-domainconfig/(\w+)\./\1/($match_courseid)$})) { - if ($dhroles{$domain}) { - my @adhoc; - if ($env{'environment.adhocroles.'.$domain}) { - @adhoc = split(',',$env{'environment.adhocroles.'.$domain}); - } else { - my %adhocroles = &Apache::lonnet::userenvironment($env{'user.domain'},$env{'user.name'}, - 'adhocroles.'.$domain); - if (keys(%adhocroles)) { - @adhoc = split(',',$adhocroles{'adhocroles.'.$domain}); - }; - } - if ((@adhoc > 0) && ($rolename ne '')) { - if (grep(/^\Q$rolename\E$/,@adhoc)) { - if (&Apache::lonnet::check_adhoc_privs($domain,$coursenum,$update,$refresh,$now, - "cr/$domain/$domain".'-domainconfig/'.$rolename)) { - &Apache::lonnet::appenv({"environment.internal.$domain.$coursenum.cr/$domain/$domain". - '-domainconfig/'."$rolename.adhoc" => time}); - } - } else { - delete($env{$envkey}); - } - } else { - delete($env{$envkey}); - } - } else { - delete($env{$envkey}); - } - last; - } - } - } + if (my ($domain,$rolename,$coursenum) = ($envkey =~ m{^form\.cr/($match_domain)/\1\-domainconfig/(\w+)\./\1/($match_courseid)$})) { + if ($dhroles{$domain}) { + my @adhoc; + if ($env{'environment.adhocroles.'.$domain}) { + @adhoc = split(',',$env{'environment.adhocroles.'.$domain}); + } else { + my %adhocroles = &Apache::lonnet::userenvironment($env{'user.domain'},$env{'user.name'}, + 'adhocroles.'.$domain); + if (keys(%adhocroles)) { + @adhoc = split(',',$adhocroles{'adhocroles.'.$domain}); + } + } + if ((@adhoc > 0) && ($rolename ne '')) { + if (grep(/^\Q$rolename\E$/,@adhoc)) { + if (&Apache::lonnet::check_adhoc_privs($domain,$coursenum,$update,$refresh,$now, + "cr/$domain/$domain".'-domainconfig/'.$rolename)) { + &Apache::lonnet::appenv({"environment.internal.$domain.$coursenum.cr/$domain/$domain". + '-domainconfig/'."$rolename.adhoc" => time}); + } + } else { + delete($env{$envkey}); + } + } else { + delete($env{$envkey}); + } + } else { + delete($env{$envkey}); + } + last; + } + } + } } foreach $envkey (keys(%env)) { next if ($envkey!~/^user\.role\./);