--- loncom/interface/lonuserutils.pm 2019/05/05 04:00:42 1.197 +++ loncom/interface/lonuserutils.pm 2019/05/06 19:28:17 1.199 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Utility functions for managing LON-CAPA user accounts # -# $Id: lonuserutils.pm,v 1.197 2019/05/05 04:00:42 raeburn Exp $ +# $Id: lonuserutils.pm,v 1.199 2019/05/06 19:28:17 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -4251,7 +4251,7 @@ sub print_first_users_upload_form { .&Apache::lonhtmlcommon::end_pick_box(); $str .= '

' - .'' .'

'; @@ -6014,7 +6014,26 @@ sub can_change_internalpass { unless ($env{'course.'.$env{'request.course.id'}.'.internal.nopasswdchg'}) { my ($cnum,$cdom) = &get_course_identity(); if ((&Apache::lonnet::is_course_owner($cdom,$cnum)) && ($udom eq $env{'user.domain'})) { - my $noupdate; + my @userstatuses = ('default'); + my %userenv = &Apache::lonnet::userenvironment($udom,$uname,'inststatus'); + if ($userenv{'inststatus'} ne '') { + @userstatuses = split(/:/,$userenv{'inststatus'}); + } + my $noupdate = 1; + my %passwdconf = &Apache::lonnet::get_passwdconf($cdom); + if (ref($passwdconf{'crsownerchg'}) eq 'HASH') { + if (ref($passwdconf{'crsownerchg'}{'for'}) eq 'ARRAY') { + foreach my $status (@userstatuses) { + if (grep(/^\Q$status\E$/,@{$passwdconf{'crsownerchg'}{'for'}})) { + undef($noupdate); + last; + } + } + } + } + if ($noupdate) { + return; + } my %owned = &Apache::lonnet::courseiddump($cdom,'.',1,'.', $env{'user.name'}.':'.$env{'user.domain'}, undef,undef,undef,'.');