diff options
-rw-r--r-- | Bugzilla/Bug.pm | 7 | ||||
-rw-r--r-- | Bugzilla/Hook.pm | 19 | ||||
-rw-r--r-- | extensions/Example/Extension.pm | 7 |
3 files changed, 22 insertions, 11 deletions
diff --git a/Bugzilla/Bug.pm b/Bugzilla/Bug.pm index da5cf9285..0d6a4be17 100644 --- a/Bugzilla/Bug.pm +++ b/Bugzilla/Bug.pm @@ -865,10 +865,9 @@ sub update { $changes->{'dup_id'} = [$old_dup || undef, $cur_dup || undef]; } - Bugzilla::Hook::process('bug_end_of_update', { bug => $self, - timestamp => $delta_ts, - changes => $changes, - }); + Bugzilla::Hook::process('bug_end_of_update', + { bug => $self, timestamp => $delta_ts, changes => $changes, + old_bug => $old_bug }); # If any change occurred, refresh the timestamp of the bug. if (scalar(keys %$changes) || $self->{added_comments}) { diff --git a/Bugzilla/Hook.pm b/Bugzilla/Hook.pm index 556fda894..b8d763d20 100644 --- a/Bugzilla/Hook.pm +++ b/Bugzilla/Hook.pm @@ -239,13 +239,22 @@ Params: =over -=item C<bug> - The changed bug object, with all fields set to their updated -values. +=item C<bug> -=item C<timestamp> - The timestamp used for all updates in this transaction. +The changed bug object, with all fields set to their updated values. -=item C<changes> - The hash of changed fields. -C<$changes-E<gt>{field} = [old, new]> +=item C<old_bug> + +A bug object pulled from the database before the fields were set to +their updated values (so it has the old values available for each field). + +=item C<timestamp> + +The timestamp used for all updates in this transaction. + +=item C<changes> + +The hash of changed fields. C<< $changes->{field} = [old, new] >> =back diff --git a/extensions/Example/Extension.pm b/extensions/Example/Extension.pm index 52ac66231..835d36f80 100644 --- a/extensions/Example/Extension.pm +++ b/extensions/Example/Extension.pm @@ -119,13 +119,16 @@ sub bug_end_of_update { # This code doesn't actually *do* anything, it's just here to show you # how to use this hook. - my ($bug, $timestamp, $changes) = @$args{qw(bug timestamp changes)}; + my ($bug, $old_bug, $timestamp, $changes) = + @$args{qw(bug old_bug timestamp changes)}; foreach my $field (keys %$changes) { my $used_to_be = $changes->{$field}->[0]; my $now_it_is = $changes->{$field}->[1]; } - + + my $old_summary = $old_bug->short_desc; + my $status_message; if (my $status_change = $changes->{'bug_status'}) { my $old_status = new Bugzilla::Status({ name => $status_change->[0] }); |