Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
bugzilla
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
etersoft
bugzilla
Commits
ac67c44a
Commit
ac67c44a
authored
Oct 15, 2011
by
Carole Pryfer
Committed by
Frédéric Buclin
Oct 15, 2011
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Bug 658485: Implement Group.update to update groups from the WebServices
r/a=mkanat
parent
b7dbb42e
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
151 additions
and
1 deletion
+151
-1
Group.pm
Bugzilla/WebService/Group.pm
+151
-1
No files found.
Bugzilla/WebService/Group.pm
View file @
ac67c44a
...
...
@@ -21,6 +21,12 @@ use strict;
use
base
qw(Bugzilla::WebService)
;
use
Bugzilla::
Constants
;
use
Bugzilla::
Error
;
use
Bugzilla::WebService::
Util
qw(validate translate params_to_objects)
;
use
constant
MAPPED_RETURNS
=>
{
userregexp
=>
'user_regexp'
,
isactive
=>
'is_active'
};
sub
create
{
my
(
$self
,
$params
)
=
@_
;
...
...
@@ -42,6 +48,60 @@ sub create {
return
{
id
=>
$self
->
type
(
'int'
,
$group
->
id
)
};
}
sub
update
{
my
(
$self
,
$params
)
=
@_
;
my
$dbh
=
Bugzilla
->
dbh
;
Bugzilla
->
login
(
LOGIN_REQUIRED
);
Bugzilla
->
user
->
in_group
(
'creategroups'
)
||
ThrowUserError
(
"auth_failure"
,
{
group
=>
"creategroups"
,
action
=>
"edit"
,
object
=>
"group"
});
defined
(
$params
->
{
names
})
||
defined
(
$params
->
{
ids
})
||
ThrowCodeError
(
'params_required'
,
{
function
=>
'Group.update'
,
params
=>
[
'ids'
,
'names'
]
});
my
$group_objects
=
params_to_objects
(
$params
,
'Bugzilla::Group'
);
my
%
values
=
%
$params
;
# We delete names and ids to keep only new values to set.
delete
$values
{
names
};
delete
$values
{
ids
};
$dbh
->
bz_start_transaction
();
foreach
my
$group
(
@$group_objects
)
{
$group
->
set_all
(
\%
values
);
}
my
%
changes
;
foreach
my
$group
(
@$group_objects
)
{
my
$returned_changes
=
$group
->
update
();
$changes
{
$group
->
id
}
=
translate
(
$returned_changes
,
MAPPED_RETURNS
);
}
$dbh
->
bz_commit_transaction
();
my
@result
;
foreach
my
$group
(
@$group_objects
)
{
my
%
hash
=
(
id
=>
$group
->
id
,
changes
=>
{},
);
foreach
my
$field
(
keys
%
{
$changes
{
$group
->
id
}
})
{
my
$change
=
$changes
{
$group
->
id
}
->
{
$field
};
$hash
{
changes
}{
$field
}
=
{
removed
=>
$self
->
type
(
'string'
,
$change
->
[
0
]),
added
=>
$self
->
type
(
'string'
,
$change
->
[
1
])
};
}
push
(
@result
,
\%
hash
);
}
return
{
groups
=>
\
@result
};
}
1
;
__END__
...
...
@@ -61,7 +121,7 @@ get information about them.
See L<Bugzilla::WebService> for a description of how parameters are passed,
and what B<STABLE>, B<UNSTABLE>, and B<EXPERIMENTAL> mean.
=head1 Group Creation
=head1 Group Creation
and Modification
=head2 create
...
...
@@ -138,4 +198,94 @@ You specified an invalid regular expression in the C<user_regexp> field.
=back
=head2 update
B<UNSTABLE>
=over
=item B<Description>
This allows you to update a group in Bugzilla.
=item B<Params>
At least C<ids> or C<names> must be set, or an error will be thrown.
=over
=item C<ids>
B<Required> C<array> Contain ids of groups to update.
=item C<names>
B<Required> C<array> Contain names of groups to update.
=item C<name>
C<string> A new name for group.
=item C<description>
C<string> A new description for groups. This is what will appear in the UI
as the name of the groups.
=item C<user_regexp>
C<string> A new regular expression for email. Will automatically grant
membership to these groups to anyone with an email address that matches
this perl regular expression.
=item C<is_active>
C<boolean> Set if groups are active and eligible to be used for bugs.
True if bugs can be restricted to this group, false otherwise.
=item C<icon_url>
C<string> A URL pointing to an icon that will appear next to the name of
users who are in this group.
=back
=item B<Returns>
A C<hash> with a single field "groups". This points to an array of hashes
with the following fields:
=over
=item C<id>
C<int> The id of the group that was updated.
=item C<changes>
C<hash> The changes that were actually done on this group. The keys are
the names of the fields that were changed, and the values are a hash
with two keys:
=over
=item C<added>
C<string> The values that were added to this field,
possibly a comma-and-space-separated list if multiple values were added.
=item C<removed>
C<string> The values that were removed from this field, possibly a
comma-and-space-separated list if multiple values were removed.
=back
=back
=item B<Errors>
The same as L</create>.
=back
=cut
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment