From 2acf61315433aaf052deb5afddbe9660bab56b00 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Wed, 12 Nov 2014 17:14:32 +0100 Subject: [PATCH] [PASSED QA] Bug 13226: 9999-12-31 should not considered as a valid date DateTime::Format::DateParse (called in Koha::DateUtils::dt_from_string) does not manage to parse 9999-12-31 if a time zone is given. my $date = DateTime->new(year => 9999, month => 12, day => 31); => OK DateTime::Format::DateParse->parse_datetime( '9999-12-31' ); => OK DateTime::Format::DateParse->parse_datetime( '9999-12-31', 'America/Los_Angeles' ); => KO (~20sec on my laptop) It should not be considered as a valid date when the letter is parsed. Signed-off-by: Owen Leonard Note that to reproduce the problem you much be checking in items from an account which has been restricted indefinitely (either manually or by the overdues process). With this patch such checkins go from taking around 50 seconds (in my test system) to around 7 to 10 seconds. Signed-off-by: Katrin Fischer Good catch! Works as described, no problems found. --- C4/Letters.pm | 1 + 1 file changed, 1 insertion(+) diff --git a/C4/Letters.pm b/C4/Letters.pm index 519c0f6..8c9f507 100644 --- a/C4/Letters.pm +++ b/C4/Letters.pm @@ -654,6 +654,7 @@ sub _parseletter { my $replacedby = defined ($val) ? $val : ''; if ( $replacedby and not $replacedby =~ m|0000-00-00| + and not $replacedby =~ m|9999-12-31| and $replacedby =~ m|^\d{4}-\d{2}-\d{2}( \d{2}:\d{2}:\d{2})?$| ) { # If the value is XXXX-YY-ZZ[ AA:BB:CC] we assume it is a date -- 1.9.1