Commit 26a4b33e authored by Jared Camins-Esakov's avatar Jared Camins-Esakov

Bug 9452: C4::Letters not Plack-compatible

Prior to this patch, at more-or-less random intervals pages working
with notices will cease to function. To test:

1) Apply patch.
2) Try to edit some notices.
3) Trigger some notices.
4) If you were able to edit the notices and trigger the notices, sign
   off.
Signed-off-by: Katrin Fischer's avatarKatrin Fischer <Katrin.Fischer.83@web.de>
All tests and QA script pass.
I did a regression script without Plack:
- edit, add, delete and copy notice
- trigger checkout/checkin notice
- print issueslip
No problems found.
Signed-off-by: Jared Camins-Esakov's avatarJared Camins-Esakov <jcamins@cpbibliography.com>
parent f04b9ec3
......@@ -117,7 +117,12 @@ sub GetLetters {
return \%letters;
}
my %letter;
# FIXME: using our here means that a Plack server will need to be
# restarted fairly regularly when working with this routine.
# A better option would be to use Koha::Cache and use a cache
# that actually works in a persistent environment, but as a
# short-term fix, our will work.
our %letter;
sub getletter {
my ( $module, $code, $branchcode ) = @_;
......@@ -551,15 +556,17 @@ sub _substitute_tables {
}
}
my %handles = ();
sub _parseletter_sth {
my $table = shift;
my $sth;
unless ($table) {
carp "ERROR: _parseletter_sth() called without argument (table)";
return;
}
# check cache first
(defined $handles{$table}) and return $handles{$table};
# NOTE: we used to check whether we had a statement handle cached in
# a %handles module-level variable. This was a dumb move and
# broke things for the rest of us. prepare_cached is a better
# way to cache statement handles anyway.
my $query =
($table eq 'biblio' ) ? "SELECT * FROM $table WHERE biblionumber = ?" :
($table eq 'biblioitems' ) ? "SELECT * FROM $table WHERE biblionumber = ?" :
......@@ -579,11 +586,11 @@ sub _parseletter_sth {
warn "ERROR: No _parseletter_sth query for table '$table'";
return; # nothing to get
}
unless ($handles{$table} = C4::Context->dbh->prepare($query)) {
unless ($sth = C4::Context->dbh->prepare_cached($query)) {
warn "ERROR: Failed to prepare query: '$query'";
return;
}
return $handles{$table}; # now cache is populated for that $table
return $sth; # now cache is populated for that $table
}
=head2 _parseletter($letter, $table, $values)
......@@ -597,7 +604,6 @@ sub _parseletter_sth {
=cut
my %columns = ();
sub _parseletter {
my ( $letter, $table, $values ) = @_;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment