]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 978146: activity entry when setting flags isn't split across multiple rows
authorByron Jones <glob@mozilla.com>
Wed, 11 Jun 2014 15:11:51 +0000 (23:11 +0800)
committerByron Jones <glob@mozilla.com>
Wed, 11 Jun 2014 15:11:51 +0000 (23:11 +0800)
r=dkl,a=sgreen

Bugzilla/Attachment.pm
Bugzilla/Bug.pm
editusers.cgi

index 79b7f1213e0ef4711b6a87118600fcc96869d178..19c10c8fea66c5228de158f864cecdf8cc3450cd 100644 (file)
@@ -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)) {
index d10fbdfd76b02ae84dd88393299c5cb1d308f6d0..cb132f31dab6d85e100502ebe3156eea16432ef8 100644 (file)
@@ -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);
     }
 }
 
index 3ce22068e98d4eee2e7d7bcf43ef88bcd1e7cc9e..5eb49d1396cfbe19d50ac68cfcbb68c082158499 100755 (executable)
@@ -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;