]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 323003: [importxml.pl] attachments should be imported with the original creator...
authorlpsolit%gmail.com <>
Mon, 17 Mar 2008 21:37:01 +0000 (21:37 +0000)
committerlpsolit%gmail.com <>
Mon, 17 Mar 2008 21:37:01 +0000 (21:37 +0000)
importxml.pl
template/en/default/bug/show.xml.tmpl

index 04dd98625498ecec7c1620a6ac5ced72a80738a6..8dcd4936b76c41df112b6afe6dd67c98fefd5de9 100755 (executable)
@@ -362,6 +362,7 @@ sub process_attachment() {
     $attachment{'isobsolete'} = $attach->{'att'}->{'isobsolete'} || 0;
     $attachment{'isprivate'}  = $attach->{'att'}->{'isprivate'} || 0;
     $attachment{'filename'}   = $attach->field('filename') || "file";
+    $attachment{'attacher'}   = $attach->field('attacher');
     # Attachment data is not exported in versions 2.20 and older.
     if (defined $attach->first_child('data') &&
             defined $attach->first_child('data')->{'att'}->{'encoding'}) {
@@ -1150,13 +1151,16 @@ sub process_bug {
             $err .= "   Marking attachment public\n";
             $att->{'isprivate'} = 0;
         }
+
+        my $attacher_id = $att->{'attacher'} ? login_to_id($att->{'attacher'}) : undef;
+
         $dbh->do("INSERT INTO attachments 
                  (bug_id, creation_ts, modification_time, filename, description,
                  mimetype, ispatch, isprivate, isobsolete, submitter_id) 
                  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
             undef, $id, $att->{'date'}, $att->{'date'}, $att->{'filename'},
             $att->{'desc'}, $att->{'ctype'}, $att->{'ispatch'},
-            $att->{'isprivate'}, $att->{'isobsolete'}, $exporterid);
+            $att->{'isprivate'}, $att->{'isobsolete'}, $attacher_id || $exporterid);
         my $att_id   = $dbh->bz_last_key( 'attachments', 'attach_id' );
         my $att_data = $att->{'data'};
         my $sth = $dbh->prepare("INSERT INTO attach_data (id, thedata) 
@@ -1164,7 +1168,18 @@ sub process_bug {
         trick_taint($att_data);
         $sth->bind_param( 1, $att_data, $dbh->BLOB_TYPE );
         $sth->execute();
+
         $comments .= "Imported an attachment (id=$att_id)\n";
+        if (!$attacher_id) {
+            if ($att->{'attacher'}) {
+                $err .= "The original submitter of attachment $att_id was\n   ";
+                $err .= $att->{'attacher'} . ", but he doesn't have an account here.\n";
+            }
+            else {
+                $err .= "The original submitter of attachment $att_id is unknown.\n";
+            }
+            $err .= "   Reassigning to the person who moved it here: $exporter_login.\n";
+        }
 
         # Process attachment flags
         foreach my $aflag (@{ $att->{'flags'} }) {
index 8c490c07666bdc0a98d55726cdf6b52aaf15b93a..714eee5170c92635d3f452180a96d84606b0d4d1 100644 (file)
@@ -92,6 +92,7 @@
             <filename>[% a.filename FILTER xml %]</filename>
             <type>[% a.contenttype FILTER xml %]</type>
             <size>[% a.datasize FILTER xml %]</size>
+            <attacher>[% a.attacher.email FILTER xml %]</attacher>
         [% IF displayfields.attachmentdata %]
             <data encoding="base64">[% a.data FILTER base64 %]</data>
         [% END %]