--- loncom/interface/loncommon.pm 2015/08/05 18:47:21 1.1226 +++ loncom/interface/loncommon.pm 2015/08/09 21:43:18 1.1227 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # a pile of common routines # -# $Id: loncommon.pm,v 1.1226 2015/08/05 18:47:21 raeburn Exp $ +# $Id: loncommon.pm,v 1.1227 2015/08/09 21:43:18 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -9779,13 +9779,19 @@ sub user_rule_check { if ($checkid) { if (ref($usershash->{$user}) eq 'HASH') { if ($usershash->{$user}->{'id'} ne '') { - $by_id{$udom}{$usershash->{$user}->{'id'}} = 1; + $by_id{$udom}{$usershash->{$user}->{'id'}} = $uname; $userdoms{$udom} = 1; + if (ref($inst_results) eq 'HASH') { + $inst_results->{$uname.':'.$udom} = {}; + } } } } else { $by_username{$udom}{$uname} = 1; $userdoms{$udom} = 1; + if (ref($inst_results) eq 'HASH') { + $inst_results->{$uname.':'.$udom} = {}; + } } } foreach my $udom (keys(%userdoms)) { @@ -9795,8 +9801,8 @@ sub user_rule_check { if (ref($domconfig{'usercreation'}) eq 'HASH') { foreach my $item ('username','id') { if (ref($domconfig{'usercreation'}{$item.'_rule'}) eq 'ARRAY') { - $$curr_rules{$udom}{$item} = - $domconfig{'usercreation'}{$item.'_rule'}; + $$curr_rules{$udom}{$item} = + $domconfig{'usercreation'}{$item.'_rule'}; } } } @@ -9807,10 +9813,16 @@ sub user_rule_check { foreach my $udom (keys(%by_id)) { my ($outcome,$results) = &Apache::lonnet::get_multiple_instusers($udom,$by_id{$udom},'id'); if ($outcome eq 'ok') { + foreach my $id (keys(%{$by_id{$udom}})) { + my $uname = $by_id{$udom}{$id}; + $inst_response{$uname.':'.$udom} = $outcome; + } if (ref($results) eq 'HASH') { foreach my $uname (keys(%{$results})) { - $inst_response{$uname.':'.$udom} = $outcome; - $inst_results->{$uname.':'.$udom} = $results->{$uname}; + if (exists($inst_response{$uname.':'.$udom})) { + $inst_response{$uname.':'.$udom} = $outcome; + $inst_results->{$uname.':'.$udom} = $results->{$uname}; + } } } } @@ -9819,9 +9831,11 @@ sub user_rule_check { foreach my $udom (keys(%by_username)) { my ($outcome,$results) = &Apache::lonnet::get_multiple_instusers($udom,$by_username{$udom}); if ($outcome eq 'ok') { + foreach my $uname (keys(%{$by_username{$udom}})) { + $inst_response{$uname.':'.$udom} = $outcome; + } if (ref($results) eq 'HASH') { foreach my $uname (keys(%{$results})) { - $inst_response{$uname.':'.$udom} = $outcome; $inst_results->{$uname.':'.$udom} = $results->{$uname}; } } @@ -9876,8 +9890,15 @@ sub user_rule_check { my ($uname,$udom) = split(/:/,$user); next if (($udom eq '') || ($uname eq '')); my $id; - if (ref($usershash->{$user})) { - $id = $usershash->{$user}->{'id'}; + if (ref($inst_results) eq 'HASH') { + if (ref($inst_results->{$user}) eq 'HASH') { + $id = $inst_results->{$user}->{'id'}; + } + } + if ($id eq '') { + if (ref($usershash->{$user})) { + $id = $usershash->{$user}->{'id'}; + } } foreach my $item (keys(%{$checks})) { if (ref($$curr_rules{$udom}) eq 'HASH') { @@ -9893,6 +9914,10 @@ sub user_rule_check { if (ref($inst_results->{$user}) eq 'HASH') { if (keys(%{$inst_results->{$user}}) == 0) { $$alerts{$item}{$udom}{$uname} = 1; + } elsif ($item eq 'id') { + if ($inst_results->{$user}->{'id'} eq '') { + $$alerts{$item}{$udom}{$uname} = 1; + } } } }