From f805627ee9fcffba9f5a509bba652bfd663c6ae7 Mon Sep 17 00:00:00 2001 From: David Lawrence Date: Mon, 11 May 2015 15:36:15 +0100 Subject: Bug 1140575: Comment-creation WebService API should allow tags to be specified r=glob,a=glob --- Bugzilla/Bug.pm | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) (limited to 'Bugzilla/Bug.pm') diff --git a/Bugzilla/Bug.pm b/Bugzilla/Bug.pm index 6fcf14c5a..f24f7a4d2 100644 --- a/Bugzilla/Bug.pm +++ b/Bugzilla/Bug.pm @@ -720,6 +720,7 @@ sub create { my $creation_comment = delete $params->{comment}; my $is_markdown = delete $params->{is_markdown}; my $see_also = delete $params->{see_also}; + my $comment_tags = delete $params->{comment_tags}; # We don't want the bug to appear in the system until it's correctly # protected by groups. @@ -810,7 +811,16 @@ sub create { # Insert the comment. We always insert a comment on bug creation, # but sometimes it's blank. - Bugzilla::Comment->insert_create_data($creation_comment); + my $comment = Bugzilla::Comment->insert_create_data($creation_comment); + + # Add comment tags + if (defined $comment_tags && Bugzilla->user->can_tag_comments) { + $comment_tags = ref $comment_tags ? $comment_tags : [ $comment_tags ]; + foreach my $tag (@{$comment_tags}) { + $comment->add_tag($tag) if defined $tag; + } + $comment->update(); + } # Set up aliases my $sth_aliases = $dbh->prepare('INSERT INTO bugs_aliases (alias, bug_id) VALUES (?, ?)'); @@ -1039,7 +1049,7 @@ sub update { join(', ', @added_names)]; } - # Comments + # Comments and comment tags foreach my $comment (@{$self->{added_comments} || []}) { # Override the Comment's timestamp to be identical to the update # timestamp. @@ -1049,6 +1059,10 @@ sub update { LogActivityEntry($self->id, "work_time", "", $comment->work_time, $user->id, $delta_ts); } + foreach my $tag (@{$self->{added_comment_tags} || []}) { + $comment->add_tag($tag) if defined $tag; + } + $comment->update() if @{$self->{added_comment_tags} || []}; } # Comment Privacy @@ -2459,6 +2473,12 @@ sub set_all { is_markdown => $params->{'comment'}->{'is_markdown'} }); } + if (defined $params->{comment_tags} && Bugzilla->user->can_tag_comments()) { + $self->{added_comment_tags} = ref $params->{comment_tags} + ? $params->{comment_tags} + : [ $params->{comment_tags} ]; + } + if (exists $params->{alias} && $params->{alias}{set}) { $params->{alias} = { add => $params->{alias}{set}, -- cgit v1.2.3-24-g4f1b