Bugzilla – Attachment 105843 Details for
Bug 18519
Add ability to skip irrelevant dates in Koha::Calendar
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 18519: Use a hasref for lookup
Bug-18519-Use-a-hasref-for-lookup.patch (text/plain), 3.75 KB, created by
Martin Renvoize (ashimema)
on 2020-06-12 15:31:29 UTC
(
hide
)
Description:
Bug 18519: Use a hasref for lookup
Filename:
MIME Type:
Creator:
Martin Renvoize (ashimema)
Created:
2020-06-12 15:31:29 UTC
Size:
3.75 KB
patch
obsolete
>From 3ede875009d749154740fd38ad5cf72da2b0219b Mon Sep 17 00:00:00 2001 >From: Martin Renvoize <martin.renvoize@ptfs-europe.com> >Date: Fri, 12 Jun 2020 16:30:28 +0100 >Subject: [PATCH] Bug 18519: Use a hasref for lookup > >Rather than using an array of dates and iterating them, use a hashref >and do a direct lookup >--- > Koha/Calendar.pm | 64 +++++++++++++++++++++++------------------------- > 1 file changed, 30 insertions(+), 34 deletions(-) > >diff --git a/Koha/Calendar.pm b/Koha/Calendar.pm >index 09150c139a..f15f804e8c 100644 >--- a/Koha/Calendar.pm >+++ b/Koha/Calendar.pm >@@ -52,7 +52,7 @@ sub _init { > } > > sub exception_holidays { >- my ( $self ) = @_; >+ my ($self) = @_; > > my $cache = Koha::Caches->get_instance(); > my $exception_holidays = $cache->get_from_cache('exception_holidays'); >@@ -82,7 +82,7 @@ sub exception_holidays { > { expiry => 76800 } ); > } > >- return $exception_holidays->{$self->{branchcode}} // {}; >+ return $exception_holidays->{ $self->{branchcode} } // {}; > } > > sub is_exception_holiday { >@@ -93,8 +93,8 @@ sub is_exception_holiday { > } > > sub single_holidays { >- my ( $self, $date ) = @_; >- my $branchcode = $self->{branchcode}; >+ my ($self) = @_; >+ > my $cache = Koha::Caches->get_instance(); > my $single_holidays = $cache->get_from_cache('single_holidays'); > >@@ -107,42 +107,38 @@ sub single_holidays { > # ... > # } > >+ # Populate the cache if necessary > unless ($single_holidays) { > my $dbh = C4::Context->dbh; > $single_holidays = {}; > >- # push holidays for each branch >- my $branches_sth = >- $dbh->prepare('SELECT distinct(branchcode) FROM special_holidays'); >- $branches_sth->execute(); >- while ( my $br = $branches_sth->fetchrow ) { >- my $single_holidays_sth = $dbh->prepare( >-'SELECT day, month, year FROM special_holidays WHERE branchcode = ? AND isexception = 0' >- ); >- $single_holidays_sth->execute($br); >- >- my @ymd_arr; >- while ( my ( $day, $month, $year ) = >- $single_holidays_sth->fetchrow ) >- { >- my $dt = DateTime->new( >- day => $day, >- month => $month, >- year => $year, >- time_zone => 'floating', >- )->truncate( to => 'day' ); >- push @ymd_arr, $dt->ymd(''); >- } >- $single_holidays->{$br} = \@ymd_arr; >- } # br >+ # Push holidays for each branch >+ my $single_holidays_sth = $dbh->prepare( >+'SELECT day, month, year, branchcode FROM special_holidays WHERE isexception = 0' >+ ); >+ $single_holidays_sth->execute(); >+ >+ while ( my ( $day, $month, $year, $branch ) = >+ $single_holidays_sth->fetchrow ) >+ { >+ my $datestring = >+ sprintf( "%04d", $year ) >+ . sprintf( "%02d", $month ) >+ . sprintf( "%02d", $day ); >+ >+ $single_holidays->{$branch}->{$datestring} = 1; >+ } > $cache->set_in_cache( 'single_holidays', $single_holidays, >- { expiry => 76800 } ) #24 hrs ; >+ { expiry => 76800 } ); > } > >- my $holidays = ( $single_holidays->{$branchcode} ); >- for my $hols (@$holidays ) { >- return 1 if ( $date == $hols ) #match ymds; >- } >+ return $single_holidays->{ $self->{branchcode} } // {}; >+} >+ >+sub is_single_holiday { >+ my ( $self, $date ) = @_; >+ >+ return 1 if ( $self->single_holidays->{$date} ); > return 0; > } > >@@ -290,7 +286,7 @@ sub is_holiday { > return 1; > } > >- if ($self->single_holidays( $ymd ) == 1 ) { >+ if ($self->is_single_holiday( $ymd ) == 1 ) { > return 1; > } > >-- >2.20.1
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 18519
: 105843