From 1653d246d1aec0f0416646d9c259a5db1c925412 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Tue, 12 Nov 2013 15:07:54 +0100 Subject: [PATCH] [PASSED QA] Bug 11221: SQLHelper::_filter_hash does not manage well dates The default values for date fields is undef, so if a date field contains an empty string, we should insert NULL in the DB. The format_date_in_iso routine should be only called if a date is defined, is not equal to an empty string and does not match the iso regex. Partial test plan: 1. Create a new patron. Leave dateofbirth empty. 2. Save the record. 3. Open the record for editing. 4. Save the record without making changes. 5. Koha gives no error. Signed-off-by: Chris Cormack Signed-off-by: Katrin Fischer Passes all tests and QA script. Now when no date is given NULL is saved to the database. Tested: - Adding a patron without date of birth - Editing the patron, entering a date of birth - Editing the patron, deleting date of birth All worked as expected. --- C4/SQLHelper.pm | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/C4/SQLHelper.pm b/C4/SQLHelper.pm index f1fa7b5..b867094 100644 --- a/C4/SQLHelper.pm +++ b/C4/SQLHelper.pm @@ -404,9 +404,15 @@ sub _filter_hash{ my $elements=join "|",@columns_filtered; foreach my $field (grep {/\b($elements)\b/} keys %$filter_input){ ## supposed to be a hash of simple values, hashes of arrays could be implemented - $filter_input->{$field}=format_date_in_iso($filter_input->{$field}) - if $columns->{$field}{Type}=~/date/ && - ($filter_input->{$field} && $filter_input->{$field} !~C4::Dates->regexp("iso")); + if ( $columns->{$field}{Type}=~/date/ ) { + if ( defined $filter_input->{$field} ) { + if ( $filter_input->{$field} eq q{} ) { + $filter_input->{$field} = undef; + } elsif ( $filter_input->{$field} !~ C4::Dates->regexp("iso") ) { + $filter_input->{$field} = format_date_in_iso($filter_input->{$field}); + } + } + } my ($tmpkeys, $localvalues)=_Process_Operands($filter_input->{$field},"$tablename.$field",$searchtype,$columns); if (@$tmpkeys){ push @values, @$localvalues; -- 1.8.3.2