X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=cgi%2Fpkgreport.cgi;h=7f16855b704c739b1cfabac536a6f02f45897f36;hb=adf6539386c22827b4652dae96b4b634f6f4b4f2;hp=2d7dec655c18d8a941ae95b28db1fc45208bed8b;hpb=45e8787fb06dfe53e6249641482f4ea3b9c2d348;p=debbugs.git diff --git a/cgi/pkgreport.cgi b/cgi/pkgreport.cgi index 2d7dec6..7f16855 100755 --- a/cgi/pkgreport.cgi +++ b/cgi/pkgreport.cgi @@ -3,15 +3,15 @@ package debbugs; use strict; -use POSIX qw(strftime tzset nice); +use POSIX qw(strftime nice); -#require '/usr/lib/debbugs/errorlib'; require './common.pl'; -require '/etc/debbugs/config'; -require '/etc/debbugs/text'; - +use Debbugs::Config qw(:globals :text); use Debbugs::User; +use Debbugs::CGI qw(version_url); +use Debbugs::Common qw(getparsedaddrs); +use Debbugs::Bugs qw(get_bugs); use vars qw($gPackagePages $gWebDomain %gSeverityDisplay @gSeverityList); @@ -90,10 +90,10 @@ my %cats = ( } ], "severity" => [ { "nam" => "Severity", - "pri" => [map { "severity=$_" } @debbugs::gSeverityList], - "ttl" => [map { $debbugs::gSeverityDisplay{$_} } @debbugs::gSeverityList], + "pri" => [map { "severity=$_" } @gSeverityList], + "ttl" => [map { $gSeverityDisplay{$_} } @gSeverityList], "def" => "Unknown Severity", - "ord" => [0,1,2,3,4,5,6,7], + "ord" => [0..@gSeverityList], } ], "classification" => [ { "nam" => "Classification", @@ -111,7 +111,9 @@ my %cats = ( "normal" => [ qw(status severity classification) ], ); -my ($pkg, $src, $maint, $maintenc, $submitter, $severity, $status, $tag, $usertag); +my ($pkg, $src, $maint, $maintenc, $submitter, $severity, $status, $tag, $usertag, + $owner, + ); my %which = ( 'pkg' => \$pkg, @@ -122,6 +124,7 @@ my %which = ( 'severity' => \$severity, 'tag' => \$tag, 'usertag' => \$usertag, + 'owner' => \$owner, ); my @allowedEmpty = ( 'maint' ); @@ -158,7 +161,7 @@ quitcgi("You have to choose something to select by") if (!$found); my %bugusertags; my %ut; for my $user (split /[\s*,]+/, $users) { - next unless ($user =~ m/..../); + next unless length($user) >= 4; add_user($user); } @@ -181,10 +184,7 @@ my $this = ""; my %indexentry; my %strings = (); -$ENV{"TZ"} = 'UTC'; -tzset(); - -my $dtime = strftime "%a, %e %b %Y %T UTC", localtime; +my $dtime = strftime "%a, %e %b %Y %T UTC", gmtime; my $tail_html = $debbugs::gHTMLTail; $tail_html = $debbugs::gHTMLTail; $tail_html =~ s/SUBSTITUTE_DTIME/$dtime/; @@ -206,10 +206,14 @@ set_option("use-bug-idx", defined($param{'use-bug-idx'}) ? $param{'use-bug-idx'} set_option("show_list_header", $show_list_header); set_option("show_list_footer", $show_list_footer); +our %seen_users; sub add_user { my $ut = \%ut; my $u = shift; + return if $seen_users{$u}; + $seen_users{$u} = 1; + my $user = Debbugs::User::get_user($u); my %vis = map { $_, 1 } @{$user->{"visible_cats"}}; @@ -233,11 +237,20 @@ sub add_user { set_option("bugusertags", \%bugusertags); } +my $pseudodesc = getpseudodesc(); +if (defined $pseudodesc and defined $pkg and exists $pseudodesc->{$pkg}) { + undef $dist; + set_option('dist',$dist) +} my $title; my @bugs; if (defined $pkg) { $title = "package $pkg"; add_user("$pkg\@packages.debian.org"); + # figure out the source package + my $pkgsrc = getpkgsrc(); + add_user($pkgsrc->{$pkg}.'@packages.debian.org') + if defined $pkgsrc->{$pkg}; if (defined $version) { $title .= " (version $version)"; } elsif (defined $dist) { @@ -246,12 +259,7 @@ if (defined $pkg) { $title .= " ($verdesc)" if defined $verdesc; } my @pkgs = split /,/, $pkg; - @bugs = @{getbugs(sub {my %d=@_; - foreach my $try (splitpackages($d{"pkg"})) { - return 1 if grep($try eq $_, @pkgs); - } - return 0; - }, 'package', @pkgs)}; + @bugs = get_bugs(package=>\@pkgs); } elsif (defined $src) { add_user("$src\@packages.debian.org"); $title = "source $src"; @@ -263,46 +271,21 @@ if (defined $pkg) { my $verdesc = getversiondesc($src); $title .= " ($verdesc)" if defined $verdesc; } - my @pkgs = (); - my @srcs = split /,/, $src; - foreach my $try (@srcs) { - push @pkgs, getsrcpkgs($try); - push @pkgs, $try if ( !grep(/^\Q$try\E$/, @pkgs) ); - } - @bugs = @{getbugs(sub {my %d=@_; - foreach my $try (splitpackages($d{"pkg"})) { - return 1 if grep($try eq $_, @pkgs); - } - return 0; - }, 'package', @pkgs)}; + @bugs = get_bugs(src=>[split /,/, $src]); } elsif (defined $maint) { - my %maintainers = %{getmaintainers()}; add_user($maint); $title = "maintainer $maint"; $title .= " in $dist" if defined $dist; if ($maint eq "") { - @bugs = @{getbugs(sub {my %d=@_; - foreach my $try (splitpackages($d{"pkg"})) { - return 1 if !getparsedaddrs($maintainers{$try}); - } - return 0; - })}; + my %maintainers = %{getmaintainers()}; + @bugs = @{getbugs(sub {my %d=@_; + foreach my $try (splitpackages($d{"pkg"})) { + return 1 if !getparsedaddrs($maintainers{$try}); + } + return 0; + })}; } else { - my @maints = split /,/, $maint; - my @pkgs = (); - foreach my $try (@maints) { - foreach my $p (keys %maintainers) { - my @me = getparsedaddrs($maintainers{$p}); - push @pkgs, $p if grep { $_->address eq $try } @me; - } - } - @bugs = @{getbugs(sub {my %d=@_; - foreach my $try (splitpackages($d{"pkg"})) { - my @me = getparsedaddrs($maintainers{$try}); - return 1 if grep { $_->address eq $maint } @me; - } - return 0; - }, 'package', @pkgs)}; + @bugs = get_bugs(maint=>[map {lc ($_)} split /,/,$maint]); } } elsif (defined $maintenc) { my %maintainers = %{getmaintainers()}; @@ -321,13 +304,8 @@ if (defined $pkg) { add_user($submitter); $title = "submitter $submitter"; $title .= " in $dist" if defined $dist; - my @submitters = split /,/, $submitter; - @bugs = @{getbugs(sub {my %d=@_; - my @se = getparsedaddrs($d{"submitter"} || ""); - foreach my $try (@submitters) { - return 1 if grep { $_->address eq $try } @se; - } - }, 'submitter-email', @submitters)}; + my @submitters = map {lc ($_)} split /,/, $submitter; + @bugs = get_bugs(submitter => \@submitters); } elsif (defined($severity) && defined($status)) { $title = "$status $severity bugs"; $title .= " in $dist" if defined $dist; @@ -360,6 +338,14 @@ if (defined $pkg) { return grep(exists $tags{$_}, @tags); })}; } +elsif (defined $owner) { + $title = "bugs owned by $owner"; + $title .= " in $dist" if defined $dist; + my @owners = map {lc ($_)} split /,/, $owner; + my %bugs = (); + @bugs = get_bugs(owner=>\@owners); + +} $title = htmlsanit($title); my @names; my @prior; my @title; my @order; @@ -376,12 +362,12 @@ print "Content-Type: text/html; charset=utf-8\n\n"; print "\n"; print "
\n" . - "You might like to refer ", join(", ", @references), ".
\n"; } - print "If you find a bug not listed here, please\n"; - printf "report it.
\n", - urlsanit("http://${debbugs::gWebDomain}/Reporting${debbugs::gHTMLSuffix}"); + if (defined $maint || defined $maintenc) { + print "If you find a bug not listed here, please\n"; + printf "report it.
\n", + urlsanit("http://${debbugs::gWebDomain}/Reporting${debbugs::gHTMLSuffix}"); + } } else { print "There is no record of the " . (defined($pkg) ? htmlsanit($pkg) . " package" @@ -464,11 +452,13 @@ if (defined $pkg || defined $src) { set_option("archive", !$archive); printf "
See the %s reports
", - urlsanit('pkgreport.cgi?'.join(';', - map {$_ eq 'archived'?():("$_=$param{$_}") - } keys %param, - ('archived='.$archive?"yes":"no") - ) + urlsanit(pkg_url(( + map { + $_ eq 'archive'?():($_,$param{$_}) + } keys %param + ), + ('archive',($archive?"no":"yes")) + ) ), ($archive ? "active" : "archived"); set_option("archive", $archive); @@ -508,10 +498,10 @@ if (defined $pkg) { } print "