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

Bug 521373: Hook: object-before_create

parent 437b14a0
...@@ -585,6 +585,26 @@ Params: ...@@ -585,6 +585,26 @@ Params:
=back =back
=head2 object-before_create
This happens at the beginning of L<Bugzilla::Object/create>.
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 before C<create> for only certain classes.
=item C<params>
A hashref. The set of named parameters passed to C<create>.
=back
=head2 page-before_template =head2 page-before_template
This is a simple way to add your own pages to Bugzilla. This hooks C<page.cgi>, This is a simple way to add your own pages to Bugzilla. This hooks C<page.cgi>,
......
...@@ -24,6 +24,7 @@ use strict; ...@@ -24,6 +24,7 @@ use strict;
package Bugzilla::Object; package Bugzilla::Object;
use Bugzilla::Constants; use Bugzilla::Constants;
use Bugzilla::Hook;
use Bugzilla::Util; use Bugzilla::Util;
use Bugzilla::Error; use Bugzilla::Error;
...@@ -399,6 +400,11 @@ sub _check_field { ...@@ -399,6 +400,11 @@ sub _check_field {
sub check_required_create_fields { sub check_required_create_fields {
my ($class, $params) = @_; my ($class, $params) = @_;
# This hook happens here so that even subclasses that don't call
# SUPER::create are still affected by the hook.
Bugzilla::Hook::process('object-before_create', { class => $class,
params => $params });
foreach my $field ($class->REQUIRED_CREATE_FIELDS) { foreach my $field ($class->REQUIRED_CREATE_FIELDS) {
ThrowCodeError('param_required', ThrowCodeError('param_required',
{ function => "${class}->create", param => $field }) { function => "${class}->create", param => $field })
......
# -*- Mode: perl; indent-tabs-mode: nil -*-
#
# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Bugzilla Example Plugin.
#
# The Initial Developer of the Original Code is ITA Software
# Portions created by the Initial Developer are Copyright (C) 2009
# the Initial Developer. All Rights Reserved.
#
# Contributor(s): Max Kanat-Alexander <mkanat@bugzilla.org>
use strict;
use warnings;
use Bugzilla;
my $args = Bugzilla->hook_args;
my $class = $args->{'class'};
my $params = $args->{'params'};
# Note that this is a made-up class, for this example.
if ($class->isa('Bugzilla::ExampleObject')) {
warn "About to create an ExampleObject!";
warn "Got the following parameters: " . join(', ', keys(%$params));
}
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