Commit 7b16c745 authored by endico%mozilla.org's avatar endico%mozilla.org

'Bug' data was in a global var. different bugs were sharing this and overwritig each other.

parent 9e45f64b
...@@ -30,14 +30,13 @@ require "globals.pl"; ...@@ -30,14 +30,13 @@ require "globals.pl";
require "CGI.pl"; require "CGI.pl";
package Bug; package Bug;
use CGI::Carp qw(fatalsToBrowser); use CGI::Carp qw(fatalsToBrowser);
my %bug;
my %ok_field; my %ok_field;
for my $key (qw (bug_id product version rep_platform op_sys bug_status for my $key (qw (bug_id product version rep_platform op_sys bug_status
resolution priority bug_severity component assigned_to resolution priority bug_severity component assigned_to
reporter bug_file_loc short_desc target_milestone reporter bug_file_loc short_desc target_milestone
qa_contact status_whiteboard creation_ts groupset qa_contact status_whiteboard creation_ts groupset
delta_ts votes) ){ delta_ts error votes) ){
$ok_field{$key}++; $ok_field{$key}++;
} }
...@@ -45,6 +44,7 @@ for my $key (qw (bug_id product version rep_platform op_sys bug_status ...@@ -45,6 +44,7 @@ for my $key (qw (bug_id product version rep_platform op_sys bug_status
# #
sub new { sub new {
my $type = shift(); my $type = shift();
my %bug;
# create a ref to an empty hash and bless it # create a ref to an empty hash and bless it
# #
...@@ -119,45 +119,45 @@ sub initBug { ...@@ -119,45 +119,45 @@ sub initBug {
"groupset", "delta_ts", "votes") { "groupset", "delta_ts", "votes") {
$fields{$field} = shift @row; $fields{$field} = shift @row;
if ($fields{$field}) { if ($fields{$field}) {
$bug{$field} = $fields{$field}; $self->{$field} = $fields{$field};
} }
$count++; $count++;
} }
} else { } else {
&::SendSQL("select groupset from bugs where bug_id = $bug_id"); &::SendSQL("select groupset from bugs where bug_id = $bug_id");
if (@row = &::FetchSQLData()) { if (@row = &::FetchSQLData()) {
$bug{'bug_id'} = $bug_id; $self->{'bug_id'} = $bug_id;
$bug{'error'} = "NotPermitted"; $self->{'error'} = "NotPermitted";
return $self; return $self;
} else { } else {
$bug{'bug_id'} = $bug_id; $self->{'bug_id'} = $bug_id;
$bug{'error'} = "NotFound"; $self->{'error'} = "NotFound";
return $self; return $self;
} }
} }
if ($bug{'short_desc'}) { if ($self->{'short_desc'}) {
$bug{'short_desc'} = QuoteXMLChars( $bug{'short_desc'} ); $self->{'short_desc'} = QuoteXMLChars( $self->{'short_desc'} );
} }
if (defined $bug{'status_whiteboard'}) { if (defined $self->{'status_whiteboard'}) {
$bug{'status_whiteboard'} = QuoteXMLChars($bug{'status_whiteboard'}); $self->{'status_whiteboard'} = QuoteXMLChars($self->{'status_whiteboard'});
} }
$bug{'assigned_to'} = &::DBID_to_real_or_loginname($bug{'assigned_to'}); $self->{'assigned_to'} = &::DBID_to_real_or_loginname($self->{'assigned_to'});
$bug{'reporter'} = &::DBID_to_real_or_loginname($bug{'reporter'}); $self->{'reporter'} = &::DBID_to_real_or_loginname($self->{'reporter'});
my $ccSet = new RelationSet; my $ccSet = new RelationSet;
$ccSet->mergeFromDB("select who from cc where bug_id=$bug_id"); $ccSet->mergeFromDB("select who from cc where bug_id=$bug_id");
my @cc = $ccSet->toArrayOfStrings(); my @cc = $ccSet->toArrayOfStrings();
if (@cc) { if (@cc) {
$bug{'cc'} = \@cc; $self->{'cc'} = \@cc;
} }
if (&::Param("useqacontact") && (defined $bug{'qa_contact'}) ) { if (&::Param("useqacontact") && (defined $self->{'qa_contact'}) ) {
my $name = $bug{'qa_contact'} > 0 ? &::DBID_to_name($bug{'qa_contact'}) :""; my $name = $self->{'qa_contact'} > 0 ? &::DBID_to_name($self->{'qa_contact'}) :"";
if ($name) { if ($name) {
$bug{'qa_contact'} = $name; $self->{'qa_contact'} = $name;
} }
} }
...@@ -172,7 +172,7 @@ sub initBug { ...@@ -172,7 +172,7 @@ sub initBug {
push(@list, &::FetchOneColumn()); push(@list, &::FetchOneColumn());
} }
if (@list) { if (@list) {
$bug{'keywords'} = &::html_quote(join(', ', @list)); $self->{'keywords'} = &::html_quote(join(', ', @list));
} }
} }
...@@ -192,7 +192,7 @@ sub initBug { ...@@ -192,7 +192,7 @@ sub initBug {
} }
} }
if (@attachments) { if (@attachments) {
$bug{'attachments'} = \@attachments; $self->{'attachments'} = \@attachments;
} }
&::SendSQL("select bug_id, who, bug_when, thetext &::SendSQL("select bug_id, who, bug_when, thetext
...@@ -208,17 +208,17 @@ sub initBug { ...@@ -208,17 +208,17 @@ sub initBug {
push @longdescs, \%longdesc; push @longdescs, \%longdesc;
} }
if (@longdescs) { if (@longdescs) {
$bug{'longdescs'} = \@longdescs; $self->{'longdescs'} = \@longdescs;
} }
if (&::Param("usedependencies")) { if (&::Param("usedependencies")) {
my @depends = EmitDependList("blocked", "dependson", $bug_id); my @depends = EmitDependList("blocked", "dependson", $bug_id);
if ( @depends ) { if ( @depends ) {
$bug{'dependson'} = \@depends; $self->{'dependson'} = \@depends;
} }
my @blocks = EmitDependList("dependson", "blocked", $bug_id); my @blocks = EmitDependList("dependson", "blocked", $bug_id);
if ( @blocks ) { if ( @blocks ) {
$bug{'blocks'} = \@blocks; $self->{'blocks'} = \@blocks;
} }
} }
return $self; return $self;
...@@ -234,9 +234,9 @@ sub emitXML { ...@@ -234,9 +234,9 @@ sub emitXML {
my $xml; my $xml;
if (exists $bug{'error'}) { if (exists $self->{'error'}) {
$xml .= "<bug error=\"$bug{'error'}\">\n"; $xml .= "<bug error=\"$self->{'error'}\">\n";
$xml .= " <bug_id>$bug{'bug_id'}</bug_id>\n"; $xml .= " <bug_id>$self->{'bug_id'}</bug_id>\n";
$xml .= "</bug>\n"; $xml .= "</bug>\n";
return $xml; return $xml;
} }
...@@ -248,41 +248,41 @@ sub emitXML { ...@@ -248,41 +248,41 @@ sub emitXML {
"component", "reporter", "target_milestone", "bug_severity", "component", "reporter", "target_milestone", "bug_severity",
"creation_ts", "qa_contact", "op_sys", "resolution", "bug_file_loc", "creation_ts", "qa_contact", "op_sys", "resolution", "bug_file_loc",
"short_desc", "keywords", "status_whiteboard") { "short_desc", "keywords", "status_whiteboard") {
if ($bug{$field}) { if ($self->{$field}) {
$xml .= " <$field>" . $bug{$field} . "</$field>\n"; $xml .= " <$field>" . $self->{$field} . "</$field>\n";
} }
} }
foreach my $field ("dependson", "blocks", "cc") { foreach my $field ("dependson", "blocks", "cc") {
if (defined $bug{$field}) { if (defined $self->{$field}) {
for (my $i=0 ; $i < @{$bug{$field}} ; $i++) { for (my $i=0 ; $i < @{$self->{$field}} ; $i++) {
$xml .= " <$field>" . $bug{$field}[$i] . "</$field>\n"; $xml .= " <$field>" . $self->{$field}[$i] . "</$field>\n";
} }
} }
} }
if (defined $bug{'longdescs'}) { if (defined $self->{'longdescs'}) {
for (my $i=0 ; $i < @{$bug{'longdescs'}} ; $i++) { for (my $i=0 ; $i < @{$self->{'longdescs'}} ; $i++) {
$xml .= " <long_desc>\n"; $xml .= " <long_desc>\n";
$xml .= " <who>" . &::DBID_to_name($bug{'longdescs'}[$i]->{'who'}) $xml .= " <who>" . &::DBID_to_name($self->{'longdescs'}[$i]->{'who'})
. "</who>\n"; . "</who>\n";
$xml .= " <bug_when>" . $bug{'longdescs'}[$i]->{'bug_when'} $xml .= " <bug_when>" . $self->{'longdescs'}[$i]->{'bug_when'}
. "</bug_when>\n"; . "</bug_when>\n";
$xml .= " <thetext>" . QuoteXMLChars($bug{'longdescs'}[$i]->{'thetext'}) $xml .= " <thetext>" . QuoteXMLChars($self->{'longdescs'}[$i]->{'thetext'})
. "</thetext>\n"; . "</thetext>\n";
$xml .= " </long_desc>\n"; $xml .= " </long_desc>\n";
} }
} }
if (defined $bug{'attachments'}) { if (defined $self->{'attachments'}) {
for (my $i=0 ; $i < @{$bug{'attachments'}} ; $i++) { for (my $i=0 ; $i < @{$self->{'attachments'}} ; $i++) {
$xml .= " <attachment>\n"; $xml .= " <attachment>\n";
$xml .= " <attachid>" . $bug{'attachments'}[$i]->{'attachid'} $xml .= " <attachid>" . $self->{'attachments'}[$i]->{'attachid'}
. "</attachid>\n"; . "</attachid>\n";
$xml .= " <date>" . $bug{'attachments'}[$i]->{'date'} . "</date>\n"; $xml .= " <date>" . $self->{'attachments'}[$i]->{'date'} . "</date>\n";
$xml .= " <desc>" . $bug{'attachments'}[$i]->{'desc'} . "</desc>\n"; $xml .= " <desc>" . $self->{'attachments'}[$i]->{'desc'} . "</desc>\n";
# $xml .= " <type>" . $bug{'attachments'}[$i]->{'type'} . "</type>\n"; # $xml .= " <type>" . $self->{'attachments'}[$i]->{'type'} . "</type>\n";
# $xml .= " <data>" . $bug{'attachments'}[$i]->{'data'} . "</data>\n"; # $xml .= " <data>" . $self->{'attachments'}[$i]->{'data'} . "</data>\n";
$xml .= " </attachment>\n"; $xml .= " </attachment>\n";
} }
} }
...@@ -355,12 +355,12 @@ sub AUTOLOAD { ...@@ -355,12 +355,12 @@ sub AUTOLOAD {
$attr =~ s/.*:://; $attr =~ s/.*:://;
return unless $attr=~ /[^A-Z]/; return unless $attr=~ /[^A-Z]/;
if (@_) { if (@_) {
$bug{$attr} = shift; $self->{$attr} = shift;
return; return;
} }
confess "invalid bug attribute $attr" unless $ok_field{$attr}; confess ("invalid bug attribute $attr") unless $ok_field{$attr};
if (defined $bug{$attr}) { if (defined $self->{$attr}) {
return $bug{$attr}; return $self->{$attr};
} else { } else {
return ''; return '';
} }
......
...@@ -30,14 +30,13 @@ require "globals.pl"; ...@@ -30,14 +30,13 @@ require "globals.pl";
require "CGI.pl"; require "CGI.pl";
package Bug; package Bug;
use CGI::Carp qw(fatalsToBrowser); use CGI::Carp qw(fatalsToBrowser);
my %bug;
my %ok_field; my %ok_field;
for my $key (qw (bug_id product version rep_platform op_sys bug_status for my $key (qw (bug_id product version rep_platform op_sys bug_status
resolution priority bug_severity component assigned_to resolution priority bug_severity component assigned_to
reporter bug_file_loc short_desc target_milestone reporter bug_file_loc short_desc target_milestone
qa_contact status_whiteboard creation_ts groupset qa_contact status_whiteboard creation_ts groupset
delta_ts votes) ){ delta_ts error votes) ){
$ok_field{$key}++; $ok_field{$key}++;
} }
...@@ -45,6 +44,7 @@ for my $key (qw (bug_id product version rep_platform op_sys bug_status ...@@ -45,6 +44,7 @@ for my $key (qw (bug_id product version rep_platform op_sys bug_status
# #
sub new { sub new {
my $type = shift(); my $type = shift();
my %bug;
# create a ref to an empty hash and bless it # create a ref to an empty hash and bless it
# #
...@@ -119,45 +119,45 @@ sub initBug { ...@@ -119,45 +119,45 @@ sub initBug {
"groupset", "delta_ts", "votes") { "groupset", "delta_ts", "votes") {
$fields{$field} = shift @row; $fields{$field} = shift @row;
if ($fields{$field}) { if ($fields{$field}) {
$bug{$field} = $fields{$field}; $self->{$field} = $fields{$field};
} }
$count++; $count++;
} }
} else { } else {
&::SendSQL("select groupset from bugs where bug_id = $bug_id"); &::SendSQL("select groupset from bugs where bug_id = $bug_id");
if (@row = &::FetchSQLData()) { if (@row = &::FetchSQLData()) {
$bug{'bug_id'} = $bug_id; $self->{'bug_id'} = $bug_id;
$bug{'error'} = "NotPermitted"; $self->{'error'} = "NotPermitted";
return $self; return $self;
} else { } else {
$bug{'bug_id'} = $bug_id; $self->{'bug_id'} = $bug_id;
$bug{'error'} = "NotFound"; $self->{'error'} = "NotFound";
return $self; return $self;
} }
} }
if ($bug{'short_desc'}) { if ($self->{'short_desc'}) {
$bug{'short_desc'} = QuoteXMLChars( $bug{'short_desc'} ); $self->{'short_desc'} = QuoteXMLChars( $self->{'short_desc'} );
} }
if (defined $bug{'status_whiteboard'}) { if (defined $self->{'status_whiteboard'}) {
$bug{'status_whiteboard'} = QuoteXMLChars($bug{'status_whiteboard'}); $self->{'status_whiteboard'} = QuoteXMLChars($self->{'status_whiteboard'});
} }
$bug{'assigned_to'} = &::DBID_to_real_or_loginname($bug{'assigned_to'}); $self->{'assigned_to'} = &::DBID_to_real_or_loginname($self->{'assigned_to'});
$bug{'reporter'} = &::DBID_to_real_or_loginname($bug{'reporter'}); $self->{'reporter'} = &::DBID_to_real_or_loginname($self->{'reporter'});
my $ccSet = new RelationSet; my $ccSet = new RelationSet;
$ccSet->mergeFromDB("select who from cc where bug_id=$bug_id"); $ccSet->mergeFromDB("select who from cc where bug_id=$bug_id");
my @cc = $ccSet->toArrayOfStrings(); my @cc = $ccSet->toArrayOfStrings();
if (@cc) { if (@cc) {
$bug{'cc'} = \@cc; $self->{'cc'} = \@cc;
} }
if (&::Param("useqacontact") && (defined $bug{'qa_contact'}) ) { if (&::Param("useqacontact") && (defined $self->{'qa_contact'}) ) {
my $name = $bug{'qa_contact'} > 0 ? &::DBID_to_name($bug{'qa_contact'}) :""; my $name = $self->{'qa_contact'} > 0 ? &::DBID_to_name($self->{'qa_contact'}) :"";
if ($name) { if ($name) {
$bug{'qa_contact'} = $name; $self->{'qa_contact'} = $name;
} }
} }
...@@ -172,7 +172,7 @@ sub initBug { ...@@ -172,7 +172,7 @@ sub initBug {
push(@list, &::FetchOneColumn()); push(@list, &::FetchOneColumn());
} }
if (@list) { if (@list) {
$bug{'keywords'} = &::html_quote(join(', ', @list)); $self->{'keywords'} = &::html_quote(join(', ', @list));
} }
} }
...@@ -192,7 +192,7 @@ sub initBug { ...@@ -192,7 +192,7 @@ sub initBug {
} }
} }
if (@attachments) { if (@attachments) {
$bug{'attachments'} = \@attachments; $self->{'attachments'} = \@attachments;
} }
&::SendSQL("select bug_id, who, bug_when, thetext &::SendSQL("select bug_id, who, bug_when, thetext
...@@ -208,17 +208,17 @@ sub initBug { ...@@ -208,17 +208,17 @@ sub initBug {
push @longdescs, \%longdesc; push @longdescs, \%longdesc;
} }
if (@longdescs) { if (@longdescs) {
$bug{'longdescs'} = \@longdescs; $self->{'longdescs'} = \@longdescs;
} }
if (&::Param("usedependencies")) { if (&::Param("usedependencies")) {
my @depends = EmitDependList("blocked", "dependson", $bug_id); my @depends = EmitDependList("blocked", "dependson", $bug_id);
if ( @depends ) { if ( @depends ) {
$bug{'dependson'} = \@depends; $self->{'dependson'} = \@depends;
} }
my @blocks = EmitDependList("dependson", "blocked", $bug_id); my @blocks = EmitDependList("dependson", "blocked", $bug_id);
if ( @blocks ) { if ( @blocks ) {
$bug{'blocks'} = \@blocks; $self->{'blocks'} = \@blocks;
} }
} }
return $self; return $self;
...@@ -234,9 +234,9 @@ sub emitXML { ...@@ -234,9 +234,9 @@ sub emitXML {
my $xml; my $xml;
if (exists $bug{'error'}) { if (exists $self->{'error'}) {
$xml .= "<bug error=\"$bug{'error'}\">\n"; $xml .= "<bug error=\"$self->{'error'}\">\n";
$xml .= " <bug_id>$bug{'bug_id'}</bug_id>\n"; $xml .= " <bug_id>$self->{'bug_id'}</bug_id>\n";
$xml .= "</bug>\n"; $xml .= "</bug>\n";
return $xml; return $xml;
} }
...@@ -248,41 +248,41 @@ sub emitXML { ...@@ -248,41 +248,41 @@ sub emitXML {
"component", "reporter", "target_milestone", "bug_severity", "component", "reporter", "target_milestone", "bug_severity",
"creation_ts", "qa_contact", "op_sys", "resolution", "bug_file_loc", "creation_ts", "qa_contact", "op_sys", "resolution", "bug_file_loc",
"short_desc", "keywords", "status_whiteboard") { "short_desc", "keywords", "status_whiteboard") {
if ($bug{$field}) { if ($self->{$field}) {
$xml .= " <$field>" . $bug{$field} . "</$field>\n"; $xml .= " <$field>" . $self->{$field} . "</$field>\n";
} }
} }
foreach my $field ("dependson", "blocks", "cc") { foreach my $field ("dependson", "blocks", "cc") {
if (defined $bug{$field}) { if (defined $self->{$field}) {
for (my $i=0 ; $i < @{$bug{$field}} ; $i++) { for (my $i=0 ; $i < @{$self->{$field}} ; $i++) {
$xml .= " <$field>" . $bug{$field}[$i] . "</$field>\n"; $xml .= " <$field>" . $self->{$field}[$i] . "</$field>\n";
} }
} }
} }
if (defined $bug{'longdescs'}) { if (defined $self->{'longdescs'}) {
for (my $i=0 ; $i < @{$bug{'longdescs'}} ; $i++) { for (my $i=0 ; $i < @{$self->{'longdescs'}} ; $i++) {
$xml .= " <long_desc>\n"; $xml .= " <long_desc>\n";
$xml .= " <who>" . &::DBID_to_name($bug{'longdescs'}[$i]->{'who'}) $xml .= " <who>" . &::DBID_to_name($self->{'longdescs'}[$i]->{'who'})
. "</who>\n"; . "</who>\n";
$xml .= " <bug_when>" . $bug{'longdescs'}[$i]->{'bug_when'} $xml .= " <bug_when>" . $self->{'longdescs'}[$i]->{'bug_when'}
. "</bug_when>\n"; . "</bug_when>\n";
$xml .= " <thetext>" . QuoteXMLChars($bug{'longdescs'}[$i]->{'thetext'}) $xml .= " <thetext>" . QuoteXMLChars($self->{'longdescs'}[$i]->{'thetext'})
. "</thetext>\n"; . "</thetext>\n";
$xml .= " </long_desc>\n"; $xml .= " </long_desc>\n";
} }
} }
if (defined $bug{'attachments'}) { if (defined $self->{'attachments'}) {
for (my $i=0 ; $i < @{$bug{'attachments'}} ; $i++) { for (my $i=0 ; $i < @{$self->{'attachments'}} ; $i++) {
$xml .= " <attachment>\n"; $xml .= " <attachment>\n";
$xml .= " <attachid>" . $bug{'attachments'}[$i]->{'attachid'} $xml .= " <attachid>" . $self->{'attachments'}[$i]->{'attachid'}
. "</attachid>\n"; . "</attachid>\n";
$xml .= " <date>" . $bug{'attachments'}[$i]->{'date'} . "</date>\n"; $xml .= " <date>" . $self->{'attachments'}[$i]->{'date'} . "</date>\n";
$xml .= " <desc>" . $bug{'attachments'}[$i]->{'desc'} . "</desc>\n"; $xml .= " <desc>" . $self->{'attachments'}[$i]->{'desc'} . "</desc>\n";
# $xml .= " <type>" . $bug{'attachments'}[$i]->{'type'} . "</type>\n"; # $xml .= " <type>" . $self->{'attachments'}[$i]->{'type'} . "</type>\n";
# $xml .= " <data>" . $bug{'attachments'}[$i]->{'data'} . "</data>\n"; # $xml .= " <data>" . $self->{'attachments'}[$i]->{'data'} . "</data>\n";
$xml .= " </attachment>\n"; $xml .= " </attachment>\n";
} }
} }
...@@ -355,12 +355,12 @@ sub AUTOLOAD { ...@@ -355,12 +355,12 @@ sub AUTOLOAD {
$attr =~ s/.*:://; $attr =~ s/.*:://;
return unless $attr=~ /[^A-Z]/; return unless $attr=~ /[^A-Z]/;
if (@_) { if (@_) {
$bug{$attr} = shift; $self->{$attr} = shift;
return; return;
} }
confess "invalid bug attribute $attr" unless $ok_field{$attr}; confess ("invalid bug attribute $attr") unless $ok_field{$attr};
if (defined $bug{$attr}) { if (defined $self->{$attr}) {
return $bug{$attr}; return $self->{$attr};
} else { } else {
return ''; return '';
} }
......
...@@ -53,6 +53,6 @@ print Bug::XML_Header( Param("urlbase"), $::param{'version'}, ...@@ -53,6 +53,6 @@ print Bug::XML_Header( Param("urlbase"), $::param{'version'},
foreach my $id (@ids) { foreach my $id (@ids) {
my $bug = new Bug($id, $::userid); my $bug = new Bug($id, $::userid);
print $bug->emitXML; print $bug->emitXML;
$bug->bug_status("BLAH");
} }
print Bug::XML_Footer; print Bug::XML_Footer;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment