Bug 315339: User::match_field() now leaves fields undefined instead of as empty strings when no value is passed (for type eq "single" only) - My previous patch was buggy as fields accepting only one user and those accepting several users must be considered differently. Patch by Fr�d�ric Buclin <LpSolit@gmail.com> r/a=justdave

This commit is contained in:
lpsolit%gmail.com 2005-11-23 10:56:10 +00:00
Родитель 2485d5e71c
Коммит 3728432809
1 изменённых файлов: 11 добавлений и 4 удалений

Просмотреть файл

@ -955,10 +955,13 @@ sub match_field {
# the field here, and not set it to '', so that we will add
# things to an empty list, and not to a list containing one
# empty string.
# If no match or more than one match is found for this field,
# If the field accepts only one match (type eq "single") and
# no match or more than one match is found for this field,
# we will set it back to '' so that the field remains defined
# outside this function (it was if we came here; else we would
# have returned ealier above).
# have returned earlier above).
# If the field accepts several matches (type eq "multi") and no match
# is found, we leave this field undefined (= empty array).
$cgi->delete($field);
my @queries = ();
@ -1044,10 +1047,14 @@ sub match_field {
}
}
# Above, we deleted the field before adding matches. If no match
# or more than one match has been found, we set it back to '' so
# or more than one match has been found for a field expecting only
# one match (type eq "single"), we set it back to '' so
# that the caller of this function can still check whether this
# field was defined or not (and it was if we came here).
$cgi->param($field, '') unless defined $cgi->param($field);
if (!defined $cgi->param($field)
&& $fields->{$field}->{'type'} eq 'single') {
$cgi->param($field, '');
}
}
my $retval;