]> git.donarmstrong.com Git - debbugs.git/commitdiff
add add_user to Debbugs::CGI
authorDon Armstrong <don@donarmstrong.com>
Tue, 2 Dec 2008 16:33:07 +0000 (08:33 -0800)
committerDon Armstrong <don@donarmstrong.com>
Tue, 2 Dec 2008 16:33:07 +0000 (08:33 -0800)
Debbugs/CGI.pm

index 3cd4348c4d672ac0832a72c6fc644e5978ce50e3..e2780036b5262d44fdb56dbf716bcdac45b35b2d 100644 (file)
@@ -35,12 +35,16 @@ use warnings;
 use strict;
 use vars qw($VERSION $DEBUG %EXPORT_TAGS @EXPORT_OK @EXPORT);
 use base qw(Exporter);
+
 use Debbugs::URI;
 use HTML::Entities;
 use Debbugs::Common qw(getparsedaddrs make_list);
 use Params::Validate qw(validate_with :types);
+
 use Debbugs::Config qw(:config);
 use Debbugs::Status qw(splitpackages isstrongseverity);
+use Debbugs::User qw();
+
 use Mail::Address;
 use POSIX qw(ceil);
 use Storable qw(dclone);
@@ -70,6 +74,7 @@ BEGIN{
                     util   => [qw(cgi_parameters quitcgi),
                               ],
                     forms  => [qw(option_form form_options_and_normal_param)],
+                    usertags => [qw(add_user)],
                     misc   => [qw(maint_decode)],
                     package_search => [qw(@package_search_key_order %package_search_keys)],
                     #status => [qw(getbugstatus)],
@@ -635,6 +640,38 @@ sub bug_linklist{
 }
 
 
+sub add_user {
+     my ($user,$usertags,$bug_usertags,$seen_users,$cats,$hidden) = @_;
+     $seen_users = {} if not defined $seen_users;
+     $bug_usertags = {} if not defined $bug_usertags;
+     $usertags = {} if not defined $usertags;
+     $cats = {} if not defined $cats;
+     $hidden = {} if not defined $hidden;
+     return if exists $seen_users->{$user};
+     $seen_users->{$user} = 1;
+
+     my $u = Debbugs::User::get_user($user);
+
+     my %vis = map { $_, 1 } @{$u->{"visible_cats"}};
+     for my $c (keys %{$u->{"categories"}}) {
+         $cats->{$c} = $u->{"categories"}->{$c};
+         $hidden->{$c} = 1 unless defined $vis{$c};
+     }
+     for my $t (keys %{$u->{"tags"}}) {
+         $usertags->{$t} = [] unless defined $usertags->{$t};
+         push @{$usertags->{$t}}, @{$u->{"tags"}->{$t}};
+     }
+
+     %{$bug_usertags} = ();
+     for my $t (keys %{$usertags}) {
+         for my $b (@{$usertags->{$t}}) {
+              $bug_usertags->{$b} = [] unless defined $bug_usertags->{$b};
+              push @{$bug_usertags->{$b}}, $t;
+         }
+     }
+}
+
+
 
 =head1 Forms