From ba956f07b4f06f82ff679d8475bbde2dda288e6d Mon Sep 17 00:00:00 2001 From: "lpsolit%gmail.com" <> Date: Sun, 20 Jan 2008 21:03:53 +0000 Subject: Bug 413222: Implement $attachment->remove_from_db - Patch by Frédéric Buclin a=LpSolit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Bugzilla/Attachment.pm | 28 ++++++++++++++++++++++++++-- attachment.cgi | 10 +--------- 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/Bugzilla/Attachment.pm b/Bugzilla/Attachment.pm index dafdf70ad..954765f03 100644 --- a/Bugzilla/Attachment.pm +++ b/Bugzilla/Attachment.pm @@ -758,8 +758,6 @@ Params: C<$bug> - Bugzilla::Bug object - the bug for which to insert Returns: the ID of the new attachment. -=back - =cut sub insert_attachment_for_bug { @@ -932,4 +930,30 @@ sub insert_attachment_for_bug { return $attachment; } +=pod + +=item C + +Description: removes an attachment from the DB. + +Params: none + +Returns: nothing + +=back + +=cut + +sub remove_from_db { + my $self = shift; + my $dbh = Bugzilla->dbh; + + $dbh->bz_start_transaction(); + $dbh->do('DELETE FROM flags WHERE attach_id = ?', undef, $self->id); + $dbh->do('DELETE FROM attach_data WHERE id = ?', undef, $self->id); + $dbh->do('UPDATE attachments SET mimetype = ?, ispatch = ?, isurl = ?, isobsolete = ? + WHERE attach_id = ?', undef, ('text/plain', 0, 0, 1, $self->id)); + $dbh->bz_commit_transaction(); +} + 1; diff --git a/attachment.cgi b/attachment.cgi index 6fd238c2f..529e0aa0d 100755 --- a/attachment.cgi +++ b/attachment.cgi @@ -649,19 +649,11 @@ sub delete_attachment { $template->process("attachment/delete_reason.txt.tmpl", $vars, \$msg) || ThrowTemplateError($template->error()); - $dbh->bz_start_transaction(); - $dbh->do('DELETE FROM attach_data WHERE id = ?', undef, $attachment->id); - $dbh->do('UPDATE attachments SET mimetype = ?, ispatch = ?, isurl = ?, - isobsolete = ? - WHERE attach_id = ?', undef, - ('text/plain', 0, 0, 1, $attachment->id)); - $dbh->do('DELETE FROM flags WHERE attach_id = ?', undef, $attachment->id); - $dbh->bz_commit_transaction(); - # If the attachment is stored locally, remove it. if (-e $attachment->_get_local_filename) { unlink $attachment->_get_local_filename; } + $attachment->remove_from_db(); # Now delete the token. delete_token($token); -- cgit v1.2.3-24-g4f1b