use C4::SMS;
use C4::Debug;
use Koha::DateUtils;
-
use Date::Calc qw( Add_Delta_Days );
use Encode;
use Carp;
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 ) = @_;
$branchcode ||= '';
- if ( C4::Context->preference('IndependantBranches')
+ if ( C4::Context->preference('IndependentBranches')
and $branchcode
and C4::Context->userenv ) {
}
}
-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 = ?" :
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)
=cut
-my %columns = ();
sub _parseletter {
my ( $letter, $table, $values ) = @_;
}
if ($letter->{content} && $letter->{content} =~ /<<today>>/) {
- my @da = localtime();
- my $todaysdate = "$da[2]:$da[1] " . C4::Dates->today();
+ my $todaysdate = output_pref( DateTime->now() );
$letter->{content} =~ s/<<today>>/$todaysdate/go;
}
while ( my ($field, $val) = each %$values ) {
my $replacetablefield = "<<$table.$field>>";
my $replacefield = "<<$field>>";
- $val =~ s/\p{P}(?=$)//g if $val;
+ $val =~ s/\p{P}$// if $val && $table=~/biblio/;
+ #BZ 9886: Assuming that we want to eliminate ISBD punctuation here
+ #Therefore adding the test on biblio. This includes biblioitems,
+ #but excludes items. Removed unneeded global and lookahead.
+
my $replacedby = defined ($val) ? $val : '';
($letter->{title} ) and do {
$letter->{title} =~ s/$replacetablefield/$replacedby/g;