summaryrefslogtreecommitdiffstats
path: root/extensions/Review/lib
diff options
context:
space:
mode:
authorDylan William Hardison <dylan@hardison.net>2014-08-27 16:34:21 +0200
committerDylan William Hardison <dylan@hardison.net>2014-09-11 06:17:09 +0200
commit5b25f5c1f223643246750f74538fe1e95aea4382 (patch)
tree4365bbd7dac473ec37d5dae20e8e1e53c086e526 /extensions/Review/lib
parent97384adc32c5da9623d9e9e11f32a92ab9f3d953 (diff)
downloadbugzilla-5b25f5c1f223643246750f74538fe1e95aea4382.tar.gz
bugzilla-5b25f5c1f223643246750f74538fe1e95aea4382.tar.xz
Bug 1021902 - UI to view a user's review history
r=glob
Diffstat (limited to 'extensions/Review/lib')
-rw-r--r--extensions/Review/lib/WebService.pm33
1 files changed, 30 insertions, 3 deletions
diff --git a/extensions/Review/lib/WebService.pm b/extensions/Review/lib/WebService.pm
index 8d10b5423..b3baf509a 100644
--- a/extensions/Review/lib/WebService.pm
+++ b/extensions/Review/lib/WebService.pm
@@ -15,7 +15,7 @@ use base qw(Bugzilla::WebService);
use Bugzilla::Bug;
use Bugzilla::Component;
use Bugzilla::Error;
-use Bugzilla::Util qw(detaint_natural);
+use Bugzilla::Util qw(detaint_natural trick_taint);
use Bugzilla::WebService::Util 'filter';
sub suggestions {
@@ -83,6 +83,15 @@ sub flag_activity {
$match_criteria{flag_id} = $flag_id;
}
+ if (my $flag_ids = $params->{flag_ids}) {
+ foreach my $flag_id (@$flag_ids) {
+ detaint_natural($flag_id)
+ or ThrowUserError('invalid_flag_id', { flag_id => $flag_id });
+ }
+
+ $match_criteria{flag_id} = $flag_ids;
+ }
+
if (my $type_id = $params->{type_id}) {
detaint_natural($type_id)
or ThrowUserError('invalid_flag_type_id', { type_id => $type_id });
@@ -90,6 +99,12 @@ sub flag_activity {
$match_criteria{type_id} = $type_id;
}
+ if (my $type_name = $params->{type_name}) {
+ trick_taint($type_name);
+ my $flag_types = Bugzilla::FlagType::match({ name => $type_name });
+ $match_criteria{type_id} = [map { $_->id } @$flag_types];
+ }
+
for my $user_field (qw( requestee setter )) {
if (my $user_name = $params->{$user_field}) {
my $user = Bugzilla::User->check({ name => $user_name, cache => 1, _error => 'invalid_username' });
@@ -178,6 +193,14 @@ sub rest_resources {
},
},
},
+ qr{^/review/flag_activity/type_name/(\w+)$}, {
+ GET => {
+ method => 'flag_activity',
+ params => sub {
+ return { type_name => $_[0] }
+ },
+ },
+ },
# flag activity by user
qr{^/review/flag_activity/(requestee|setter|type_id)/(.*)$}, {
GET => {
@@ -335,13 +358,15 @@ Returns the history of flag status changes based on requestee, setter, flag_id,
=item B<REST>
-GET /rest/review/flag_activity/C<flag-id>
+GET /rest/review/flag_activity/C<flag_id>
GET /rest/review/flag_activity/requestee/C<requestee>
GET /rest/review/flag_activity/setter/C<setter>
-GET /rest/review/flag_activity/type_id/C<type-id>
+GET /rest/review/flag_activity/type_id/C<type_id>
+
+GET /rest/review/flag_activity/type/C<type_name>
GET /rest/review/flag_activity
@@ -363,6 +388,8 @@ Note that searching by C<flag_id> is not reliable because when flags are removed
=item C<type_id> (int) - The flag type id of a change
+=item C<type_name> (string) - the flag type name of a change
+
=back
=item B<Returns>