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

Bug 460293: Implement Bugzilla::Object::set_all and have editkeywords.cgi use it

Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=LpSolit, a=LpSolit
parent d9e6f240
......@@ -240,6 +240,14 @@ sub set {
$self->{$field} = $value;
}
sub set_all {
my ($self, $params) = @_;
foreach my $key (keys %$params) {
my $method = "set_$key";
$self->$method($params->{$key});
}
}
sub update {
my $self = shift;
......@@ -743,10 +751,10 @@ not safe to use the object after it has been removed from the database.
=back
=head2 Subclass Helpers
=head2 Mutators
These functions are intended only for use by subclasses. If
you call them from anywhere else, they will throw a C<CodeError>.
These are used for updating the values in objects, before calling
C<update>.
=over
......@@ -767,9 +775,11 @@ C<set> will call it with C<($value, $field)> as arguments, after running
the validator for this particular field. C<_set_global_validator> does not
return anything.
See L</VALIDATORS> for more information.
B<NOTE>: This function is intended only for use by subclasses. If
you call it from anywhere else, it will throw a C<CodeError>.
=item B<Params>
=over
......@@ -785,6 +795,27 @@ be the same as the name of the field in L</VALIDATORS>, if it exists there.
=back
=item C<set_all>
=over
=item B<Description>
This is a convenience function which is simpler than calling many different
C<set_> functions in a row. You pass a hashref of parameters and it calls
C<set_$key($value)> for every item in the hashref.
=item B<Params>
Takes a hashref of the fields that need to be set, pointing to the value
that should be passed to the C<set_> function that is called.
=item B<Returns> (nothing)
=back
=back
=head2 Simple Validators
......
......@@ -131,8 +131,10 @@ if ($action eq 'update') {
my $keyword = new Bugzilla::Keyword($key_id)
|| ThrowCodeError('invalid_keyword_id', { id => $key_id });
$keyword->set_name($cgi->param('name'));
$keyword->set_description($cgi->param('description'));
$keyword->set_all({
name => scalar $cgi->param('name'),
description => scalar $cgi->param('description'),
});
my $changes = $keyword->update();
delete_token($token);
......
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