Bug 89472 - Backout r1531
git-svn-id: svn://svn.office.custis.ru/3rdparty/bugzilla.org/trunk@1534 6955db30-a419-402b-8a0d-67ecbb4d7f56master v2012.05
parent
52d0f96fe6
commit
fffa9a25d2
|
@ -9,7 +9,6 @@ use strict;
|
|||
use base qw(Bugzilla::WebService);
|
||||
use Bugzilla::Field::Choice;
|
||||
use Bugzilla::User;
|
||||
use Bugzilla::Hook;
|
||||
use Bugzilla::WebService::Util qw(validate);
|
||||
|
||||
# { field => 'field_name' }
|
||||
|
@ -46,7 +45,6 @@ sub get_values
|
|||
|
||||
# { field => 'field_name', value => 'value_name',
|
||||
# sortkey => number_for_sorting,
|
||||
# [optional] id => id,
|
||||
# other columns from $type->DB_COLUMNS }
|
||||
sub add_value
|
||||
{
|
||||
|
@ -57,8 +55,8 @@ sub add_value
|
|||
return {status => 'field_not_found'};
|
||||
}
|
||||
my $type = Bugzilla::Field::Choice->type($field);
|
||||
if ($type->new({ name => $params->{value} }) ||
|
||||
$params->{id} && $type->new({ id => $params->{id} }))
|
||||
my $value = $type->new({ name => $params->{value} });
|
||||
if ($value)
|
||||
{
|
||||
return {status => 'value_already_exists'};
|
||||
}
|
||||
|
@ -74,31 +72,13 @@ sub add_value
|
|||
$row->{$_} = $params->{$_};
|
||||
}
|
||||
}
|
||||
my $value = $type->create($row);
|
||||
$value = $type->create($row);
|
||||
return {status => 'ok', id => $value->id};
|
||||
}
|
||||
|
||||
# Get value by id=$params->{id} or name=$params->{value}
|
||||
sub _get_value
|
||||
{
|
||||
my ($type, $params) = @_;
|
||||
my $value;
|
||||
if ($params->{id})
|
||||
{
|
||||
$value = $type->new({ id => $params->{id} });
|
||||
}
|
||||
elsif ($params->{value})
|
||||
{
|
||||
$value = $type->new({ name => $params->{value} });
|
||||
}
|
||||
return $value;
|
||||
}
|
||||
|
||||
# { field => 'field_name'
|
||||
# ( id => 'old_id' | value => 'old_value' )
|
||||
# ( new_value => 'new_value' )?
|
||||
# sortkey => new_sortkey
|
||||
# isactive => new_isactive
|
||||
# { field => 'field_name', old_value => 'old_value',
|
||||
# value => 'new_value', sortkey => new_sortkey,
|
||||
# isactive => new_isactive,
|
||||
# other columns from $type->DB_COLUMNS }
|
||||
sub update_value
|
||||
{
|
||||
|
@ -109,22 +89,25 @@ sub update_value
|
|||
return {status => 'field_not_found'};
|
||||
}
|
||||
my $type = Bugzilla::Field::Choice->type($field);
|
||||
my $value = _get_value($type, $params) || return {status => 'value_not_found'};
|
||||
# Name
|
||||
if (defined $params->{new_value} && $params->{new_value} ne $value->name)
|
||||
my $value = $type->new({ name => $params->{old_value} });
|
||||
if (!$value)
|
||||
{
|
||||
my $newvalue = $type->new({ name => $params->{new_value} });
|
||||
return {status => 'value_not_found'};
|
||||
}
|
||||
$params->{value} = $params->{old_value} unless defined $params->{value};
|
||||
if ($params->{value} ne $params->{old_value})
|
||||
{
|
||||
my $newvalue = $type->new({ name => $params->{value} });
|
||||
if ($newvalue)
|
||||
{
|
||||
return {status => 'value_already_exists'};
|
||||
}
|
||||
$value->set_name($params->{new_value});
|
||||
$value->set_name($params->{value});
|
||||
}
|
||||
# Other fields
|
||||
# Остальные колонки
|
||||
for ($type->DB_COLUMNS)
|
||||
{
|
||||
if ($_ ne $type->NAME_FIELD &&
|
||||
$_ ne $type->ID_FIELD &&
|
||||
exists $params->{$_})
|
||||
{
|
||||
my $m = "set_$_";
|
||||
|
@ -135,7 +118,7 @@ sub update_value
|
|||
return {status => 'ok', id => $value->id};
|
||||
}
|
||||
|
||||
# { field => 'field_name', ( id => value_id | value => 'value_name' ) }
|
||||
# { field => 'field_name', value => 'value_name' }
|
||||
sub delete_value
|
||||
{
|
||||
my ($self, $params) = @_;
|
||||
|
@ -145,13 +128,16 @@ sub delete_value
|
|||
return {status => 'field_not_found'};
|
||||
}
|
||||
my $type = Bugzilla::Field::Choice->type($field);
|
||||
my $value = _get_value($type, $params) || return {status => 'value_not_found'};
|
||||
my $value = $type->new({ name => $params->{value} });
|
||||
if (!$value)
|
||||
{
|
||||
return {status => 'value_not_found'};
|
||||
}
|
||||
$value->remove_from_db;
|
||||
return {status => 'ok'};
|
||||
}
|
||||
|
||||
# { field => 'field_name', ( id => value_id | value => 'value_name' ),
|
||||
# ids => [ visibility_ID, visibility_ID, ... ] }
|
||||
# { field => 'field_name', value => 'value_name', ids => [ visibility_ID, visibility_ID, ... ] }
|
||||
sub set_visibility_values
|
||||
{
|
||||
my ($self, $params) = @_;
|
||||
|
@ -165,7 +151,11 @@ sub set_visibility_values
|
|||
return {status => 'fieldvalues_not_controlled'};
|
||||
}
|
||||
my $type = Bugzilla::Field::Choice->type($field);
|
||||
my $value = _get_value($type, $params) || return {status => 'value_not_found'};
|
||||
my $value = $type->new({ name => $params->{value} });
|
||||
if (!$value)
|
||||
{
|
||||
return {status => 'value_not_found'};
|
||||
}
|
||||
my $ids = $params->{ids} || [];
|
||||
$ids = [ $ids ] unless ref $ids;
|
||||
$ids = [ map { $_->id } @{ Bugzilla::Field::Choice->type($field->value_field)->new_from_list($ids) } ];
|
||||
|
|
Loading…
Reference in New Issue