diff options
author | Max Kanat-Alexander <mkanat@bugzilla.org> | 2010-06-03 21:18:43 +0200 |
---|---|---|
committer | Max Kanat-Alexander <mkanat@bugzilla.org> | 2010-06-03 21:18:43 +0200 |
commit | 99ad6a4e8674133c5bb8367d291eb1986c3cee8a (patch) | |
tree | a8a0a96bcd9b21d6e0fdc96245f5f423f4c5833b /Bugzilla/Object.pm | |
parent | a476a7bf0f7b9b07bd5c98708aeda2278564eb9e (diff) | |
download | bugzilla-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.pm | 15 |
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 { |