From: Max Kanat-Alexander Date: Fri, 2 Apr 2010 11:51:17 +0000 (-0700) Subject: Bug 556736: Make the bug_end_of_update hook also send $old_bug to the hook X-Git-Tag: bugzilla-3.6~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e862c2c7aa01733a5bde8ab9bd637da67d2a6278;p=thirdparty%2Fbugzilla.git Bug 556736: Make the bug_end_of_update hook also send $old_bug to the hook r=mkanat, a=mkanat (module owner) --- diff --git a/Bugzilla/Bug.pm b/Bugzilla/Bug.pm index 95d1c28112..5696880fa1 100644 --- a/Bugzilla/Bug.pm +++ b/Bugzilla/Bug.pm @@ -867,10 +867,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 a3a1752238..9917c68e84 100644 --- a/Bugzilla/Hook.pm +++ b/Bugzilla/Hook.pm @@ -237,13 +237,22 @@ Params: =over -=item C - The changed bug object, with all fields set to their updated -values. +=item C -=item C - The timestamp used for all updates in this transaction. +The changed bug object, with all fields set to their updated values. -=item C - The hash of changed fields. -C<$changes-E{field} = [old, new]> +=item C + +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 + +The timestamp used for all updates in this transaction. + +=item C + +The hash of changed fields. C<< $changes->{field} = [old, new] >> =back diff --git a/extensions/Example/Extension.pm b/extensions/Example/Extension.pm index 9de0a65bf4..0c795f8089 100644 --- a/extensions/Example/Extension.pm +++ b/extensions/Example/Extension.pm @@ -114,13 +114,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] });