From 7d2c22642310a85bb0ffd8d7c47ac8a62dea860e Mon Sep 17 00:00:00 2001 From: "wicked%sci.fi" <> Date: Sat, 14 Feb 2009 09:45:44 +0000 Subject: Bug 333648: Add flag change to activity log and bugmail when only setter is changed - Patch by Teemu Mannermaa r/a=LpSolit --- Bugzilla/Flag.pm | 13 ++++++++----- Bugzilla/Util.pm | 28 +--------------------------- 2 files changed, 9 insertions(+), 32 deletions(-) diff --git a/Bugzilla/Flag.pm b/Bugzilla/Flag.pm index 618cd3ef4..f0286575f 100644 --- a/Bugzilla/Flag.pm +++ b/Bugzilla/Flag.pm @@ -515,7 +515,7 @@ sub snapshot { 'attach_id' => $attach_id }); my @summaries; foreach my $flag (@$flags) { - my $summary = $flag->type->name . $flag->status; + my $summary = $flag->setter->nick . ':' . $flag->type->name . $flag->status; $summary .= "(" . $flag->requestee->login . ")" if $flag->requestee; push(@summaries, $summary); } @@ -625,10 +625,13 @@ sub update_activity { my ($bug_id, $attach_id, $timestamp, $old_summaries, $new_summaries) = @_; my $dbh = Bugzilla->dbh; - $old_summaries = join(", ", @$old_summaries); - $new_summaries = join(", ", @$new_summaries); - my ($removed, $added) = diff_strings($old_summaries, $new_summaries); - if ($removed ne $added) { + my ($removed, $added) = diff_arrays($old_summaries, $new_summaries); + if (scalar @$removed || scalar @$added) { + # Remove flag requester/setter information + foreach (@$removed, @$added) { s/^\S+:// } + + $removed = join(", ", @$removed); + $added = join(", ", @$added); my $field_id = get_field_id('flagtypes.name'); $dbh->do('INSERT INTO bugs_activity (bug_id, attach_id, who, bug_when, fieldid, removed, added) diff --git a/Bugzilla/Util.pm b/Bugzilla/Util.pm index 3573ad148..9122ed3cf 100644 --- a/Bugzilla/Util.pm +++ b/Bugzilla/Util.pm @@ -37,7 +37,7 @@ use base qw(Exporter); css_class_quote html_light_quote url_decode i_am_cgi get_netaddr correct_urlbase lsearch ssl_require_redirect use_attachbase - diff_arrays diff_strings + diff_arrays trim wrap_hard wrap_comment find_wrap_point format_time format_time_decimal validate_date validate_time @@ -345,23 +345,6 @@ sub trim { return $str; } -sub diff_strings { - my ($oldstr, $newstr) = @_; - - # Split the old and new strings into arrays containing their values. - $oldstr =~ s/[\s,]+/ /g; - $newstr =~ s/[\s,]+/ /g; - my @old = split(" ", $oldstr); - my @new = split(" ", $newstr); - - my ($rem, $add) = diff_arrays(\@old, \@new); - - my $removed = join (", ", @$rem); - my $added = join (", ", @$add); - - return ($removed, $added); -} - sub wrap_comment { my ($comment, $cols) = @_; my $wrappedcomment = ""; @@ -681,7 +664,6 @@ Bugzilla::Util - Generic utility functions for bugzilla # Functions for manipulating strings $val = trim(" abc "); - ($removed, $added) = diff_strings($old, $new); $wrapped = wrap_comment($comment); # Functions for formatting time @@ -862,14 +844,6 @@ If the item is not in the list, returns -1. Removes any leading or trailing whitespace from a string. This routine does not modify the existing string. -=item C - -Takes two strings containing a list of comma- or space-separated items -and returns what items were removed from or added to the new one, -compared to the old one. Returns a list, where the first entry is a scalar -containing removed items, and the second entry is a scalar containing added -items. - =item C Wraps a string, so that a line is I longer than C<$size>. -- cgit v1.2.3-24-g4f1b