Bug 94437 - Fix Reclassify fieldvaluecontrol interaction

git-svn-id: svn://svn.office.custis.ru/3rdparty/bugzilla.org/trunk@1513 6955db30-a419-402b-8a0d-67ecbb4d7f56
custis
vfilippov 2012-02-17 12:13:44 +00:00
parent d2a8513f72
commit a1eae82ad0
2 changed files with 12 additions and 9 deletions

View File

@ -85,11 +85,12 @@ use constant UPDATE_COLUMNS => qw(
maxvotesperbug
votestoconfirm
allows_unconfirmed
classification_id
);
use constant VALIDATORS => {
allows_unconfirmed => \&Bugzilla::Object::check_boolean,
classification => \&_check_classification,
classification_id => \&_check_classification_id,
name => \&_check_name,
description => \&_check_description,
version => \&_check_version,
@ -497,12 +498,13 @@ sub _check_extproduct
return $product ? $product->id : undef;
}
sub _check_classification {
sub _check_classification_id {
my ($invocant, $classification_name) = @_;
my $classification_id = 1;
if (Bugzilla->params->{'useclassification'}) {
my $classification = Bugzilla::Classification->check($classification_name);
my $classification = ref $classification_name ? $classification_name
: Bugzilla::Classification->check($classification_name);
$classification_id = $classification->id;
}
return $classification_id;
@ -686,6 +688,7 @@ sub set_votes_per_user { $_[0]->set('votesperuser', $_[1]); }
sub set_votes_per_bug { $_[0]->set('maxvotesperbug', $_[1]); }
sub set_votes_to_confirm { $_[0]->set('votestoconfirm', $_[1]); }
sub set_allows_unconfirmed { $_[0]->set('allows_unconfirmed', $_[1]); }
sub set_classification { $_[0]->set('classification_id', $_[1]); }
sub set_extproduct
{

View File

@ -195,16 +195,14 @@ if ($action eq 'update') {
if ($action eq 'reclassify') {
my $classification = Bugzilla::Classification->check($class_name);
my $sth = $dbh->prepare("UPDATE products SET classification_id = ?
WHERE name = ?");
if (defined $cgi->param('add_products')) {
check_token_data($token, 'reclassify_classifications');
if (defined $cgi->param('prodlist')) {
foreach my $prod ($cgi->param("prodlist")) {
trick_taint($prod);
$sth->execute($classification->id, $prod);
my $obj = Bugzilla::Product->check($prod);
$obj->set_classification($classification);
$obj->update;
}
}
delete_token($token);
@ -213,7 +211,9 @@ if ($action eq 'reclassify') {
if (defined $cgi->param('myprodlist')) {
foreach my $prod ($cgi->param("myprodlist")) {
trick_taint($prod);
$sth->execute(1,$prod);
my $obj = Bugzilla::Product->check($prod);
$obj->set_classification('Unclassified');
$obj->update;
}
}
delete_token($token);