From eb58cbf4e63f4cbcbbec5e650afc822a8ae3c250 Mon Sep 17 00:00:00 2001 From: "lpsolit%gmail.com" <> Date: Sat, 14 Jun 2008 02:45:45 +0000 Subject: [PATCH] =?utf8?q?Bug=20439075:=20Importing=20bugs=20which=20have?= =?utf8?q?=20a=20multi-select=20field=20with=20a=20single=20value=20fails?= =?utf8?q?=20-=20Patch=20by=20Fr=C3=83=C2=A9d=C3=83=C2=A9ric=20Buclin=20=20r=3Dghendricks=20a=3DLpSolit?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- importxml.pl | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/importxml.pl b/importxml.pl index 63146c1519..eaec9d99b9 100755 --- a/importxml.pl +++ b/importxml.pl @@ -281,6 +281,14 @@ sub flag_handler { return $err; } +# Converts and returns the input data as an array. +sub _to_array { + my $value = shift; + + $value = [$value] if !ref($value); + return @$value; +} + ############################################################################### # XML Handlers # ############################################################################### @@ -565,11 +573,11 @@ sub process_bug { $comments .= $urlbase . "show_bug.cgi?id=" . $bug_fields{'bug_id'} . "\n"; if ( defined $bug_fields{'dependson'} ) { $comments .= "This bug depended on bug(s) " . - join(' ', @{$bug_fields{'dependson'}}) . ".\n"; + join(' ', _to_array($bug_fields{'dependson'})) . ".\n"; } if ( defined $bug_fields{'blocked'} ) { $comments .= "This bug blocked bug(s) " . - join(' ', @{$bug_fields{'blocked'}}) . ".\n"; + join(' ', _to_array($bug_fields{'blocked'})) . ".\n"; } # Now we process each of the fields in turn and make sure they contain @@ -1057,7 +1065,7 @@ sub process_bug { } } elsif ($field->type == FIELD_TYPE_MULTI_SELECT) { my @legal_values; - foreach my $item (@$value) { + foreach my $item (_to_array($value)) { my $is_well_formed = check_field($custom_field, $item, undef, ERR_LEVEL); if ($is_well_formed) { push(@legal_values, $item); @@ -1116,7 +1124,7 @@ sub process_bug { if ( defined $bug_fields{'cc'} ) { my %ccseen; my $sth_cc = $dbh->prepare("INSERT INTO cc (bug_id, who) VALUES (?,?)"); - foreach my $person (@{$bug_fields{'cc'}}) { + foreach my $person (_to_array($bug_fields{'cc'})) { next unless $person; my $uid; if ($uid = login_to_id($person)) { -- 2.47.2