'.&mt('Validated course requests identified as processed by: [_1]',
- ''.$changes{'validation'}{'dc'}.'').'
';
- }
- }
- }
}
$resulttext .= '
';
if (keys(%newenv)) {
@@ -8046,11 +7662,6 @@ sub modify_selfcreation {
my ($dom,%domconfig) = @_;
my ($resulttext,$warningmsg,%curr_usercreation,%curr_usermodify,%changes,%cancreate);
my (%save_usercreate,%save_usermodify);
- my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom);
- if (ref($types) eq 'ARRAY') {
- $usertypes->{'default'} = $othertitle;
- push(@{$types},'default');
- }
#
# Retrieve current domain configuration for self-creation of usernames from $domconfig{'usercreation'}.
#
@@ -8102,7 +7713,7 @@ sub modify_selfcreation {
# Populate $cancreate{'selfcreate'} array reference with types of user, for which self-creation of user accounts
# is permitted.
#
- foreach my $item ('login','sso','email') {
+ foreach my $item ('login','sso','email') {
if ($item eq 'email') {
if ($env{'form.cancreate_email'} eq 'email') {
push(@{$cancreate{'selfcreate'}},'email');
@@ -8118,22 +7729,20 @@ sub modify_selfcreation {
my (@email_rule,%userinfo,%savecaptcha);
my ($infofields,$infotitles) = &Apache::loncommon::emailusername_info();
#
-# Populate $cancreate{'emailusername'}{$type} hash ref with information fields (if new user will provide data
-# value set to one), if self-creation with e-mail address permitted, where $type is user type: faculty, staff, student etc.
+# Populate $cancreate{'emailusername'} hash ref with information types (if new user will provide data
+# value set to one), if self-creation with e-mail address permitted.
#
if (($env{'form.cancreate_email'} eq 'email') || ($env{'form.cancreate_email'} eq 'emailapproval')) {
- push(@contexts,'emailusername');
- if (ref($types) eq 'ARRAY') {
- foreach my $type (@{$types}) {
- if (ref($infofields) eq 'ARRAY') {
- foreach my $field (@{$infofields}) {
- if ($env{'form.canmodify_emailusername_'.$type.'_'.$field} =~ /^(required|optional)$/) {
- $cancreate{'emailusername'}{$type}{$field} = $1;
- }
- }
+ push(@contexts,'emailusername');
+ map { $userinfo{$_} = 1; } &Apache::loncommon::get_env_multiple('form.canmodify_emailusername');
+ if (ref($infofields) eq 'ARRAY') {
+ foreach my $field (@{$infofields}) {
+ if ($userinfo{$field}) {
+ $cancreate{'emailusername'}{$field} = 1;
}
}
}
+
#
# Populate $cancreate{'notify'} hash ref with names of Domain Coordinators who are to be notified of
# queued requests for self-creation of account using e-mail address as username
@@ -8192,6 +7801,7 @@ sub modify_selfcreation {
&mt('You need to set the default authentication type to Kerberos 4 or 5 (with a Kerberos domain specified), or to Local authentication, if the localauth module has been customized in your domain to authenticate institutional logins.');
}
}
+ my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom);
my @fields = ('lastname','firstname','middlename','generation',
'permanentemail','id');
my %fieldtitles = &Apache::loncommon::personal_data_fieldtitles();
@@ -8204,12 +7814,14 @@ sub modify_selfcreation {
#
if (($env{'form.cancreate_login'}) || ($env{'form.cancreate_sso'})) {
if (ref($types) eq 'ARRAY') {
- if (@{$types} > 1) {
+ if (@{$types} > 0) {
@{$cancreate{'statustocreate'}} = &Apache::loncommon::get_env_multiple('form.statustocreate');
push(@contexts,'statustocreate');
} else {
undef($cancreate{'statustocreate'});
}
+ push(@{$types},'default');
+ $usertypes->{'default'} = $othertitle;
foreach my $type (@{$types}) {
my @modifiable = &Apache::loncommon::get_env_multiple('form.canmodify_'.$type);
foreach my $field (@fields) {
@@ -8262,42 +7874,17 @@ sub modify_selfcreation {
} elsif (ref($curr_usercreation{'cancreate'}{$item}) eq 'HASH') {
if (ref($cancreate{$item}) eq 'HASH') {
foreach my $curr (keys(%{$curr_usercreation{'cancreate'}{$item}})) {
- if (ref($curr_usercreation{'cancreate'}{$item}{$curr}) eq 'HASH') {
- foreach my $field (keys(%{$curr_usercreation{'cancreate'}{$item}{$curr}})) {
- unless ($curr_usercreation{'cancreate'}{$item}{$curr}{$field} eq $cancreate{$item}{$curr}{$field}) {
- if (!grep(/^$item$/,@{$changes{'cancreate'}})) {
- push(@{$changes{'cancreate'}},$item);
- }
- }
- }
- } else {
- if (!$cancreate{$item}{$curr}) {
- if (!grep(/^$item$/,@{$changes{'cancreate'}})) {
- push(@{$changes{'cancreate'}},$item);
- }
+ if (!$cancreate{$item}{$curr}) {
+ if (!grep(/^$item$/,@{$changes{'cancreate'}})) {
+ push(@{$changes{'cancreate'}},$item);
}
}
}
foreach my $field (keys(%{$cancreate{$item}})) {
- if (ref($cancreate{$item}{$field}) eq 'HASH') {
- foreach my $inner (keys(%{$cancreate{$item}{$field}})) {
- if (ref($curr_usercreation{'cancreate'}{$item}{$field}) eq 'HASH') {
- unless ($curr_usercreation{'cancreate'}{$item}{$field}{$inner} eq $cancreate{$item}{$field}{$inner}) {
- if (!grep(/^$item$/,@{$changes{'cancreate'}})) {
- push(@{$changes{'cancreate'}},$item);
- }
- }
- } else {
- if (!grep(/^$item$/,@{$changes{'cancreate'}})) {
- push(@{$changes{'cancreate'}},$item);
- }
- }
- }
- } else {
- if (!$curr_usercreation{'cancreate'}{$item}{$field}) {
- if (!grep(/^$item$/,@{$changes{'cancreate'}})) {
- push(@{$changes{'cancreate'}},$item);
- }
+ if (!$curr_usercreation{'cancreate'}{$item}{$field}) {
+ print STDERR "field $field in cancreate but not in curr\n";
+ if (!grep(/^$item$/,@{$changes{'cancreate'}})) {
+ push(@{$changes{'cancreate'}},$item);
}
}
}
@@ -8317,19 +7904,8 @@ sub modify_selfcreation {
}
}
} elsif ($item eq 'emailusername') {
- if (ref($cancreate{$item}) eq 'HASH') {
- foreach my $type (keys(%{$cancreate{$item}})) {
- if (ref($cancreate{$item}{$type}) eq 'HASH') {
- foreach my $field (keys(%{$cancreate{$item}{$type}})) {
- if ($cancreate{$item}{$type}{$field}) {
- if (!grep(/^$item$/,@{$changes{'cancreate'}})) {
- push(@{$changes{'cancreate'}},$item);
- }
- last;
- }
- }
- }
- }
+ if (keys(%userinfo) > 0) {
+ push(@{$changes{'cancreate'}},$item);
}
}
}
@@ -8459,23 +8035,17 @@ sub modify_selfcreation {
$chgtext .= '';
} elsif ($type eq 'emailusername') {
if (ref($cancreate{'emailusername'}) eq 'HASH') {
- if (ref($types) eq 'ARRAY') {
- foreach my $type (@{$types}) {
- if (ref($cancreate{'emailusername'}{$type}) eq 'HASH') {
- if (keys(%{$cancreate{'emailusername'}{$type}}) > 0) {
- $chgtext .= &mt('When self-creating account with e-mail as username, the following information will be provided by [_1]:',$usertypes->{$type}).
- '
';
- foreach my $field (@{$infofields}) {
- if ($cancreate{'emailusername'}{$type}{$field}) {
- $chgtext .= '
'.$infotitles->{$field}.'
';
- }
- }
- }
- $chgtext .= '
';
- } else {
- $chgtext .= &mt('When self creating account with e-mail as username, no information besides e-mail address will be provided by [_1].',$usertypes->{$type}).' ';
+ if (keys(%{$cancreate{'emailusername'}}) > 0) {
+ $chgtext .= &mt('When self-creating account with e-mail as username, user will provide the following information:').
+ '
';
+ foreach my $field (@{$infofields}) {
+ if ($cancreate{'emailusername'}{$field}) {
+ $chgtext .= '
'.$infotitles->{$field}.'
';
}
}
+ $chgtext .= '
';
+ } else {
+ $chgtext .= &mt('When self creating account with e-mail as username, user will not provide any information besides e-mail address');
}
}
} elsif ($type eq 'notify') {
@@ -8665,6 +8235,7 @@ sub modify_usermodification {
}
}
}
+# FIXME need to ensure selfcreate stuff is preserved
my %usermodification_hash = (
usermodification => \%modifyhash,
);
@@ -9390,7 +8961,6 @@ sub modify_coursedefaults {
}
}
}
-
my $officialcreds = $env{'form.official_credits'};
$officialcreds =~ s/[^\d.]+//g;
my $unofficialcreds = $env{'form.unofficial_credits'};
@@ -9418,8 +8988,7 @@ sub modify_coursedefaults {
if ($putresult eq 'ok') {
if (keys(%changes) > 0) {
my %domdefaults = &Apache::lonnet::get_domain_defaults($dom,1);
- if (($changes{'canuse_pdfforms'}) || ($changes{'coursecredits'}) ||
- ($changes{'uploadquota'})) {
+ if (($changes{'canuse_pdfforms'}) || ($changes{'coursecredits'}) || ($changes{'uploadquota'})) {
if ($changes{'canuse_pdfforms'}) {
$domdefaults{'canuse_pdfforms'}=$defaultshash{'coursedefaults'}{'canuse_pdfforms'};
}
@@ -9499,245 +9068,6 @@ sub modify_coursedefaults {
return $resulttext;
}
-sub modify_selfenrollment {
- my ($dom,$lastactref,%domconfig) = @_;
- my ($resulttext,$errors,%changes,%selfenrollhash,%ordered);
- my @types = ('official','unofficial','community','textbook');
- my %titles = &tool_titles();
- my %descs = &Apache::lonuserutils::selfenroll_default_descs();
- ($ordered{'admin'},my $titlesref) = &Apache::lonuserutils::get_selfenroll_titles();
- $ordered{'default'} = ['types','registered','approval','limit'];
-
- my (%roles,%shown,%toplevel);
- $roles{'0'} = &Apache::lonnet::plaintext('dc');
-
- if (ref($domconfig{'selfenrollment'}) ne 'HASH') {
- if ($domconfig{'selfenrollment'} eq '') {
- $domconfig{'selfenrollment'} = {};
- }
- }
- %toplevel = (
- admin => 'Configuration Rights',
- default => 'Default settings',
- validation => 'Validation of self-enrollment requests',
- );
- my ($itemsref,$namesref,$fieldsref) = &Apache::lonuserutils::selfenroll_validation_types();
-
- if (ref($ordered{'admin'}) eq 'ARRAY') {
- foreach my $item (@{$ordered{'admin'}}) {
- foreach my $type (@types) {
- if ($env{'form.selfenrolladmin_'.$item.'_'.$type}) {
- $selfenrollhash{'admin'}{$type}{$item} = 1;
- } else {
- $selfenrollhash{'admin'}{$type}{$item} = 0;
- }
- if (ref($domconfig{'selfenrollment'}{'admin'}) eq 'HASH') {
- if (ref($domconfig{'selfenrollment'}{'admin'}{$type}) eq 'HASH') {
- if ($selfenrollhash{'admin'}{$type}{$item} ne
- $domconfig{'selfenrollment'}{'admin'}{$type}{$item}) {
- push(@{$changes{'admin'}{$type}},$item);
- }
- } else {
- if (!$selfenrollhash{'admin'}{$type}{$item}) {
- push(@{$changes{'admin'}{$type}},$item);
- }
- }
- } elsif (!$selfenrollhash{'admin'}{$type}{$item}) {
- push(@{$changes{'admin'}{$type}},$item);
- }
- }
- }
- }
-
- foreach my $item (@{$ordered{'default'}}) {
- foreach my $type (@types) {
- my $value = $env{'form.selfenrolldefault_'.$item.'_'.$type};
- if ($item eq 'types') {
- unless (($value eq 'all') || ($value eq 'dom')) {
- $value = '';
- }
- } elsif ($item eq 'registered') {
- unless ($value eq '1') {
- $value = 0;
- }
- } elsif ($item eq 'approval') {
- unless ($value =~ /^[012]$/) {
- $value = 0;
- }
- } else {
- unless (($value eq 'allstudents') || ($value eq 'selfenrolled')) {
- $value = 'none';
- }
- }
- $selfenrollhash{'default'}{$type}{$item} = $value;
- if (ref($domconfig{'selfenrollment'}{'default'}) eq 'HASH') {
- if (ref($domconfig{'selfenrollment'}{'default'}{$type}) eq 'HASH') {
- if ($selfenrollhash{'default'}{$type}{$item} ne
- $domconfig{'selfenrollment'}{'default'}{$type}{$item}) {
- push(@{$changes{'default'}{$type}},$item);
- }
- } else {
- push(@{$changes{'default'}{$type}},$item);
- }
- } else {
- push(@{$changes{'default'}{$type}},$item);
- }
- if ($item eq 'limit') {
- if (($value eq 'allstudents') || ($value eq 'selfenrolled')) {
- $env{'form.selfenrolldefault_cap_'.$type} =~ s/\D//g;
- if ($env{'form.selfenrolldefault_cap_'.$type} ne '') {
- $selfenrollhash{'default'}{$type}{'cap'} = $env{'form.selfenrolldefault_cap_'.$type};
- }
- } else {
- $selfenrollhash{'default'}{$type}{'cap'} = '';
- }
- if (ref($domconfig{'selfenrollment'}{'default'}{$type}) eq 'HASH') {
- if ($selfenrollhash{'default'}{$type}{'cap'} ne
- $domconfig{'selfenrollment'}{'admin'}{$type}{'cap'}) {
- push(@{$changes{'default'}{$type}},'cap');
- }
- } elsif ($selfenrollhash{'default'}{$type}{'cap'} ne '') {
- push(@{$changes{'default'}{$type}},'cap');
- }
- }
- }
- }
-
- foreach my $item (@{$itemsref}) {
- if ($item eq 'fields') {
- my @changed;
- @{$selfenrollhash{'validation'}{$item}} = &Apache::loncommon::get_env_multiple('form.selfenroll_validation_'.$item);
- if (@{$selfenrollhash{'validation'}{$item}} > 0) {
- @{$selfenrollhash{'validation'}{$item}} = sort(@{$selfenrollhash{'validation'}{$item}});
- }
- if (ref($domconfig{'selfenrollment'}{'validation'}) eq 'HASH') {
- if (ref($domconfig{'selfenrollment'}{'validation'}{$item}) eq 'ARRAY') {
- @changed = &Apache::loncommon::compare_arrays($selfenrollhash{'validation'}{$item},
- $domconfig{'selfenrollment'}{'validation'}{$item});
- } else {
- @changed = @{$selfenrollhash{'validation'}{$item}};
- }
- } else {
- @changed = @{$selfenrollhash{'validation'}{$item}};
- }
- if (@changed) {
- if ($selfenrollhash{'validation'}{$item}) {
- $changes{'validation'}{$item} = join(', ',@{$selfenrollhash{'validation'}{$item}});
- } else {
- $changes{'validation'}{$item} = &mt('None');
- }
- }
- } else {
- $selfenrollhash{'validation'}{$item} = $env{'form.selfenroll_validation_'.$item};
- if ($item eq 'markup') {
- if ($env{'form.selfenroll_validation_'.$item}) {
- $env{'form.selfenroll_validation_'.$item} =~ s/[\n\r\f]+/\s/gs;
- }
- }
- if (ref($domconfig{'selfenrollment'}{'validation'}) eq 'HASH') {
- if ($domconfig{'selfenrollment'}{'validation'}{$item} ne $selfenrollhash{'validation'}{$item}) {
- $changes{'validation'}{$item} = $selfenrollhash{'validation'}{$item};
- }
- }
- }
- }
-
- my $putresult = &Apache::lonnet::put_dom('configuration',{'selfenrollment' => \%selfenrollhash},
- $dom);
- if ($putresult eq 'ok') {
- if (keys(%changes) > 0) {
- my %domdefaults = &Apache::lonnet::get_domain_defaults($dom,1);
- $resulttext = &mt('Changes made:').'
';
- foreach my $key ('admin','default','validation') {
- if (ref($changes{$key}) eq 'HASH') {
- $resulttext .= '
'.$toplevel{$key}.'
';
- if ($key eq 'validation') {
- foreach my $item (@{$itemsref}) {
- if (exists($changes{$key}{$item})) {
- if ($item eq 'markup') {
- $resulttext .= '
'.&mt('[_1] set to: [_2]',$namesref->{$item},
- '
'.$changes{$key}{$item}.'
').'
';
- } else {
- $resulttext .= '
'.&mt('[_1] set to: [_2]',$namesref->{$item},
- ''.$changes{$key}{$item}.'').'