Commit 782d536f authored by mkanat%bugzilla.org's avatar mkanat%bugzilla.org

Bug 523411: Hook: product-end_of_create

Patch by Dave Lawrence <dkl@redhat.com> r=mkanat, a=mkanat
parent 65f8c60d
...@@ -656,6 +656,21 @@ to the user. (F<sanitycheck.cgi>'s C<Status>) ...@@ -656,6 +656,21 @@ to the user. (F<sanitycheck.cgi>'s C<Status>)
=back =back
=head2 product_end_of_create
Called right after a new product has been created, allowing additional
changes to be made to the new product's attributes. This occurs inside of
a database transaction, so if the hook throws an error all previous
changes will be rolled back including the creation of the new product.
Params:
=over
=item C<product> - The new L<Bugzilla::Product> object that was just created.
=back
=head2 sanitycheck_repair =head2 sanitycheck_repair
This hook allows for extra sanity check repairs to be made, for use by This hook allows for extra sanity check repairs to be made, for use by
......
...@@ -30,6 +30,7 @@ use Bugzilla::Status; ...@@ -30,6 +30,7 @@ use Bugzilla::Status;
use Bugzilla::Install::Requirements; use Bugzilla::Install::Requirements;
use Bugzilla::Mailer; use Bugzilla::Mailer;
use Bugzilla::Series; use Bugzilla::Series;
use Bugzilla::Hook;
# Currently, we only implement enough of the Bugzilla::Field::Choice # Currently, we only implement enough of the Bugzilla::Field::Choice
# interface to control the visibility of other fields. # interface to control the visibility of other fields.
...@@ -123,6 +124,8 @@ sub create { ...@@ -123,6 +124,8 @@ sub create {
$product->_create_bug_group() if Bugzilla->params->{'makeproductgroups'}; $product->_create_bug_group() if Bugzilla->params->{'makeproductgroups'};
$product->_create_series() if $create_series; $product->_create_series() if $create_series;
Bugzilla::Hook::process('product_end_of_create', { product => $product });
$dbh->bz_commit_transaction(); $dbh->bz_commit_transaction();
return $product; return $product;
} }
......
...@@ -24,6 +24,9 @@ package Bugzilla::Extension::Example; ...@@ -24,6 +24,9 @@ package Bugzilla::Extension::Example;
use strict; use strict;
use base qw(Bugzilla::Extension); use base qw(Bugzilla::Extension);
use Bugzilla::Constants;
use Bugzilla::Group;
use Bugzilla::User;
use Bugzilla::Util qw(diff_arrays html_quote); use Bugzilla::Util qw(diff_arrays html_quote);
# This is extensions/Example/lib/Util.pm. I can load this here in my # This is extensions/Example/lib/Util.pm. I can load this here in my
...@@ -346,6 +349,46 @@ sub product_confirm_delete { ...@@ -346,6 +349,46 @@ sub product_confirm_delete {
$vars->{'example'} = 1; $vars->{'example'} = 1;
} }
sub product_end_of_create {
my ($self, $args) = @_;
my $product = $args->{product};
# For this example, any lines of code that actually make changes to your
# database have been commented out.
# This section will take a group that exists in your installation
# (possible called test_group) and automatically makes the new
# product hidden to only members of the group. Just remove
# the restriction if you want the new product to be public.
my $example_group = new Bugzilla::Group({ name => 'example_group' });
if ($example_group) {
$product->set_group_controls($example_group,
{ entry => 1,
membercontrol => CONTROLMAPMANDATORY,
othercontrol => CONTROLMAPMANDATORY });
# $product->update();
}
# This section will automatically add a default component
# to the new product called 'No Component'.
my $default_assignee = new Bugzilla::User(
{ name => Bugzilla->params->{maintainer} });
if ($default_assignee) {
# Bugzilla::Component->create(
# { name => 'No Component',
# product => $product,
# description => 'Select this component if one does not ' .
# 'exist in the current list of components',
# initialowner => $default_assignee });
}
}
sub sanitycheck_check { sub sanitycheck_check {
my ($self, $args) = @_; my ($self, $args) = @_;
......
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