Commit e9a2d105 authored by mkanat%bugzilla.org's avatar mkanat%bugzilla.org

Bug 449306: Add a hook after a bug gets saved, and after flags get updated.

Patch By Jesse Clark <jjclark1982@gmail.com> r=mkanat, a=mkanat
parent ef1385c2
......@@ -35,6 +35,7 @@ use Bugzilla::Constants;
use Bugzilla::Field;
use Bugzilla::Flag;
use Bugzilla::FlagType;
use Bugzilla::Hook;
use Bugzilla::Keyword;
use Bugzilla::User;
use Bugzilla::Util;
......@@ -770,6 +771,11 @@ 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,
});
# If any change occurred, refresh the timestamp of the bug.
if (scalar(keys %$changes) || $self->{added_comments}) {
$dbh->do('UPDATE bugs SET delta_ts = ? WHERE bug_id = ?',
......
......@@ -54,6 +54,7 @@ whose names start with _ or a re specifically noted as being private.
=cut
use Bugzilla::FlagType;
use Bugzilla::Hook;
use Bugzilla::User;
use Bugzilla::Util;
use Bugzilla::Error;
......@@ -612,6 +613,12 @@ sub process {
my @new_summaries = $class->snapshot($bug_id, $attach_id);
update_activity($bug_id, $attach_id, $timestamp, \@old_summaries, \@new_summaries);
Bugzilla::Hook::process('flag-end_of_update', { bug => $bug,
timestamp => $timestamp,
old_flags => \@old_summaries,
new_flags => \@new_summaries,
});
}
sub update_activity {
......
......@@ -207,6 +207,25 @@ This works just like L</auth-login_methods> except it's for
login verification methods (See L<Bugzilla::Auth::Verify>.) It also
takes a C<modules> parameter, just like L</auth-login_methods>.
=head2 bug-end_of_update
This happens at the end of L<Bugzilla::Bug/update>, after all other changes are
made to the database. This generally occurs inside a database transaction.
Params:
=over
=item C<bug> - The changed bug object, with all fields set to their updated
values.
=item C<timestamp> - The timestamp used for all updates in this transaction.
=item C<changes> - The hash of changed fields.
C<$changes-E<gt>{field} = [old, new]>
=back
=head2 buglist-columns
This happens in buglist.cgi after the standard columns have been defined and
......@@ -308,6 +327,32 @@ Params:
=back
=head2 flag-end_of_update
This happens at the end of L<Bugzilla::Flag/process>, after all other changes
are made to the database and after emails are sent. It gives you a before/after
snapshot of flags so you can react to specific flag changes.
This generally occurs inside a database transaction.
Note that the interface to this hook is B<UNSTABLE> and it may change in the
future.
Params:
=over
=item C<bug> - The changed bug object.
=item C<timestamp> - The timestamp used for all updates in this transaction.
=item C<old_flags> - The snapshot of flag summaries from before the change.
=item C<new_flags> - The snapshot of flag summaries after the change. Call
C<my ($removed, $added) = diff_arrays(old_flags, new_flags)> to get the list of
changed flags, and search for a specific condition like C<added eq 'review-'>.
=back
=head2 install-requirements
Because of the way Bugzilla installation works, there can't be a normal
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment