Commit ae5ac4fd authored by lpsolit%gmail.com's avatar lpsolit%gmail.com

Bug 323003: [importxml.pl] attachments should be imported with the original…

Bug 323003: [importxml.pl] attachments should be imported with the original creator - Patch by Fré©ric Buclin <LpSolit@gmail.com> r=ghendricks a=LpSolit
parent 781336a7
...@@ -362,6 +362,7 @@ sub process_attachment() { ...@@ -362,6 +362,7 @@ sub process_attachment() {
$attachment{'isobsolete'} = $attach->{'att'}->{'isobsolete'} || 0; $attachment{'isobsolete'} = $attach->{'att'}->{'isobsolete'} || 0;
$attachment{'isprivate'} = $attach->{'att'}->{'isprivate'} || 0; $attachment{'isprivate'} = $attach->{'att'}->{'isprivate'} || 0;
$attachment{'filename'} = $attach->field('filename') || "file"; $attachment{'filename'} = $attach->field('filename') || "file";
$attachment{'attacher'} = $attach->field('attacher');
# Attachment data is not exported in versions 2.20 and older. # Attachment data is not exported in versions 2.20 and older.
if (defined $attach->first_child('data') && if (defined $attach->first_child('data') &&
defined $attach->first_child('data')->{'att'}->{'encoding'}) { defined $attach->first_child('data')->{'att'}->{'encoding'}) {
...@@ -1150,13 +1151,16 @@ sub process_bug { ...@@ -1150,13 +1151,16 @@ sub process_bug {
$err .= " Marking attachment public\n"; $err .= " Marking attachment public\n";
$att->{'isprivate'} = 0; $att->{'isprivate'} = 0;
} }
my $attacher_id = $att->{'attacher'} ? login_to_id($att->{'attacher'}) : undef;
$dbh->do("INSERT INTO attachments $dbh->do("INSERT INTO attachments
(bug_id, creation_ts, modification_time, filename, description, (bug_id, creation_ts, modification_time, filename, description,
mimetype, ispatch, isprivate, isobsolete, submitter_id) mimetype, ispatch, isprivate, isobsolete, submitter_id)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
undef, $id, $att->{'date'}, $att->{'date'}, $att->{'filename'}, undef, $id, $att->{'date'}, $att->{'date'}, $att->{'filename'},
$att->{'desc'}, $att->{'ctype'}, $att->{'ispatch'}, $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_id = $dbh->bz_last_key( 'attachments', 'attach_id' );
my $att_data = $att->{'data'}; my $att_data = $att->{'data'};
my $sth = $dbh->prepare("INSERT INTO attach_data (id, thedata) my $sth = $dbh->prepare("INSERT INTO attach_data (id, thedata)
...@@ -1164,7 +1168,18 @@ sub process_bug { ...@@ -1164,7 +1168,18 @@ sub process_bug {
trick_taint($att_data); trick_taint($att_data);
$sth->bind_param( 1, $att_data, $dbh->BLOB_TYPE ); $sth->bind_param( 1, $att_data, $dbh->BLOB_TYPE );
$sth->execute(); $sth->execute();
$comments .= "Imported an attachment (id=$att_id)\n"; $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 # Process attachment flags
foreach my $aflag (@{ $att->{'flags'} }) { foreach my $aflag (@{ $att->{'flags'} }) {
......
...@@ -92,6 +92,7 @@ ...@@ -92,6 +92,7 @@
<filename>[% a.filename FILTER xml %]</filename> <filename>[% a.filename FILTER xml %]</filename>
<type>[% a.contenttype FILTER xml %]</type> <type>[% a.contenttype FILTER xml %]</type>
<size>[% a.datasize FILTER xml %]</size> <size>[% a.datasize FILTER xml %]</size>
<attacher>[% a.attacher.email FILTER xml %]</attacher>
[% IF displayfields.attachmentdata %] [% IF displayfields.attachmentdata %]
<data encoding="base64">[% a.data FILTER base64 %]</data> <data encoding="base64">[% a.data FILTER base64 %]</data>
[% END %] [% END %]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment