]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 460293: Implement Bugzilla::Object::set_all and have editkeywords.cgi use it
authormkanat%bugzilla.org <>
Sat, 18 Oct 2008 21:30:20 +0000 (21:30 +0000)
committermkanat%bugzilla.org <>
Sat, 18 Oct 2008 21:30:20 +0000 (21:30 +0000)
Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=LpSolit, a=LpSolit

Bugzilla/Object.pm
editkeywords.cgi

index 532b2c5bcb61a77085fa1db91dc2e7675f5469d6..1e624e5f7ce608fb0b71d76c6604a5728ccc16ad 100644 (file)
@@ -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
index 1e5d772963c828db556f08b4cea1317256c0057d..dbc92971d6f83676f65aa0ad09d2c4c1a2fe4a6f 100755 (executable)
@@ -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);