Browse Source

Bug 15333: Use Koha::Cache to cache exception_holidays instead of a package variable

On the same way as bug 14522, we should use Koha::Cache to cache
exception_holidays.
It's not safe to use a package variable if running under Plack.

There is not test plan, just make sure the changes make sense.

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>

Signed-off-by: Brendan Gallagher <brendan@bywatersolutions.com>
16.05.x
Jonathan Druart 8 years ago
committed by Brendan Gallagher
parent
commit
cbd375fab7
  1. 7
      C4/Calendar.pm
  2. 21
      Koha/Calendar.pm

7
C4/Calendar.pm

@ -278,6 +278,7 @@ sub insert_single_holiday {
# changed the 'single_holidays' table, lets force/reset its cache
my $cache = Koha::Cache->get_instance();
$cache->clear_from_cache( 'single_holidays') ;
$cache->clear_from_cache( 'exception_holidays') ;
return $self;
@ -322,6 +323,7 @@ sub insert_exception_holiday {
# changed the 'single_holidays' table, lets force/reset its cache
my $cache = Koha::Cache->get_instance();
$cache->clear_from_cache( 'single_holidays') ;
$cache->clear_from_cache( 'exception_holidays') ;
return $self;
}
@ -422,6 +424,7 @@ UPDATE special_holidays SET title = ?, description = ?
# changed the 'single_holidays' table, lets force/reset its cache
my $cache = Koha::Cache->get_instance();
$cache->clear_from_cache( 'single_holidays') ;
$cache->clear_from_cache( 'exception_holidays') ;
return $self;
}
@ -464,6 +467,7 @@ UPDATE special_holidays SET title = ?, description = ?
# changed the 'single_holidays' table, lets force/reset its cache
my $cache = Koha::Cache->get_instance();
$cache->clear_from_cache( 'single_holidays') ;
$cache->clear_from_cache( 'exception_holidays') ;
return $self;
}
@ -544,6 +548,7 @@ sub delete_holiday {
# changed the 'single_holidays' table, lets force/reset its cache
my $cache = Koha::Cache->get_instance();
$cache->clear_from_cache( 'single_holidays') ;
$cache->clear_from_cache( 'exception_holidays') ;
return $self;
}
@ -574,6 +579,7 @@ sub delete_holiday_range {
# changed the 'single_holidays' table, lets force/reset its cache
my $cache = Koha::Cache->get_instance();
$cache->clear_from_cache( 'single_holidays') ;
$cache->clear_from_cache( 'exception_holidays') ;
}
@ -627,6 +633,7 @@ sub delete_exception_holiday_range {
# changed the 'single_holidays' table, lets force/reset its cache
my $cache = Koha::Cache->get_instance();
$cache->clear_from_cache( 'single_holidays') ;
$cache->clear_from_cache( 'exception_holidays') ;
}
=head2 isHoliday

21
Koha/Calendar.pm

@ -52,23 +52,14 @@ sub _init {
return;
}
# FIXME: use of package-level variables for caching the holiday
# lists breaks persistance engines. As of 2013-12-10, the RM
# is allowing this with the expectation that prior to release of
# 3.16, bug 8089 will be fixed and we can switch the caching over
# to Koha::Cache.
our $exception_holidays;
sub exception_holidays {
my ( $self ) = @_;
my $dbh = C4::Context->dbh;
my $branch = $self->{branchcode};
if ( $exception_holidays ) {
$self->{exception_holidays} = $exception_holidays;
return $exception_holidays;
}
my $cache = Koha::Cache->get_instance();
my $cached = $cache->get_from_cache('exception_holidays');
return $cached if $cached;
my $exception_holidays_sth = $dbh->prepare(
'SELECT day, month, year FROM special_holidays WHERE branchcode = ? AND isexception = 1'
);
@ -85,8 +76,8 @@ sub exception_holidays {
}
$self->{exception_holidays} =
DateTime::Set->from_datetimes( dates => $dates );
$exception_holidays = $self->{exception_holidays};
return $exception_holidays;
$cache->set_in_cache( 'exception_holidays', $self->{exception_holidays} );
return $self->{exception_holidays};
}
sub single_holidays {

Loading…
Cancel
Save