From: Christian Legnitto Date: Wed, 1 Sep 2010 22:57:13 +0000 (-0700) Subject: Bug 587793: Add a new "object_end_of_create" hook so that extensions can X-Git-Tag: bugzilla-4.0rc1~80 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8da59c5a6dc37c5c10adecba53e7de0e2dce98b7;p=thirdparty%2Fbugzilla.git Bug 587793: Add a new "object_end_of_create" hook so that extensions can operate on any new objects r=mkanat, a=mkanat --- diff --git a/Bugzilla/Hook.pm b/Bugzilla/Hook.pm index 789ad87401..adcb7ff4be 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 66dac9422f..5b8576512a 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 2a6f6946dc..235c93082d 100644 --- a/extensions/Example/Extension.pm +++ b/extensions/Example/Extension.pm @@ -411,6 +411,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) = @_;