version 1.542, 2004/09/17 02:40:35
|
version 1.545, 2004/09/21 22:38:10
|
Line 826 my $disk_caching_disabled=0;
|
Line 826 my $disk_caching_disabled=0;
|
sub devalidate_cache { |
sub devalidate_cache { |
my ($cache,$id,$name) = @_; |
my ($cache,$id,$name) = @_; |
delete $$cache{$id.'.time'}; |
delete $$cache{$id.'.time'}; |
|
delete $$cache{$id.'.file'}; |
delete $$cache{$id}; |
delete $$cache{$id}; |
if (1 || $disk_caching_disabled) { return; } |
if (1 || $disk_caching_disabled) { return; } |
my $filename=$perlvar{'lonDaemons'}.'/tmp/lonnet_internal_cache_'.$name.".db"; |
my $filename=$perlvar{'lonDaemons'}.'/tmp/lonnet_internal_cache_'.$name.".db"; |
Line 864 sub is_cached {
|
Line 865 sub is_cached {
|
return (undef,undef); |
return (undef,undef); |
} else { |
} else { |
if (time-($$cache{$id.'.time'})>$time) { |
if (time-($$cache{$id.'.time'})>$time) { |
# &logthis("Devalidating $id - ".time-($$cache{$id.'.time'})); |
if (exists($$cache{$id.'.file'})) { |
&devalidate_cache($cache,$id,$name); |
foreach my $filename (@{ $$cache{$id.'.file'} }) { |
return (undef,undef); |
my $mtime=(stat($filename))[9]; |
|
#+1 is to take care of edge effects |
|
if ($mtime && (($mtime+1) < ($$cache{$id.'.time'}))) { |
|
# &logthis("Upping $mtime - ".$$cache{$id.'.time'}. |
|
# "$id because of $filename"); |
|
} else { |
|
&logthis("Devalidating $filename $id - ".(time-($$cache{$id.'.time'}))); |
|
&devalidate_cache($cache,$id,$name); |
|
return (undef,undef); |
|
} |
|
} |
|
$$cache{$id.'.time'}=time; |
|
} else { |
|
# &logthis("Devalidating $id - ".time-($$cache{$id.'.time'})); |
|
&devalidate_cache($cache,$id,$name); |
|
return (undef,undef); |
|
} |
} |
} |
} |
} |
return ($$cache{$id},1); |
return ($$cache{$id},1); |
Line 910 sub save_cache {
|
Line 927 sub save_cache {
|
eval <<'EVALBLOCK'; |
eval <<'EVALBLOCK'; |
$hash{$id.'.time'}=$$cache{$id.'.time'}; |
$hash{$id.'.time'}=$$cache{$id.'.time'}; |
$hash{$id}=freeze({'item'=>$$cache{$id}}); |
$hash{$id}=freeze({'item'=>$$cache{$id}}); |
|
if (exists($$cache{$id.'.file'})) { |
|
$hash{$id.'.file'}=freeze({'item'=>$$cache{$id.'.file'}}); |
|
} |
EVALBLOCK |
EVALBLOCK |
if ($@) { |
if ($@) { |
&logthis("<font color='red'>save_cache blew up :$@:$name</font>"); |
&logthis("<font color='red'>save_cache blew up :$@:$name</font>"); |
Line 960 sub load_cache_item {
|
Line 980 sub load_cache_item {
|
} else { |
} else { |
if (($$cache{$id.'.time'}+$time) < time) { |
if (($$cache{$id.'.time'}+$time) < time) { |
$$cache{$id.'.time'}=$hash{$id.'.time'}; |
$$cache{$id.'.time'}=$hash{$id.'.time'}; |
my $hashref=thaw($hash{$id}); |
{ |
$$cache{$id}=$hashref->{'item'}; |
my $hashref=thaw($hash{$id}); |
|
$$cache{$id}=$hashref->{'item'}; |
|
} |
|
if (exists($hash{$id.'.file'})) { |
|
my $hashref=thaw($hash{$id.'.file'}); |
|
$$cache{$id.'.file'}=$hashref->{'item'}; |
|
} |
} |
} |
} |
} |
EVALBLOCK |
EVALBLOCK |
Line 2748 sub allowed {
|
Line 2774 sub allowed {
|
$uri=&deversion($uri); |
$uri=&deversion($uri); |
my $orguri=$uri; |
my $orguri=$uri; |
$uri=&declutter($uri); |
$uri=&declutter($uri); |
|
|
|
|
|
|
if (defined($ENV{'allowed.'.$priv})) { return $ENV{'allowed.'.$priv}; } |
if (defined($ENV{'allowed.'.$priv})) { return $ENV{'allowed.'.$priv}; } |
# Free bre access to adm and meta resources |
# Free bre access to adm and meta resources |
if (((($uri=~/^adm\//) && ($uri !~ m|/bulletinboard$|)) |
if (((($uri=~/^adm\//) && ($uri !~ m|/bulletinboard$|)) |
Line 2756 sub allowed {
|
Line 2784 sub allowed {
|
return 'F'; |
return 'F'; |
} |
} |
|
|
|
# Free bre access to user's own portfolio contents |
|
$uri=~m:([^/]+)/([^/]+)/([^/]+)/([^/]+)/:; |
|
if (('uploaded' eq $1)&&($ENV{'user.name'} eq $3) && ($ENV{'user.domain'} eq $2) && ('portfolio' eq $4)) { |
|
return 'F'; |
|
} |
|
|
# Free bre to public access |
# Free bre to public access |
|
|
if ($priv eq 'bre') { |
if ($priv eq 'bre') { |
Line 4262 sub metadata {
|
Line 4296 sub metadata {
|
unless ($filename=~/\.meta$/) { $filename.='.meta'; } |
unless ($filename=~/\.meta$/) { $filename.='.meta'; } |
my $metastring; |
my $metastring; |
if ($uri !~ m|^uploaded/|) { |
if ($uri !~ m|^uploaded/|) { |
$metastring=&getfile(&filelocation('',&clutter($filename))); |
my $file=&filelocation('',&clutter($filename)); |
|
push(@{$metacache{$uri.'.file'}},$file); |
|
$metastring=&getfile($file); |
} |
} |
my $parser=HTML::LCParser->new(\$metastring); |
my $parser=HTML::LCParser->new(\$metastring); |
my $token; |
my $token; |