summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xBugzilla/WebService/Bug.pm20
1 files changed, 19 insertions, 1 deletions
diff --git a/Bugzilla/WebService/Bug.pm b/Bugzilla/WebService/Bug.pm
index 5626d1a84..715ebe833 100755
--- a/Bugzilla/WebService/Bug.pm
+++ b/Bugzilla/WebService/Bug.pm
@@ -337,11 +337,23 @@ sub add_comment {
# Append comment
$bug->add_comment($comment, { isprivate => $params->{private},
work_time => $params->{work_time} });
+
+ # Capture the call to bug->update (which creates the new comment) in
+ # a transaction so we're sure to get the correct comment_id.
+
+ my $dbh = Bugzilla->dbh;
+ $dbh->bz_start_transaction();
+
$bug->update();
+ my $new_comment_id = $dbh->bz_last_key('longdescs', 'comment_id');
+
+ $dbh->bz_commit_transaction();
+
# Send mail.
Bugzilla::BugMail::Send($bug->bug_id, { changer => Bugzilla->user->login });
- return undef;
+
+ return { id => $self->type('int', $new_comment_id) };
}
1;
@@ -977,6 +989,10 @@ be ignored.
=back
+=item B<Returns>
+
+A hash with one element, C<id> whose value is the id of the newly-created comment.
+
=item B<Errors>
=over
@@ -1002,6 +1018,8 @@ You did not have the necessary rights to edit the bug.
=item Added in Bugzilla B<3.2>.
+=item Modified to return the new comment's id in Bugzilla B<3.4>
+
=back
=back