Bug 28567: Fix 0 vs "" vs undef on the admin library form
There are two things here: * Branches.pickup_location has a default = 1 in DB, we should not set to undef if 0 or it will be set to 1 when stored. * The other fields are all text (varchar, mediumtext or longtext) and can be NULL. They are correct set to NULL when a new library is created but set to an empty string when the library is modified. That's not consistent Test plan: 0. Don't apply the patch 1. Create a new library, set pickup location to "No" 2. Save => Pickup location is set to YES => In DB notice that the different values you didn't fill in are set to NULL 3. Edit the library 4. Save => In DB notice that the different values you didn't fill in are now set to an empty string 5. Apply the patch, restart_all 6. Run the updatedatabase script => In DB all the empty string values are set to NULL 7. Repeat 1 to 4 and confirm that everything is now working as expected Signed-off-by: Owen Leonard <oleonard@myacpl.org> Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl> Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
This commit is contained in:
parent
a09f673471
commit
a844a2211f
2 changed files with 50 additions and 4 deletions
|
@ -91,7 +91,12 @@ if ( $op eq 'add_form' ) {
|
|||
if ($is_a_modif) {
|
||||
my $library = Koha::Libraries->find($branchcode);
|
||||
for my $field (@fields) {
|
||||
$library->$field( scalar $input->param($field) );
|
||||
if ( $field eq 'pickup_location' ) {
|
||||
# Don't fallback to undef/NULL, default is 1 in DB
|
||||
$library->$field( scalar $input->param($field) );
|
||||
} else {
|
||||
$library->$field( scalar $input->param($field) || undef );
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
|
@ -119,12 +124,19 @@ if ( $op eq 'add_form' ) {
|
|||
}
|
||||
catch {
|
||||
push @messages, { type => 'alert', code => 'error_on_update' };
|
||||
}
|
||||
};
|
||||
} else {
|
||||
$branchcode =~ s|\s||g;
|
||||
my $library = Koha::Library->new(
|
||||
{ branchcode => $branchcode,
|
||||
( map { $_ => scalar $input->param($_) || undef } @fields )
|
||||
{
|
||||
branchcode => $branchcode,
|
||||
(
|
||||
map {
|
||||
$_ eq 'pickup_location' # Don't fallback to undef/NULL, default is 1 in DB
|
||||
? ( $_ => scalar $input->param($_) )
|
||||
: ( $_ => scalar $input->param($_) || undef )
|
||||
} @fields
|
||||
)
|
||||
}
|
||||
);
|
||||
|
||||
|
|
34
installer/data/mysql/atomicupdate/bug_28567.perl
Normal file
34
installer/data/mysql/atomicupdate/bug_28567.perl
Normal file
|
@ -0,0 +1,34 @@
|
|||
$DBversion = 'XXX'; # will be replaced by the RM
|
||||
if( CheckVersion( $DBversion ) ) {
|
||||
|
||||
my @fields = qw(
|
||||
branchname
|
||||
branchaddress1
|
||||
branchaddress2
|
||||
branchaddress3
|
||||
branchzip
|
||||
branchcity
|
||||
branchstate
|
||||
branchcountry
|
||||
branchphone
|
||||
branchfax
|
||||
branchemail
|
||||
branchillemail
|
||||
branchreplyto
|
||||
branchreturnpath
|
||||
branchurl
|
||||
branchip
|
||||
branchnotes
|
||||
opac_info
|
||||
marcorgcode
|
||||
);
|
||||
for my $f ( @fields ) {
|
||||
$dbh->do(qq{
|
||||
UPDATE branches
|
||||
SET $f = NULL
|
||||
WHERE $f = ""
|
||||
});
|
||||
}
|
||||
|
||||
NewVersion( $DBversion, 28567, "Set to NULL empty branches fields");
|
||||
}
|
Loading…
Reference in a new issue