long_list.cgi 3.5 KB
Newer Older
1
#!/usr/bonsaitools/bin/perl -wT
2
# -*- Mode: perl; indent-tabs-mode: nil -*-
terry%netscape.com's avatar
terry%netscape.com committed
3
#
4 5 6 7 8 9 10 11 12 13
# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
terry%netscape.com's avatar
terry%netscape.com committed
14
# The Original Code is the Bugzilla Bug Tracking System.
15
#
terry%netscape.com's avatar
terry%netscape.com committed
16
# The Initial Developer of the Original Code is Netscape Communications
17 18 19 20
# Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All
# Rights Reserved.
#
terry%netscape.com's avatar
terry%netscape.com committed
21
# Contributor(s): Terry Weissman <terry@mozilla.org>
22
#                 Gervase Markham <gerv@gerv.net>
terry%netscape.com's avatar
terry%netscape.com committed
23

24
use strict;
25 26
use lib qw(.);

27 28
require "CGI.pl";

29
use vars qw($userid $usergroupset @legal_keywords %FORM);
30

31 32
# Use global template variables.
use vars qw($template $vars);
33

34
ConnectToDatabase();
35

36 37
quietly_check_login();

38 39
GetVersionTable();

40 41 42
my $generic_query = "
  SELECT 
    bugs.bug_id, 
43
    products.name, 
44 45 46 47 48 49 50
    bugs.version, 
    bugs.rep_platform,
    bugs.op_sys, 
    bugs.bug_status, 
    bugs.resolution, 
    bugs.priority,
    bugs.bug_severity, 
51
    components.name, 
52 53 54 55 56 57 58 59
    assign.login_name, 
    report.login_name,
    bugs.bug_file_loc, 
    bugs.short_desc, 
    bugs.target_milestone,
    bugs.qa_contact, 
    bugs.status_whiteboard, 
    bugs.keywords
60 61 62
  FROM bugs,profiles assign,profiles report, products, components
  WHERE assign.userid = bugs.assigned_to AND report.userid = bugs.reporter
    AND bugs.product_id=products.id AND bugs.component_id=components.id";
63 64 65 66 67 68 69 70 71 72

my $buglist = $::FORM{'buglist'} || 
              $::FORM{'bug_id'}  || 
              $::FORM{'id'}      || "";

my @bugs;

foreach my $bug_id (split(/[:,]/, $buglist)) {
    detaint_natural($bug_id) || next;
    SendSQL(SelectVisible("$generic_query AND bugs.bug_id = $bug_id",
73
                          $::userid, $::usergroupset));
terry%netscape.com's avatar
terry%netscape.com committed
74

75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
    my %bug;
    my @row = FetchSQLData();

    foreach my $field ("bug_id", "product", "version", "rep_platform",
                       "op_sys", "bug_status", "resolution", "priority",
                       "bug_severity", "component", "assigned_to", "reporter",
                       "bug_file_loc", "short_desc", "target_milestone",
                       "qa_contact", "status_whiteboard", "keywords") 
    {
        $bug{$field} = shift @row;
    }
    
    if ($bug{'bug_id'}) {
        $bug{'comments'} = GetComments($bug{'bug_id'});
        $bug{'qa_contact'} = $bug{'qa_contact'} > 0 ? 
                                          DBID_to_name($bug{'qa_contact'}) : "";

        push (@bugs, \%bug);
93
    }
terry%netscape.com's avatar
terry%netscape.com committed
94
}
95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113

# Add the list of bug hashes to the variables
$vars->{'bugs'} = \@bugs;

$vars->{'use_keywords'} = 1 if (@::legal_keywords);

$vars->{'quoteUrls'} = \&quoteUrls;
$vars->{'str2time'} = \&str2time;

# Work out a sensible filename for Content-Disposition.
# Sadly, I don't think we can tell if this was a named query.
my @time = localtime(time());
my $date = sprintf "%04d-%02d-%02d", 1900+$time[5],$time[4]+1,$time[3];
my $filename = "bugs-$date.html";

print "Content-Type: text/html\n";
print "Content-Disposition: inline; filename=$filename\n\n";

# Generate and return the UI (HTML page) from the appropriate template.
114 115
$template->process("bug/show-multiple.html.tmpl", $vars)
  || ThrowTemplateError($template->error());