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 { ...@@ -240,6 +240,14 @@ sub set {
$self->{$field} = $value; $self->{$field} = $value;
} }
sub set_all {
my ($self, $params) = @_;
foreach my $key (keys %$params) {
my $method = "set_$key";
$self->$method($params->{$key});
}
}
sub update { sub update {
my $self = shift; my $self = shift;
...@@ -743,10 +751,10 @@ not safe to use the object after it has been removed from the database. ...@@ -743,10 +751,10 @@ not safe to use the object after it has been removed from the database.
=back =back
=head2 Subclass Helpers =head2 Mutators
These functions are intended only for use by subclasses. If These are used for updating the values in objects, before calling
you call them from anywhere else, they will throw a C<CodeError>. C<update>.
=over =over
...@@ -767,9 +775,11 @@ C<set> will call it with C<($value, $field)> as arguments, after running ...@@ -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 the validator for this particular field. C<_set_global_validator> does not
return anything. return anything.
See L</VALIDATORS> for more information. 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> =item B<Params>
=over =over
...@@ -785,6 +795,27 @@ be the same as the name of the field in L</VALIDATORS>, if it exists there. ...@@ -785,6 +795,27 @@ be the same as the name of the field in L</VALIDATORS>, if it exists there.
=back =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 =back
=head2 Simple Validators =head2 Simple Validators
......
...@@ -131,8 +131,10 @@ if ($action eq 'update') { ...@@ -131,8 +131,10 @@ if ($action eq 'update') {
my $keyword = new Bugzilla::Keyword($key_id) my $keyword = new Bugzilla::Keyword($key_id)
|| ThrowCodeError('invalid_keyword_id', { id => $key_id }); || ThrowCodeError('invalid_keyword_id', { id => $key_id });
$keyword->set_name($cgi->param('name')); $keyword->set_all({
$keyword->set_description($cgi->param('description')); name => scalar $cgi->param('name'),
description => scalar $cgi->param('description'),
});
my $changes = $keyword->update(); my $changes = $keyword->update();
delete_token($token); 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