From 13114a00970f92b0a3053556b3c176f13e7361a8 Mon Sep 17 00:00:00 2001 From: vfilippov Date: Fri, 17 Feb 2012 12:13:44 +0000 Subject: [PATCH] Bug 94437 - Fix Reclassify fieldvaluecontrol interaction git-svn-id: svn://svn.office.custis.ru/3rdparty/bugzilla.org/trunk@1513 6955db30-a419-402b-8a0d-67ecbb4d7f56 --- Bugzilla/Product.pm | 9 ++++++--- editclassifications.cgi | 12 ++++++------ 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/Bugzilla/Product.pm b/Bugzilla/Product.pm index 1c069e2ec..00807de94 100644 --- a/Bugzilla/Product.pm +++ b/Bugzilla/Product.pm @@ -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 { diff --git a/editclassifications.cgi b/editclassifications.cgi index df5de92e8..c8c2c80dc 100755 --- a/editclassifications.cgi +++ b/editclassifications.cgi @@ -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);