Bug 8391: prevent error when viewing circ history with bad dates

Sometime the circ history will contain "0000-00-00" as a returndate when
an item was lost rather than returned. This currently causes an error
when attempting to parse the dates, this patch causes an empty string to
be returned instead.

Note: a future enhancement should distinguish between "no date provided"
and "invalid date provided" to allow distinctions to be made.

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
This commit is contained in:
Robin Sheat 2012-07-27 11:34:17 +02:00 committed by Chris Cormack
parent 75504a2115
commit 694e6bebfd
1 changed files with 3 additions and 1 deletions

View File

@ -80,6 +80,7 @@ sub dt_from_string {
} elsif ( $date_format eq 'sql' ) {
$date_string =~
s/(\d{4})(\d{2})(\d{2})\s+(\d{2})(\d{2})(\d{2})/$1-$2-$3T$4:$5:$6/;
return if ($date_string =~ /^0000-00-00/);
$date_string =~ s/00T/01T/;
}
}
@ -158,7 +159,8 @@ sub format_sqldatetime {
my $force_pref = shift; # if testing we want to override Context
if ( defined $str && $str =~ m/^\d{4}-\d{2}-\d{2}/ ) {
my $dt = dt_from_string( $str, 'sql' );
$dt->truncate( to => 'minutes' );
return q{} unless $dt;
$dt->truncate( to => 'minute' );
return output_pref( $dt, $force_pref );
}
return q{};