]> 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:12:09 +0000 (23:12 +0800)
committerByron Jones <glob@mozilla.com>
Wed, 11 Jun 2014 15:12:09 +0000 (23:12 +0800)
r=dkl,a=sgreen

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

index bb99764f2d8f2a551d7658c23f4df0117e1ce347..6e31ba71a4b6adbfee5c3b0c293f7faa6cc674d6 100644 (file)
@@ -67,7 +67,7 @@ use constant SHUTDOWNHTML_RETRY_AFTER => 3600;
 # Global Code
 #####################################################################
 
-# $::SIG{__DIE__} = i_am_cgi() ? \&CGI::Carp::confess : \&Carp::confess;
+#$::SIG{__DIE__} = i_am_cgi() ? \&CGI::Carp::confess : \&Carp::confess;
 
 # Note that this is a raw subroutine, not a method, so $class isn't available.
 sub init_page {
index 380ef3d4cf15cccbb6d3758077ad37ea047cc605..97cd85008b69a8685c309cf4e2b63938a3e0f4b2 100644 (file)
@@ -895,16 +895,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 07a1a018ee8fa1555351710ce7cda44f84eea105..d4d94b23f5d2cc80e1bad322e5eabba0d1676f76 100644 (file)
@@ -3938,7 +3938,8 @@ 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 ($i, $col, $removed, $added, $whoid, $timestamp, $comment_id,
+        $attach_id) = @_;
     my $dbh = Bugzilla->dbh;
     # 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
@@ -3963,10 +3964,13 @@ sub LogActivityEntry {
         trick_taint($addstr);
         trick_taint($removestr);
         my $fieldid = get_field_id($col);
-        $dbh->do("INSERT INTO bugs_activity
-                  (bug_id, who, bug_when, fieldid, removed, added, comment_id)
-                  VALUES (?, ?, ?, ?, ?, ?, ?)",
-                  undef, ($i, $whoid, $timestamp, $fieldid, $removestr, $addstr, $comment_id));
+        $dbh->do(
+            "INSERT INTO bugs_activity
+            (bug_id, who, bug_when, fieldid, removed, added, comment_id, attach_id)
+            VALUES (?, ?, ?, ?, ?, ?, ?, ?)",
+            undef,
+            ($i, $whoid, $timestamp, $fieldid, $removestr, $addstr, $comment_id,
+                $attach_id));
     }
 }
 
index d022321f0e0088aeeb5d47dd6bae04fb04b4918c..a5ba6d1e354f68670a22a9a9fe8f0baabace0c93 100755 (executable)
@@ -483,10 +483,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 = ?',
@@ -501,16 +497,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;