]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 439075: Importing bugs which have a multi-select field with a single value fails...
authorlpsolit%gmail.com <>
Sat, 14 Jun 2008 02:44:00 +0000 (02:44 +0000)
committerlpsolit%gmail.com <>
Sat, 14 Jun 2008 02:44:00 +0000 (02:44 +0000)
importxml.pl

index 63146c1519245a995ae0334d27d55f80ab19aed5..eaec9d99b9600a56fbc57f4d224f0ba66ddab1ed 100755 (executable)
@@ -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)) {