diff options
author | Dave Lawrence <dlawrence@mozilla.com> | 2013-01-17 17:33:07 +0100 |
---|---|---|
committer | Dave Lawrence <dlawrence@mozilla.com> | 2013-01-17 17:33:07 +0100 |
commit | 44de8d5f7886fa65ba5f074657c0b154f0072aeb (patch) | |
tree | aa2395abcdb3d404604803c3dd74688c2461e814 /Bugzilla | |
parent | 80540f731d1e736e8a60a2c9e76a64d8a4c76fad (diff) | |
download | bugzilla-44de8d5f7886fa65ba5f074657c0b154f0072aeb.tar.gz bugzilla-44de8d5f7886fa65ba5f074657c0b154f0072aeb.tar.xz |
Bug 752946 - Moving a bug into another product lists inactive components, milestones and versions
Diffstat (limited to 'Bugzilla')
-rw-r--r-- | Bugzilla/Bug.pm | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/Bugzilla/Bug.pm b/Bugzilla/Bug.pm index 81cb55a43..b8d1cf6bc 100644 --- a/Bugzilla/Bug.pm +++ b/Bugzilla/Bug.pm @@ -1481,8 +1481,13 @@ sub _check_component { $name || ThrowUserError("require_component"); my $product = blessed($invocant) ? $invocant->product_obj : $params->{product}; - my $obj = Bugzilla::Component->check({ product => $product, name => $name }); - return $obj; + my $old_comp = blessed($invocant) ? $invocant->component + : $params->{component}; + my $object = Bugzilla::Component->check({ product => $product, name => $name }); + if ($object->name ne $old_comp && !$object->is_active) { + ThrowUserError('value_inactive', { class => ref($object), value => $name }); + } + return $object; } sub _check_creation_ts { @@ -1937,10 +1942,15 @@ sub _check_target_milestone { my ($invocant, $target, undef, $params) = @_; my $product = blessed($invocant) ? $invocant->product_obj : $params->{product}; + my $old_target = blessed($invocant) ? $invocant->target_milestone + : $params->{target_milestone}; $target = trim($target); $target = $product->default_milestone if !defined $target; my $object = Bugzilla::Milestone->check( { product => $product, name => $target }); + if ($object->name ne $old_target && !$object->is_active) { + ThrowUserError('value_inactive', { class => ref($object), value => $target }); + } return $object->name; } @@ -1963,8 +1973,12 @@ sub _check_version { $version = trim($version); my $product = blessed($invocant) ? $invocant->product_obj : $params->{product}; - my $object = - Bugzilla::Version->check({ product => $product, name => $version }); + my $old_vers = blessed($invocant) ? $invocant->version + : $params->{version}; + my $object = Bugzilla::Version->check({ product => $product, name => $version }); + if ($object->name ne $old_vers && !$object->is_active) { + ThrowUserError('value_inactive', { class => ref($object), value => $version }); + } return $object->name; } @@ -2499,9 +2513,9 @@ sub _set_product { milestone => $milestone_ok ? $self->target_milestone : $product->default_milestone }; - $vars{components} = [map { $_->name } @{$product->components}]; - $vars{milestones} = [map { $_->name } @{$product->milestones}]; - $vars{versions} = [map { $_->name } @{$product->versions}]; + $vars{components} = [map { $_->name } grep($_->is_active, @{$product->components})]; + $vars{milestones} = [map { $_->name } grep($_->is_active, @{$product->milestones})]; + $vars{versions} = [map { $_->name } grep($_->is_active, @{$product->versions})]; } if (!$verified) { |