--- loncom/lond 2010/09/26 14:31:26 1.458 +++ loncom/lond 2010/09/27 00:21:02 1.459 @@ -2,7 +2,7 @@ # The LearningOnline Network # lond "LON Daemon" Server (port "LOND" 5663) # -# $Id: lond,v 1.458 2010/09/26 14:31:26 raeburn Exp $ +# $Id: lond,v 1.459 2010/09/27 00:21:02 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -58,7 +58,7 @@ my $DEBUG = 0; # Non zero to ena my $status=''; my $lastlog=''; -my $VERSION='$Revision: 1.458 $'; #' stupid emacs +my $VERSION='$Revision: 1.459 $'; #' stupid emacs my $remoteVERSION; my $currenthostid="default"; my $currentdomainid; @@ -7364,18 +7364,26 @@ sub get_courseinfo_hash { sub check_homecourses { my ($homecourses,$udom,$regexp,$count,$range,$start,$end,$major,$minor) = @_; my ($result,%addtocache); + my $yesterday = time - 24*3600; if (ref($homecourses) eq 'HASH') { - my %okcourses; + my (%okcourses,%courseinfo,%recent); my $hashref = &tie_domain_hash($udom, "nohist_courseids", &GDBM_WRCREAT()); if ($hashref) { while (my ($key,$value) = each(%$hashref)) { my $unesc_key = &unescape($key); - next if ($unesc_key =~ /^lasttime:/); + if ($unesc_key =~ /^lasttime:(\w+)$/) { + my $cid = $1; + $cid =~ s/_/:/; + if ($value > $yesterday ) { + $recent{$cid} = 1; + } + next; + } my $items = &Apache::lonnet::thaw_unescape($value); if (ref($items) eq 'HASH') { my $hashid = $unesc_key; $hashid =~ s/_/:/; - &Apache::lonnet::do_cache_new('courseinfo',$hashid,$items,600); + $courseinfo{$hashid} = $items; if (ref($homecourses->{$hashid}) eq 'ARRAY') { my ($reqdmajor,$reqdminor) = split(/\./,$items->{'releaserequired'}); if (&useable_role($reqdmajor,$reqdminor,$major,$minor)) { @@ -7391,6 +7399,13 @@ sub check_homecourses { &logthis('Failed to tie hash for nohist_courseids.db'); return; } + foreach my $hashid (keys(%recent)) { + &Apache::lonnet::do_cache_new('courseinfo',$hashid,$courseinfo{$hashid},600); + } + foreach my $hashid (keys(%{$homecourses})) { + next if ($recent{$hashid}); + &Apache::lonnet::do_cache_new('courseinfo',$hashid,$courseinfo{$hashid},600); + } foreach my $hashid (keys(%okcourses)) { if (ref($homecourses->{$hashid}) eq 'ARRAY') { foreach my $role (@{$homecourses->{$hashid}}) {