From 94a343ae108ac5a59c0c6c678c4d95e1d893877e Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Wed, 13 Nov 2013 11:04:42 -0500 Subject: [PATCH] Bug 11244 - notices ignoring the dateformat preference Overdue notices are using the MySQL date format and not the dateformat in the system preferences. Test Plan: 1) Enable checkout notices for a patron, make sure the date due is in the notice. 2) Check out an item to that patron, note the date is in the mysql datetime format 3) Apply this patch 4) Check out another item to the patron, not the date is now in the preferred date format. --- C4/Letters.pm | 13 +++++++++++++ 1 files changed, 13 insertions(+), 0 deletions(-) diff --git a/C4/Letters.pm b/C4/Letters.pm index 7125148..b0ec9d2 100644 --- a/C4/Letters.pm +++ b/C4/Letters.pm @@ -608,6 +608,15 @@ sub _parseletter_sth { sub _parseletter { my ( $letter, $table, $values ) = @_; + my $dbh = C4::Context->dbh; + my $is_date_sql = q{ + SELECT COUNT(*) + FROM INFORMATION_SCHEMA.COLUMNS + WHERE TABLE_NAME = ? + AND COLUMN_NAME = ? + AND TABLE_SCHEMA = ? + AND DATA_TYPE IN ( 'date', 'datetime', 'timestamp' ) + }; if ( $table eq 'reserves' && $values->{'waitingdate'} ) { my @waitingdate = split /-/, $values->{'waitingdate'}; @@ -634,6 +643,10 @@ sub _parseletter { #but excludes items. Removed unneeded global and lookahead. my $replacedby = defined ($val) ? $val : ''; + + my ( $is_date ) = $dbh->selectrow_array( $is_date_sql, undef, ( $table, $field, C4::Context->config("database") ) ); + $replacedby = output_pref({ dt => dt_from_string( $replacedby ), dateonly => 1 }) if ( $replacedby && $is_date ); + ($letter->{title} ) and do { $letter->{title} =~ s/$replacetablefield/$replacedby/g; $letter->{title} =~ s/$replacefield/$replacedby/g; -- 1.7.2.5