--- loncom/interface/lonuserutils.pm 2019/05/06 18:25:58 1.198 +++ 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.198 2019/05/06 18:25:58 raeburn Exp $ +# $Id: lonuserutils.pm,v 1.199 2019/05/06 19:28:17 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -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,'.');