--- loncom/interface/lonmodifycourse.pm 2010/03/08 22:31:27 1.50 +++ loncom/interface/lonmodifycourse.pm 2010/03/15 19:10:59 1.51 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # handler for DC-only modifiable course settings # -# $Id: lonmodifycourse.pm,v 1.50 2010/03/08 22:31:27 raeburn Exp $ +# $Id: lonmodifycourse.pm,v 1.51 2010/03/15 19:10:59 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -877,20 +877,26 @@ sub update_coowners { } if ($settings->{'internal.courseowner'} ne $newattr->{'courseowner'}) { my $oldowner_to_coowner; + my @types = ('co-owners'); if (($newattr->{'coursecode'}) && ($autocoowners)) { my $oldowner = $settings->{'internal.courseowner'}; if ($cchash{$oldowner.':cc'}) { - if ($settings->{'internal.co-owner'}) { - my @current = split(',',$settings->{'internal.co-owners'}); - unless (grep(/^\Q$oldowner\E$/,@current)) { + my ($result,$desc) = &Apache::lonnet::auto_validate_instcode($cnum,$cdom,$newattr->{'coursecode'},$oldowner); + if ($result eq 'valid') { + if ($settings->{'internal.co-owner'}) { + my @current = split(',',$settings->{'internal.co-owners'}); + unless (grep(/^\Q$oldowner\E$/,@current)) { + $oldowner_to_coowner = 1; + } + } else { $oldowner_to_coowner = 1; } - } else { - $oldowner_to_coowner = 1; } } + } else { + push(@types,'pendingco-owners'); } - foreach my $type ('co-owners','pendingco-owners') { + foreach my $type (@types) { if ($settings->{'internal.'.$type}) { my @current = split(',',$settings->{'internal.'.$type}); my $newowner = $newattr->{'courseowner'}; @@ -960,15 +966,19 @@ sub update_coowners { my @currcoown = split(',',$settings->{'internal.coowners'}); my ($updatecoowners,$delcoowners); foreach my $person (@currcoown) { - my ($result,$desc) = &Apache::lonnet::valid_instcode(); + my ($result,$desc) = &Apache::lonnet::auto_validate_instcode($cnum,$cdom,$newattr->{'coursecode'},$person); if ($result eq 'valid') { push(@newcoowners,$person); } } foreach my $item (sort(keys(%cchash))) { my ($uname,$udom,$urole) = split(':',$item); + next if ($uname.':'.$udom eq $newattr->{'courseowner'}); unless (grep(/^\Q$uname\E:\Q$udom\E$/,@newcoowners)) { - push(@newcoowners,$uname.':'.$udom); + my ($result,$desc) = &Apache::lonnet::auto_validate_instcode($cnum,$cdom,$newattr->{'coursecode'},$uname.':'.$udom); + if ($result eq 'valid') { + push(@newcoowners,$uname.':'.$udom); + } } } if (@newcoowners) {