diff options
author | Christian Legnitto <clegnitto@mozilla.com> | 2010-09-02 00:56:28 +0200 |
---|---|---|
committer | Max Kanat-Alexander <mkanat@bugzilla.org> | 2010-09-02 00:56:28 +0200 |
commit | cd51ea1922c051e9536c00cd97c5d18b39c1c023 (patch) | |
tree | 7a58191b4292764ecc28f5a0057d23dc0ccf204c | |
parent | e2048adeb7d627aa89991be9c0d2dbbb5ce85928 (diff) | |
download | bugzilla-cd51ea1922c051e9536c00cd97c5d18b39c1c023.tar.gz bugzilla-cd51ea1922c051e9536c00cd97c5d18b39c1c023.tar.xz |
Bug 587793: Add a new "object_end_of_create" hook so that extensions can
operate on any new objects
r=mkanat, a=mkanat
-rw-r--r-- | Bugzilla/Hook.pm | 24 | ||||
-rw-r--r-- | Bugzilla/Object.pm | 7 | ||||
-rw-r--r-- | extensions/Example/Extension.pm | 9 |
3 files changed, 37 insertions, 3 deletions
diff --git a/Bugzilla/Hook.pm b/Bugzilla/Hook.pm index 789ad8740..adcb7ff4b 100644 --- a/Bugzilla/Hook.pm +++ b/Bugzilla/Hook.pm @@ -210,8 +210,7 @@ Params: =over -=item C<bug> - The changed bug object, with all fields set to their updated -values. +=item C<bug> - The created bug object. =item C<timestamp> - The timestamp used for all updates in this transaction, as a SQL date string. @@ -821,6 +820,27 @@ or remove standard object columns using this hook. =back +=head2 object_end_of_create + +Called at the end of L<Bugzilla::Object/create>, after all other changes are +made to the database. This occurs inside a database transaction. + +Params: + +=over + +=item C<class> + +The name of the class that C<create> was called on. You can check this +like C<< if ($class->isa('Some::Class')) >> in your code, to perform specific +tasks for only certain classes. + +=item C<object> + +The created object. + +=back + =head2 object_end_of_create_validators Called at the end of L<Bugzilla::Object/run_create_validators>. You can diff --git a/Bugzilla/Object.pm b/Bugzilla/Object.pm index 66dac9422..5b8576512 100644 --- a/Bugzilla/Object.pm +++ b/Bugzilla/Object.pm @@ -508,7 +508,12 @@ sub insert_create_data { $dbh->do("INSERT INTO $table (" . join(', ', @field_names) . ") VALUES ($qmarks)", undef, @values); my $id = $dbh->bz_last_key($table, $class->ID_FIELD); - return $class->new($id); + + my $object = $class->new($id); + + Bugzilla::Hook::process('object_end_of_create', { class => $class, + object => $object }); + return $object; } sub get_all { diff --git a/extensions/Example/Extension.pm b/extensions/Example/Extension.pm index 4d85d01f8..5c6865362 100644 --- a/extensions/Example/Extension.pm +++ b/extensions/Example/Extension.pm @@ -408,6 +408,15 @@ sub object_columns { } } +sub object_end_of_create { + my ($self, $args) = @_; + + my $class = $args->{'class'}; + my $object = $args->{'object'}; + + warn "Created a new $class object!"; +} + sub object_end_of_create_validators { my ($self, $args) = @_; |