From cd51ea1922c051e9536c00cd97c5d18b39c1c023 Mon Sep 17 00:00:00 2001 From: Christian Legnitto Date: Wed, 1 Sep 2010 15:56:28 -0700 Subject: Bug 587793: Add a new "object_end_of_create" hook so that extensions can operate on any new objects r=mkanat, a=mkanat --- Bugzilla/Hook.pm | 24 ++++++++++++++++++++++-- Bugzilla/Object.pm | 7 ++++++- 2 files changed, 28 insertions(+), 3 deletions(-) (limited to 'Bugzilla') 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 - The changed bug object, with all fields set to their updated -values. +=item C - The created bug object. =item C - 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, after all other changes are +made to the database. This occurs inside a database transaction. + +Params: + +=over + +=item C + +The name of the class that C 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 + +The created object. + +=back + =head2 object_end_of_create_validators Called at the end of L. 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 { -- cgit v1.2.3-24-g4f1b