version 1.614, 2007/11/13 23:05:45
|
version 1.615, 2007/11/15 21:24:51
|
Line 6440 END_BLOCK
|
Line 6440 END_BLOCK
|
} |
} |
|
|
sub user_rule_check { |
sub user_rule_check { |
my ($usershash,$checks,$alerts,$rulematch,$inst_results,$curr_rules) = @_; |
my ($usershash,$checks,$alerts,$rulematch,$inst_results,$curr_rules,$got_rules) = @_; |
my $response; |
my $response; |
if (ref($usershash) eq 'HASH') { |
if (ref($usershash) eq 'HASH') { |
my %got_rules; |
|
foreach my $user (keys(%{$usershash})) { |
foreach my $user (keys(%{$usershash})) { |
my ($uname,$udom) = split(/:/,$user); |
my ($uname,$udom) = split(/:/,$user); |
next if ($udom eq '' || $uname eq ''); |
next if ($udom eq '' || $uname eq ''); |
my ($userstatus,$id); |
my ($id,$newuser); |
if (ref($usershash->{$user}) eq 'HASH') { |
if (ref($usershash->{$user}) eq 'HASH') { |
$userstatus = $usershash->{$user}->{'status'}; |
$newuser = $usershash->{$user}->{'newuser'}; |
$id = $usershash->{$user}->{'id'}; |
$id = $usershash->{$user}->{'id'}; |
} |
} |
my $inst_response; |
my $inst_response; |
if (ref($checks) eq 'HASH') { |
if (ref($checks) eq 'HASH') { |
if (defined($checks->{'username'})) { |
if (defined($checks->{'username'})) { |
($inst_response,%{$inst_results}) = |
($inst_response,%{$inst_results->{$user}}) = |
&Apache::lonnet::get_instuser($udom,$uname); |
&Apache::lonnet::get_instuser($udom,$uname); |
} elsif (defined($checks->{'id'})) { |
} elsif (defined($checks->{'id'})) { |
($inst_response,%{$inst_results}) = |
($inst_response,%{$inst_results->{$user}}) = |
&Apache::lonnet::get_instuser($udom,undef,$id); |
&Apache::lonnet::get_instuser($udom,undef,$id); |
} |
} |
|
} else { |
|
($inst_response,%{$inst_results->{$user}}) = |
|
&Apache::lonnet::get_instuser($udom,$uname); |
|
return; |
} |
} |
if (!$got_rules{$udom}) { |
if (!$got_rules->{$udom}) { |
my %domconfig = &Apache::lonnet::get_dom('configuration', |
my %domconfig = &Apache::lonnet::get_dom('configuration', |
['usercreation'],$udom); |
['usercreation'],$udom); |
if (ref($domconfig{'usercreation'}) eq 'HASH') { |
if (ref($domconfig{'usercreation'}) eq 'HASH') { |
foreach my $item (keys(%{$checks})) { |
foreach my $item ('username','id') { |
if (ref($domconfig{'usercreation'}{$item.'_rule'}) eq 'ARRAY') { |
if (ref($domconfig{'usercreation'}{$item.'_rule'}) eq 'ARRAY') { |
$$curr_rules{$udom}{$item} = |
$$curr_rules{$udom}{$item} = |
$domconfig{'usercreation'}{$item.'_rule'}; |
$domconfig{'usercreation'}{$item.'_rule'}; |
} |
} |
} |
} |
} |
} |
$got_rules{$udom} = 1; |
$got_rules->{$udom} = 1; |
} |
} |
foreach my $item (keys(%{$checks})) { |
foreach my $item (keys(%{$checks})) { |
if (ref($$curr_rules{$udom}) eq 'HASH') { |
if (ref($$curr_rules{$udom}) eq 'HASH') { |
if (ref($$curr_rules{$udom}{$item}) eq 'ARRAY') { |
if (ref($$curr_rules{$udom}{$item}) eq 'ARRAY') { |
if (@{$$curr_rules{$udom}{$item}} > 0) { |
if (@{$$curr_rules{$udom}{$item}} > 0) { |
my %rule_check; |
|
my %rule_check = &Apache::lonnet::inst_rulecheck($udom,$uname,$id,$item,$$curr_rules{$udom}{$item}); |
my %rule_check = &Apache::lonnet::inst_rulecheck($udom,$uname,$id,$item,$$curr_rules{$udom}{$item}); |
foreach my $rule (@{$$curr_rules{$udom}{$item}}) { |
foreach my $rule (@{$$curr_rules{$udom}{$item}}) { |
if ($rule_check{$rule}) { |
if ($rule_check{$rule}) { |
$$rulematch{$user}{$item} = $rule; |
$$rulematch{$user}{$item} = $rule; |
if ($inst_response eq 'ok') { |
if ($inst_response eq 'ok') { |
if (keys(%{$inst_results}) == 0) { |
if (ref($inst_results) eq 'HASH') { |
if ($userstatus eq 'new') { |
if (ref($inst_results->{$user}) eq 'HASH') { |
$$alerts{$user}{$item} = 1; |
if (keys(%{$inst_results->{$user}}) == 0) { |
|
$$alerts{$item}{$udom}{$uname} = 1; |
|
} |
} |
} |
} |
} |
} |
} |
|
last; |
} |
} |
} |
} |
last; |
|
} |
} |
} |
} |
} |
} |
Line 6531 sub user_rule_formats {
|
Line 6535 sub user_rule_formats {
|
} |
} |
|
|
sub instrule_disallow_msg { |
sub instrule_disallow_msg { |
my ($checkitem,$domdesc,$count) = @_; |
my ($checkitem,$domdesc,$count,$mode) = @_; |
my $response; |
my $response; |
my %text = ( |
my %text = ( |
item => 'username', |
item => 'username', |
Line 6552 sub instrule_disallow_msg {
|
Line 6556 sub instrule_disallow_msg {
|
$text{'items'} = 'IDs'; |
$text{'items'} = 'IDs'; |
$text{'item'} = 'ID'; |
$text{'item'} = 'ID'; |
$text{'action'} = 'an ID'; |
$text{'action'} = 'an ID'; |
|
if ($count > 1) { |
|
$text{'item'} = 'IDs'; |
|
$text{'action'} = 'IDs'; |
|
} |
} |
} |
$response = &mt("The $text{'item'} you chose $text{'match'} the format of $text{'items'} defined for <span class=\"LC_cusr_emph\">[_1]</span>, but the $text{'item'} $text{'do'} not exist in the institutional directory.",$domdesc).'<br />'; |
$response = &mt("The $text{'item'} you chose $text{'match'} the format of $text{'items'} defined for <span class=\"LC_cusr_emph\">[_1]</span>, but the $text{'item'} $text{'do'} not exist in the institutional directory.",$domdesc).'<br />'; |
if ($checkitem eq 'username') { |
if ($mode eq 'upload') { |
$response .= &mt("You must choose $text{'action'} with a different format -- $text{'one'} that will not conflict with 'official' institutional $text{'items'}."); |
if ($checkitem eq 'username') { |
} elsif ($checkitem eq 'id') { |
$response .= &mt("You will need to modify your upload file so it will include $text{'action'} with a different format -- $text{'one'} that will not conflict with 'official' institutional $text{'items'}."); |
$response .= &mt("You must either choose $text{'action'} with a different format -- $text{'one'} that will not conflict with 'official' institutional $text{'items'}, or leave this field blank."); |
} elsif ($checkitem eq 'id') { |
|
$response .= &mt("Either upload a file which includes $text{'action'} with a different format -- $text{'one'} that will not conflict with 'official' institutional $text{'items'}, or when associating fields with data columns, omit an association for the ID/Student Number field."); |
|
} |
|
} else { |
|
if ($checkitem eq 'username') { |
|
$response .= &mt("You must choose $text{'action'} with a different format -- $text{'one'} that will not conflict with 'official' institutional $text{'items'}."); |
|
} elsif ($checkitem eq 'id') { |
|
$response .= &mt("You must either choose $text{'action'} with a different format -- $text{'one'} that will not conflict with 'official' institutional $text{'items'}, or leave the ID field blank."); |
|
} |
} |
} |
return $response; |
return $response; |
} |
} |