From 02719d27e660f1212450a563e0e0b8aefa6c6883 Mon Sep 17 00:00:00 2001 From: Byron Jones Date: Wed, 11 Jun 2014 23:11:51 +0800 Subject: Bug 978146: activity entry when setting flags isn't split across multiple rows r=dkl,a=sgreen --- Bugzilla/Attachment.pm | 10 +++------- Bugzilla/Bug.pm | 14 ++++++++------ editusers.cgi | 11 +++-------- 3 files changed, 14 insertions(+), 21 deletions(-) diff --git a/Bugzilla/Attachment.pm b/Bugzilla/Attachment.pm index 79b7f1213..19c10c8fe 100644 --- a/Bugzilla/Attachment.pm +++ b/Bugzilla/Attachment.pm @@ -890,16 +890,12 @@ sub update { } # Record changes in the activity table. - my $sth = $dbh->prepare('INSERT INTO bugs_activity (bug_id, attach_id, who, bug_when, - fieldid, removed, added) - VALUES (?, ?, ?, ?, ?, ?, ?)'); - + require Bugzilla::Bug; foreach my $field (keys %$changes) { my $change = $changes->{$field}; $field = "attachments.$field" unless $field eq "flagtypes.name"; - my $fieldid = get_field_id($field); - $sth->execute($self->bug_id, $self->id, $user->id, $timestamp, - $fieldid, $change->[0], $change->[1]); + Bugzilla::Bug::LogActivityEntry($self->bug_id, $field, $change->[0], + $change->[1], $user->id, $timestamp, undef, $self->id); } if (scalar(keys %$changes)) { diff --git a/Bugzilla/Bug.pm b/Bugzilla/Bug.pm index d10fbdfd7..cb132f31d 100644 --- a/Bugzilla/Bug.pm +++ b/Bugzilla/Bug.pm @@ -4053,11 +4053,12 @@ sub get_activity { # Update the bugs_activity table to reflect changes made in bugs. sub LogActivityEntry { - my ($i, $col, $removed, $added, $whoid, $timestamp, $comment_id) = @_; + my ($bug_id, $field, $removed, $added, $user_id, $timestamp, $comment_id, + $attach_id) = @_; my $sth = Bugzilla->dbh->prepare_cached( - 'INSERT INTO bugs_activity - (bug_id, who, bug_when, fieldid, removed, added, comment_id) - VALUES (?, ?, ?, ?, ?, ?, ?)'); + 'INSERT INTO bugs_activity + (bug_id, who, bug_when, fieldid, removed, added, comment_id, attach_id) + VALUES (?, ?, ?, ?, ?, ?, ?, ?)'); # in the case of CCs, deps, and keywords, there's a possibility that someone # might try to add or remove a lot of them at once, which might take more @@ -4081,8 +4082,9 @@ sub LogActivityEntry { } trick_taint($addstr); trick_taint($removestr); - my $fieldid = get_field_id($col); - $sth->execute($i, $whoid, $timestamp, $fieldid, $removestr, $addstr, $comment_id); + my $fieldid = get_field_id($field); + $sth->execute($bug_id, $user_id, $timestamp, $fieldid, $removestr, + $addstr, $comment_id, $attach_id); } } diff --git a/editusers.cgi b/editusers.cgi index 3ce22068e..5eb49d139 100755 --- a/editusers.cgi +++ b/editusers.cgi @@ -421,10 +421,6 @@ if ($action eq 'search') { my $sth_set_bug_timestamp = $dbh->prepare('UPDATE bugs SET delta_ts = ? WHERE bug_id = ?'); - my $sth_updateFlag = $dbh->prepare('INSERT INTO bugs_activity - (bug_id, attach_id, who, bug_when, fieldid, removed, added) - VALUES (?, ?, ?, ?, ?, ?, ?)'); - # Flags my $flag_ids = $dbh->selectcol_arrayref('SELECT id FROM flags WHERE requestee_id = ?', @@ -439,16 +435,15 @@ if ($action eq 'search') { # so we have to log these changes manually. my %bugs; push(@{$bugs{$_->bug_id}->{$_->attach_id || 0}}, $_) foreach @$flags; - my $fieldid = get_field_id('flagtypes.name'); foreach my $bug_id (keys %bugs) { foreach my $attach_id (keys %{$bugs{$bug_id}}) { my @old_summaries = Bugzilla::Flag->snapshot($bugs{$bug_id}->{$attach_id}); $_->_set_requestee() foreach @{$bugs{$bug_id}->{$attach_id}}; my @new_summaries = Bugzilla::Flag->snapshot($bugs{$bug_id}->{$attach_id}); my ($removed, $added) = - Bugzilla::Flag->update_activity(\@old_summaries, \@new_summaries); - $sth_updateFlag->execute($bug_id, $attach_id || undef, $userid, - $timestamp, $fieldid, $removed, $added); + Bugzilla::Flag->update_activity(\@old_summaries, \@new_summaries); + LogActivityEntry($bug_id, 'flagtypes.name', $removed, $added, + $userid, $timestamp, undef, $attach_id); } $sth_set_bug_timestamp->execute($timestamp, $bug_id); $updatedbugs{$bug_id} = 1; -- cgit v1.2.3-24-g4f1b