--- loncom/lonnet/perl/lonnet.pm 2022/10/19 00:03:11 1.1496 +++ loncom/lonnet/perl/lonnet.pm 2022/10/22 21:13:47 1.1499 @@ -1,7 +1,7 @@ # The LearningOnline Network # TCP networking package # -# $Id: lonnet.pm,v 1.1496 2022/10/19 00:03:11 raeburn Exp $ +# $Id: lonnet.pm,v 1.1499 2022/10/22 21:13:47 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -12485,7 +12485,7 @@ sub count_supptools { } sub has_unhidden_suppfiles { - my ($cnum,$cdom,$ignorecache)=@_; + my ($cnum,$cdom,$ignorecache,$possdel)=@_; my $hashid=$cnum.':'.$cdom; my ($showsupp,$cached); unless ($ignorecache) { @@ -12494,7 +12494,7 @@ sub has_unhidden_suppfiles { unless (defined($cached)) { my $chome=&homeserver($cnum,$cdom); unless ($chome eq 'no_host') { - my ($supplemental) = &get_supplemental($cnum,$cdom,$ignorecache); + my ($supplemental) = &get_supplemental($cnum,$cdom,$ignorecache,$possdel); if (ref($supplemental) eq 'HASH') { if ((ref($supplemental->{'ids'}) eq 'HASH') && (ref($supplemental->{'hidden'}) eq 'HASH')) { foreach my $key (keys(%{$supplemental->{'ids'}})) { @@ -12527,11 +12527,19 @@ sub get_supplemental { unless (defined($cached)) { my $chome=&homeserver($cnum,$cdom); unless ($chome eq 'no_host') { + my @order = @LONCAPA::map::order; + my @resources = @LONCAPA::map::resources; + my @resparms = @LONCAPA::map::resparms; + my @zombies = @LONCAPA::map::zombies; my ($errors,%ids,%hidden); $errors = &Apache::loncommon::recurse_supplemental($cnum,$cdom, 'supplemental.sequence', $errors,$possdel,\%ids,\%hidden); + @LONCAPA::map::order = @order; + @LONCAPA::map::resources = @resources; + @LONCAPA::map::resparms = @resparms; + @LONCAPA::map::zombies = @zombies; $set_httprefs = 1; if ($env{'request.course.id'} eq $cdom.'_'.$cnum) { &Apache::lonnet::appenv({'request.course.suppupdated' => time}); @@ -13710,6 +13718,29 @@ sub devalidate_suppchange_cache { &devalidate_cache_new('suppchange',$hashid); } +sub update_supp_caches { + my ($cdom,$cnum) = @_; + my %servers = &internet_dom_servers($cdom); + my @ids=¤t_machine_ids(); + foreach my $server (keys(%servers)) { + next if (grep(/^\Q$server\E$/,@ids)); + my $hashid=$cnum.':'.$cdom; + my $cachekey = &escape('showsupp').':'.&escape($hashid); + &remote_devalidate_cache($server,[$cachekey]); + } + &has_unhidden_suppfiles($cnum,$cdom,1,1); + &count_supptools($cnum,$cdom,1); + my $now = time; + if ($env{'request.course.id'} eq $cdom.'_'.$cnum) { + &Apache::lonnet::appenv({'request.course.suppupdated' => $now}); + } + &put('environment',{'internal.supplementalchange' => $now}, + $cdom,$cnum); + &Apache::lonnet::appenv( + {'course.'.$cdom.'_'.$cnum.'.internal.supplementalchange' => $now}); + &do_cache_new('suppchange',$cdom.'_'.$cnum,$now,600); +} + # ------------------------------------------------- Update symbolic store links sub symblist {