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

Bug 525426: Hook: object-before_set

Patch by Max Kanat-Alexander <mkanat@bugzilla.org> r=dkl, a=mkanat
parent 03168362
...@@ -620,6 +620,32 @@ A hashref. The set of named parameters passed to C<create>. ...@@ -620,6 +620,32 @@ A hashref. The set of named parameters passed to C<create>.
=back =back
=head2 object-before_set
Called during L<Bugzilla::Object/set>, before any actual work is done.
You can use this to perform actions before a value is changed for
specific fields on certain types of objects.
Params:
=over
=item C<object>
The object that C<set> was called on. You will probably want to
do something like C<< if ($object->isa('Some::Class')) >> in your code to
limit your changes to only certain subclasses of Bugzilla::Object.
=item C<field>
The name of the field being updated in the object.
=item C<value>
The value being set on the object.
=back
=head2 object-end_of_create_validators =head2 object-end_of_create_validators
Called at the end of L<Bugzilla::Object/run_create_validators>. You can Called at the end of L<Bugzilla::Object/run_create_validators>. You can
......
...@@ -279,6 +279,10 @@ sub set { ...@@ -279,6 +279,10 @@ sub set {
superclass => __PACKAGE__, superclass => __PACKAGE__,
function => 'Bugzilla::Object->set' }); function => 'Bugzilla::Object->set' });
Bugzilla::Hook::process('object-before_set',
{ object => $self, field => $field,
value => $value });
my %validators = (%{$self->VALIDATORS}, %{$self->UPDATE_VALIDATORS}); my %validators = (%{$self->VALIDATORS}, %{$self->UPDATE_VALIDATORS});
if (exists $validators{$field}) { if (exists $validators{$field}) {
my $validator = $validators{$field}; my $validator = $validators{$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;
my $args = Bugzilla->hook_args;
my ($object, $field, $value) = @$args{qw(object field value)};
# Note that this is a made-up class, for this example.
if ($object->isa('Bugzilla::ExampleObject')) {
warn "The field $field is changing from " . $object->{$field}
. " to $value!";
}
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