--- loncom/publisher/lonpublisher.pm 2005/01/05 20:11:19 1.181 +++ loncom/publisher/lonpublisher.pm 2005/01/12 16:18:54 1.182 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Publication Handler # -# $Id: lonpublisher.pm,v 1.181 2005/01/05 20:11:19 www Exp $ +# $Id: lonpublisher.pm,v 1.182 2005/01/12 16:18:54 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -138,6 +138,8 @@ my $docroot; my $cuname; my $cudom; +my $registered_cleanup; + =pod =item B @@ -1543,10 +1545,13 @@ sub phasetwo { $r->rflush; # ------------------------------------------------------------- Trigger updates - $ENV{'internal.publication.target'}=$target; - $ENV{'internal.publication.source'}=$source; - $r->register_cleanup(\¬ify); - + print $logfile("\nRegistering for notifications: $target $source\n"); + push(@{$ENV{'internal.publication.targetsource'}},[$target,$source]); + unless ($registered_cleanup) { + &Apache::lonnet::logthis('Cleanup handler registered'); + $r->register_cleanup(\¬ify); + $registered_cleanup=1; + } # ------------------------------------------------ Provide link to new resource unless ($batch) { my $thisdistarget=$target; @@ -1575,36 +1580,39 @@ sub phasetwo { # =============================================================== Notifications sub notify { # --------------------------------------------------- Send update notifications - my $target=$ENV{'internal.publication.target'}; - my $source=$ENV{'internal.publication.source'}; - my $logfile=Apache::File->new('>>'.$source.'.log'); - print $logfile "\nCleanup phase: Notifications\n"; - my @subscribed=&get_subscribed_hosts($target); - foreach my $subhost (@subscribed) { - print $logfile "\nNotifying host ".$subhost.':'; - my $reply=&Apache::lonnet::critical('update:'.$target,$subhost); - print $logfile $reply; - } + &Apache::lonnet::logthis('Cleanup Phase Publication Handler'); + foreach my $targetsource (@{$ENV{'internal.publication.targetsource'}}){ + my ($target,$source)=@{$targetsource}; + my $logfile=Apache::File->new('>>'.$source.'.log'); + print $logfile "\nCleanup phase: Notifications\n"; + my @subscribed=&get_subscribed_hosts($target); + foreach my $subhost (@subscribed) { + print $logfile "\nNotifying host ".$subhost.':'; + my $reply=&Apache::lonnet::critical('update:'.$target,$subhost); + print $logfile $reply; + } # ---------------------------------------- Send update notifications, meta only - my @subscribedmeta=&get_subscribed_hosts("$target.meta"); - foreach my $subhost (@subscribedmeta) { - print $logfile "\nNotifying host for metadata only ".$subhost.':'; - my $reply=&Apache::lonnet::critical('update:'.$target.'.meta', - $subhost); - print $logfile $reply; - } + my @subscribedmeta=&get_subscribed_hosts("$target.meta"); + foreach my $subhost (@subscribedmeta) { + print $logfile "\nNotifying host for metadata only ".$subhost.':'; + my $reply=&Apache::lonnet::critical('update:'.$target.'.meta', + $subhost); + print $logfile $reply; + } # --------------------------------------------------- Notify subscribed courses - my %courses=&coursedependencies($target); - my $now=time; - foreach (keys %courses) { - print $logfile "\nNotifying course ".$_.':'; - my ($cdom,$cname)=split(/\_/,$_); - my $reply=&Apache::lonnet::cput - ('versionupdate',{$target => $now},$cdom,$cname); - print $logfile $reply; + my %courses=&coursedependencies($target); + my $now=time; + foreach (keys %courses) { + print $logfile "\nNotifying course ".$_.':'; + my ($cdom,$cname)=split(/\_/,$_); + my $reply=&Apache::lonnet::cput + ('versionupdate',{$target => $now},$cdom,$cname); + print $logfile $reply; + } + print $logfile "\n============ Done ============\n"; + $logfile->close(); } - print $logfile "\n============ Done ============\n"; - $logfile->close(); + return OK; } ######################################### @@ -1816,6 +1824,8 @@ sub handler { &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, ['filename']); +# ------------------------------------------------- Flag for registered cleanup + $registered_cleanup=0; # -------------------------------------------------------------- Check filename my $fn=&Apache::lonnet::unescape($ENV{'form.filename'});