--- loncom/interface/lonuserutils.pm 2022/12/01 01:28:26 1.213 +++ loncom/interface/lonuserutils.pm 2023/10/02 21:01:21 1.217 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Utility functions for managing LON-CAPA user accounts # -# $Id: lonuserutils.pm,v 1.213 2022/12/01 01:28:26 raeburn Exp $ +# $Id: lonuserutils.pm,v 1.217 2023/10/02 21:01:21 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -616,7 +616,7 @@ sub print_roles_queued { $output .= '

'; if (keys(%touser)) { foreach my $key (keys(%touser)) { - my ($uname,$udom) = split(/:/,$touser{$key}); + my ($uname,$udom) = split(/:/,$key); if (&Apache::lonnet::put('nohist_queuedrolereqs',$touser{$key},$udom,$uname) eq 'ok') { my $owndomdesc = &Apache::lonnet::domain($udom); &Apache::loncoursequeueadmin::send_selfserve_notification($uname.':'.$udom, @@ -1065,7 +1065,7 @@ END "; } elsif ($mode eq 'modifycourse') { $auth_checks .= " - if (vf.elements[current.argfield].value == null || vf.elements[current.argfield].value == '') { + if ((current.argfield !== null) && (current.argfield !== undefined) && (current.argfield !== '') && (vf.elements[current.argfield].value == null || vf.elements[current.argfield].value == '')) { "; } if ( ($mode eq 'createcourse') || ($mode eq 'modifycourse') ) { @@ -4723,7 +4723,7 @@ sub upfile_drop_add { $fieldstype{$field.'_choice'} = 'scalar'; } &Apache::loncommon::store_course_settings('enrollment_upload',\%fieldstype); - my ($cid,$crstype,$setting,$crsdom,$crsnum); + my ($cid,$crstype,$setting,$crsdom,$crsnum,$oldcrsuserdoms); if ($context eq 'domain') { $setting = $env{'form.roleaction'}; } @@ -4738,6 +4738,11 @@ sub upfile_drop_add { $crstype = &Apache::loncommon::course_type($cid); $crsdom = $env{'form.dcdomain'}; $crsnum = $env{'form.dccourse'}; + if (exists($env{'course.'.$cid.'.internal.userdomains'})) { + $oldcrsuserdoms = 1; + } + my %coursedesc = &Apache::lonnet::coursedescription($cid,{ one_time => 1 }); + $env{'course.'.$cid.'.internal.userdomains'} = $coursedesc{'internal.userdomains'}; } } my ($startdate,$enddate) = &get_dates_from_form(); @@ -5564,6 +5569,13 @@ sub upfile_drop_add { } # end of loop $r->print(''); &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state); + if (($context eq 'domain') && ($setting eq 'course')) { + unless ($oldcrsuserdoms) { + if (exists($env{'course.'.$cid.'.internal.userdomains'})) { + delete($env{'course.'.$cid.'.internal.userdomains'}); + } + } + } } # Flush the course logs so reverse user roles immediately updated $r->register_cleanup(\&Apache::lonnet::flushcourselogs); @@ -6780,6 +6792,9 @@ sub get_permission { $permission{'selfenrolladmin'} = 1; } } + unless ($permission{'selfenrolladmin'}) { + $permission{'selfenrollview'} = 1; + } } if ($env{'request.course.id'}) { my $user; @@ -7243,7 +7258,7 @@ sub selfenrollment_administration { } } if ($settings{'internal.selfenrollmgrdc'} ne '') { - my @in_domain = split(/,/,$settings{'internal.selfenrollmgrdc'}); + @in_domain = split(/,/,$settings{'internal.selfenrollmgrdc'}); my @diffs = &Apache::loncommon::compare_arrays(\@in_domain,$possconfigs); unless (@diffs) { return (\@in_course,\@in_domain);