From c14863cf44f5a7c29fda25bb1557f5546e9c6432 Mon Sep 17 00:00:00 2001 From: Galen Charlton Date: Wed, 17 Dec 2008 09:53:39 -0600 Subject: [PATCH] bug 2860: allow setting of a syspref value to '0' Fixed invalid test for the existence of CGI parameter; if it is possible that the value of a parameter can be 0, it is not sufficient to test like this: if ($input->param('foo')) { ... since the test will fail for *any* value that evaluates to Perl false. Signed-off-by: Galen Charlton --- admin/systempreferences.pl | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/admin/systempreferences.pl b/admin/systempreferences.pl index f1d69bc0e7..508b3739d1 100755 --- a/admin/systempreferences.pl +++ b/admin/systempreferences.pl @@ -593,12 +593,19 @@ if ($op eq 'add_form') { my $value; # handle multiple value strings (separated by ',') my $params = $input->Vars; - my @values = (); - @values = split("\0",$params->{'value'}) if $params->{'value'}; - for my $vl (@values) { - $value .= "$vl,"; + if (defined $params->{'value'}) { + my @values = (); + @values = split("\0",$params->{'value'}) if defined($params->{'value'}); + if (@values) { + $value = ""; + for my $vl (@values) { + $value .= "$vl,"; + } + $value =~ s/,$//; + } else { + $value = $params->{'value'}; + } } - $value =~ s/,$//; if ($sth->rows) { unless (C4::Context->config('demo')) { my $sth=$dbh->prepare("update systempreferences set value=?,explanation=?,type=?,options=? where variable=?"); -- 2.39.5