Lines 51-57
sub _init {
Link Here
|
51 |
} |
51 |
} |
52 |
|
52 |
|
53 |
sub exception_holidays { |
53 |
sub exception_holidays { |
54 |
my ( $self ) = @_; |
54 |
my ($self) = @_; |
55 |
|
55 |
|
56 |
my $cache = Koha::Caches->get_instance(); |
56 |
my $cache = Koha::Caches->get_instance(); |
57 |
my $exception_holidays = $cache->get_from_cache('exception_holidays'); |
57 |
my $exception_holidays = $cache->get_from_cache('exception_holidays'); |
Lines 81-87
sub exception_holidays {
Link Here
|
81 |
{ expiry => 76800 } ); |
81 |
{ expiry => 76800 } ); |
82 |
} |
82 |
} |
83 |
|
83 |
|
84 |
return $exception_holidays->{$self->{branchcode}} // {}; |
84 |
return $exception_holidays->{ $self->{branchcode} } // {}; |
85 |
} |
85 |
} |
86 |
|
86 |
|
87 |
sub is_exception_holiday { |
87 |
sub is_exception_holiday { |
Lines 92-99
sub is_exception_holiday {
Link Here
|
92 |
} |
92 |
} |
93 |
|
93 |
|
94 |
sub single_holidays { |
94 |
sub single_holidays { |
95 |
my ( $self, $date ) = @_; |
95 |
my ($self) = @_; |
96 |
my $branchcode = $self->{branchcode}; |
96 |
|
97 |
my $cache = Koha::Caches->get_instance(); |
97 |
my $cache = Koha::Caches->get_instance(); |
98 |
my $single_holidays = $cache->get_from_cache('single_holidays'); |
98 |
my $single_holidays = $cache->get_from_cache('single_holidays'); |
99 |
|
99 |
|
Lines 106-147
sub single_holidays {
Link Here
|
106 |
# ... |
106 |
# ... |
107 |
# } |
107 |
# } |
108 |
|
108 |
|
|
|
109 |
# Populate the cache if necessary |
109 |
unless ($single_holidays) { |
110 |
unless ($single_holidays) { |
110 |
my $dbh = C4::Context->dbh; |
111 |
my $dbh = C4::Context->dbh; |
111 |
$single_holidays = {}; |
112 |
$single_holidays = {}; |
112 |
|
113 |
|
113 |
# push holidays for each branch |
114 |
# Push holidays for each branch |
114 |
my $branches_sth = |
115 |
my $single_holidays_sth = $dbh->prepare( |
115 |
$dbh->prepare('SELECT distinct(branchcode) FROM special_holidays'); |
116 |
'SELECT day, month, year, branchcode FROM special_holidays WHERE isexception = 0' |
116 |
$branches_sth->execute(); |
117 |
); |
117 |
while ( my $br = $branches_sth->fetchrow ) { |
118 |
$single_holidays_sth->execute(); |
118 |
my $single_holidays_sth = $dbh->prepare( |
119 |
|
119 |
'SELECT day, month, year FROM special_holidays WHERE branchcode = ? AND isexception = 0' |
120 |
while ( my ( $day, $month, $year, $branch ) = |
120 |
); |
121 |
$single_holidays_sth->fetchrow ) |
121 |
$single_holidays_sth->execute($br); |
122 |
{ |
122 |
|
123 |
my $datestring = |
123 |
my @ymd_arr; |
124 |
sprintf( "%04d", $year ) |
124 |
while ( my ( $day, $month, $year ) = |
125 |
. sprintf( "%02d", $month ) |
125 |
$single_holidays_sth->fetchrow ) |
126 |
. sprintf( "%02d", $day ); |
126 |
{ |
127 |
|
127 |
my $dt = DateTime->new( |
128 |
$single_holidays->{$branch}->{$datestring} = 1; |
128 |
day => $day, |
129 |
} |
129 |
month => $month, |
|
|
130 |
year => $year, |
131 |
time_zone => 'floating', |
132 |
)->truncate( to => 'day' ); |
133 |
push @ymd_arr, $dt->ymd(''); |
134 |
} |
135 |
$single_holidays->{$br} = \@ymd_arr; |
136 |
} # br |
137 |
$cache->set_in_cache( 'single_holidays', $single_holidays, |
130 |
$cache->set_in_cache( 'single_holidays', $single_holidays, |
138 |
{ expiry => 76800 } ) #24 hrs ; |
131 |
{ expiry => 76800 } ); |
139 |
} |
132 |
} |
140 |
|
133 |
|
141 |
my $holidays = ( $single_holidays->{$branchcode} ); |
134 |
return $single_holidays->{ $self->{branchcode} } // {}; |
142 |
for my $hols (@$holidays ) { |
135 |
} |
143 |
return 1 if ( $date == $hols ) #match ymds; |
136 |
|
144 |
} |
137 |
sub is_single_holiday { |
|
|
138 |
my ( $self, $date ) = @_; |
139 |
|
140 |
return 1 if ( $self->single_holidays->{$date} ); |
145 |
return 0; |
141 |
return 0; |
146 |
} |
142 |
} |
147 |
|
143 |
|
Lines 307-313
sub is_holiday {
Link Here
|
307 |
return 1; |
303 |
return 1; |
308 |
} |
304 |
} |
309 |
|
305 |
|
310 |
if ($self->single_holidays( $ymd ) == 1 ) { |
306 |
if ($self->is_single_holiday( $ymd ) == 1 ) { |
311 |
return 1; |
307 |
return 1; |
312 |
} |
308 |
} |
313 |
|
309 |
|
314 |
- |
|
|