summaryrefslogtreecommitdiffstats
path: root/Bugzilla/Object.pm
diff options
context:
space:
mode:
authorMax Kanat-Alexander <mkanat@bugzilla.org>2010-06-03 21:18:43 +0200
committerMax Kanat-Alexander <mkanat@bugzilla.org>2010-06-03 21:18:43 +0200
commit99ad6a4e8674133c5bb8367d291eb1986c3cee8a (patch)
treea8a0a96bcd9b21d6e0fdc96245f5f423f4c5833b /Bugzilla/Object.pm
parenta476a7bf0f7b9b07bd5c98708aeda2278564eb9e (diff)
downloadbugzilla-99ad6a4e8674133c5bb8367d291eb1986c3cee8a.tar.gz
bugzilla-99ad6a4e8674133c5bb8367d291eb1986c3cee8a.tar.xz
Bug 567846: Modify set_status, set_resolution, and set_dup_id to use
VALIDATOR_DEPENDENCIES, so that they don't need custom code in set_all.
Diffstat (limited to 'Bugzilla/Object.pm')
-rw-r--r--Bugzilla/Object.pm15
1 files changed, 11 insertions, 4 deletions
diff --git a/Bugzilla/Object.pm b/Bugzilla/Object.pm
index ba5b82f9f..67517c405 100644
--- a/Bugzilla/Object.pm
+++ b/Bugzilla/Object.pm
@@ -316,13 +316,20 @@ sub set {
sub set_all {
my ($self, $params) = @_;
- my @sorted_names = $self->_sort_by_dep(keys %$params);
+ # Don't let setters modify the values in $params for the caller.
+ my %field_values = %$params;
+
+ my @sorted_names = $self->_sort_by_dep(keys %field_values);
foreach my $key (@sorted_names) {
+ # It's possible for one set_ method to delete a key from $params
+ # for another set method, so if that's happened, we don't call the
+ # other set method.
+ next if !exists $field_values{$key};
my $method = "set_$key";
- $self->$method($params->{$key});
+ $self->$method($field_values{$key}, \%field_values);
}
- Bugzilla::Hook::process('object_end_of_set_all', { object => $self,
- params => $params });
+ Bugzilla::Hook::process('object_end_of_set_all',
+ { object => $self, params => \%field_values });
}
sub update {