--- loncom/misc/refresh_courseids_db.pl 2021/03/31 02:19:59 1.23 +++ loncom/misc/refresh_courseids_db.pl 2023/10/02 21:01:21 1.24 @@ -1,7 +1,7 @@ #!/usr/bin/perl # The LearningOnline Network # -# $Id: refresh_courseids_db.pl,v 1.23 2021/03/31 02:19:59 raeburn Exp $ +# $Id: refresh_courseids_db.pl,v 1.24 2023/10/02 21:01:21 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -351,6 +351,11 @@ sub recurse_courses { } } } + my $curruserdoms = $courseinfo{'internal.userdomains'}; + my $updateduserdoms = &get_unique_domains($cdom,$cnum); + if ($curruserdoms ne $updateduserdoms) { + $changes{'internal.userdomains'} = $updateduserdoms; + } if (keys(%changes)) { if (&Apache::lonnet::put('environment',\%changes,$cdom,$cnum) eq 'ok') { print $fh "Course's environment.db for ".$cdom."_".$cnum." successfully updated with following entries: "; @@ -387,3 +392,28 @@ sub last_map_update { return $lastupdate; } +sub get_unique_domains { + my ($cdom,$cnum) = @_; + my %classlist = &Apache::lonnet::dump('classlist',$cdom,$cnum); + my (%uniquedom,$udomstr); + foreach my $key (keys(%classlist)) { + my $udom = (split(/:/,$key))[1]; + $uniquedom{$udom} = 1; + } + my %dumphash = + &Apache::lonnet::dump('nohist_userroles',$cdom,$cnum); + foreach my $entry (keys(%dumphash)) { + my $udom = (split(/\:/,$entry))[2]; + $uniquedom{$udom} = 1; + } + foreach my $udom (keys(%uniquedom)) { + if (&Apache::lonnet::domain($udom) eq '') { + delete($uniquedom{$udom}); + } + } + if (keys(%uniquedom) > 0) { + $udomstr = join(',',sort(keys(%uniquedom))); + } + return $udomstr; +} +