Browse Source

Bug 8089: Cache sysprefs using Koha::Cache

Cache sysprefs using Koha::Cache in a way that is safe even for
caching-related sysprefs. This lays the groundwork for removing
caching configuration from the httpd.conf and configuring it
using sysprefs.

Signed-off-by: Chris Cormack <chris@bigballofwax.co.nz>
3.10.x
Jared Camins-Esakov 12 years ago
committed by Paul Poulain
parent
commit
499f44fa1d
  1. 20
      C4/Context.pm

20
C4/Context.pm

@ -487,11 +487,20 @@ my %sysprefs;
sub preference {
my $self = shift;
my $var = lc(shift); # The system preference to return
my $cache;
if (exists $sysprefs{$var}) {
return $sysprefs{$var};
}
if (Koha::Cache->is_cache_active()) {
$cache = Koha::Cache->new();
if (defined $cache) {
$sysprefs{$var} = $cache->get_from_cache("syspref:$var");
return $sysprefs{$var} if (defined $sysprefs{$var});
}
}
my $dbh = C4::Context->dbh or return 0;
# Look up systempreferences.variable==$var
@ -502,6 +511,9 @@ sub preference {
LIMIT 1
END_SQL
$sysprefs{$var} = $dbh->selectrow_array( $sql, {}, $var );
if (Koha::Cache->is_cache_active() && defined $cache) {
$cache->set_in_cache("syspref:$var");
}
return $sysprefs{$var};
}
@ -524,6 +536,10 @@ will not be seen by this process.
sub clear_syspref_cache {
%sysprefs = ();
if (Koha::Cache->is_cache_active()) {
my $cache = Koha::Cache->new();
$cache->flush_all() if defined $cache; # Sorry, this is unpleasant
}
}
=head2 set_preference
@ -554,6 +570,10 @@ sub set_preference {
" );
if($sth->execute( $var, $value )) {
if (Koha::Cache->is_cache_active()) {
my $cache = Koha::Cache->new();
$cache->set_in_cache("syspref:$var", $value) if defined $cache;
}
$sysprefs{$var} = $value;
}
$sth->finish;

Loading…
Cancel
Save