Skip to content

Commit

Permalink
Bug 978146: activity entry when setting flags isn't split across mult…
Browse files Browse the repository at this point in the history
…iple rows

r=dkl,a=sgreen
  • Loading branch information
globau committed Jun 11, 2014
1 parent 4d5e362 commit 02719d2
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 21 deletions.
10 changes: 3 additions & 7 deletions Bugzilla/Attachment.pm
Original file line number Diff line number Diff line change
Expand Up @@ -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)) {
Expand Down
14 changes: 8 additions & 6 deletions Bugzilla/Bug.pm
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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);
}
}

Expand Down
11 changes: 3 additions & 8 deletions editusers.cgi
Original file line number Diff line number Diff line change
Expand Up @@ -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 = ?',
Expand All @@ -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;
Expand Down

0 comments on commit 02719d2

Please sign in to comment.