]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 192516: Moving the loose .pm files into the Bugzilla directory, where they belong...
authorjustdave%syndicomm.com <>
Thu, 18 Mar 2004 11:57:04 +0000 (11:57 +0000)
committerjustdave%syndicomm.com <>
Thu, 18 Mar 2004 11:57:04 +0000 (11:57 +0000)
r= myk, gerv
a= justdave

18 files changed:
Attachment.pm [deleted file]
Bug.pm [deleted file]
Bugzilla/Attachment.pm
Bugzilla/Bug.pm
Bugzilla/BugMail.pm
Bugzilla/Flag.pm
Bugzilla/RelationSet.pm
Bugzilla/Token.pm
RelationSet.pm [deleted file]
Token.pm [deleted file]
checksetup.pl
globals.pl
move.pl
post_bug.cgi
process_bug.cgi
show_bug.cgi
token.cgi
userprefs.cgi

diff --git a/Attachment.pm b/Attachment.pm
deleted file mode 100644 (file)
index 84979d3..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-# -*- Mode: perl; indent-tabs-mode: nil -*-
-#
-# 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.
-#
-# The Original Code is the Bugzilla Bug Tracking System.
-#
-# The Initial Developer of the Original Code is Netscape Communications
-# Corporation. Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All
-# Rights Reserved.
-#
-# Contributor(s): Terry Weissman <terry@mozilla.org>
-#                 Myk Melez <myk@mozilla.org>
-
-############################################################################
-# Module Initialization
-############################################################################
-
-use strict;
-
-package Attachment;
-
-# This module requires that its caller have said "require CGI.pl" to import
-# relevant functions from that script and its companion globals.pl.
-
-# Use the Flag module to handle flags.
-use Bugzilla::Flag;
-
-############################################################################
-# Functions
-############################################################################
-
-sub new {
-    # Returns a hash of information about the attachment with the given ID.
-
-    my ($invocant, $id) = @_;
-    return undef if !$id;
-    my $self = { 'id' => $id };
-    my $class = ref($invocant) || $invocant;
-    bless($self, $class);
-    
-    &::PushGlobalSQLState();
-    &::SendSQL("SELECT 1, description, bug_id, isprivate FROM attachments " . 
-               "WHERE attach_id = $id");
-    ($self->{'exists'},
-     $self->{'summary'},
-     $self->{'bug_id'},
-     $self->{'isprivate'}) = &::FetchSQLData();
-    &::PopGlobalSQLState();
-
-    return $self;
-}
-
-sub query
-{
-  # Retrieves and returns an array of attachment records for a given bug. 
-  # This data should be given to attachment/list.atml in an
-  # "attachments" variable.
-  my ($bugid) = @_;
-
-  my $in_editbugs = &::UserInGroup("editbugs");
-  &::SendSQL("SELECT product_id
-           FROM bugs 
-           WHERE bug_id = $bugid");
-  my $productid = &::FetchOneColumn();
-  my $caneditproduct = &::CanEditProductId($productid);
-
-  # Retrieve a list of attachments for this bug and write them into an array
-  # of hashes in which each hash represents a single attachment.
-  &::SendSQL("
-              SELECT attach_id, DATE_FORMAT(creation_ts, '%Y.%m.%d %H:%i'),
-              mimetype, description, ispatch, isobsolete, isprivate, 
-              submitter_id, LENGTH(thedata)
-              FROM attachments WHERE bug_id = $bugid ORDER BY attach_id
-            ");
-  my @attachments = ();
-  while (&::MoreSQLData()) {
-    my %a;
-    my $submitter_id;
-    ($a{'attachid'}, $a{'date'}, $a{'contenttype'}, $a{'description'},
-     $a{'ispatch'}, $a{'isobsolete'}, $a{'isprivate'}, $submitter_id, 
-     $a{'datasize'}) = &::FetchSQLData();
-
-    # Retrieve a list of flags for this attachment.
-    $a{'flags'} = Bugzilla::Flag::match({ 'attach_id' => $a{'attachid'} });
-    
-    # We will display the edit link if the user can edit the attachment;
-    # ie the are the submitter, or they have canedit.
-    # Also show the link if the user is not logged in - in that cae,
-    # They'll be prompted later
-    $a{'canedit'} = ($::userid == 0 || (($submitter_id == $::userid ||
-                     $in_editbugs) && $caneditproduct));
-    push @attachments, \%a;
-  }
-  
-  return \@attachments;  
-}
-
-1;
diff --git a/Bug.pm b/Bug.pm
deleted file mode 100755 (executable)
index 94bd628..0000000
--- a/Bug.pm
+++ /dev/null
@@ -1,510 +0,0 @@
-# -*- Mode: perl; indent-tabs-mode: nil -*-
-#
-# 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.
-#
-# The Original Code is the Bugzilla Bug Tracking System.
-#
-# The Initial Developer of the Original Code is Netscape Communications
-# Corporation. Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All
-# Rights Reserved.
-#
-# Contributor(s): Dawn Endico    <endico@mozilla.org>
-#                 Terry Weissman <terry@mozilla.org>
-#                 Chris Yeh      <cyeh@bluemartini.com>
-
-package Bug;
-
-use strict;
-
-use RelationSet;
-use vars qw($unconfirmedstate $legal_keywords @legal_platform
-            @legal_priority @legal_severity @legal_opsys @legal_bugs_status
-            @settable_resolution %components %versions %target_milestone
-            @enterable_products %milestoneurl %prodmaxvotes);
-
-use CGI::Carp qw(fatalsToBrowser);
-
-use Attachment;
-use Bugzilla::Config;
-use Bugzilla::Constants;
-use Bugzilla::Flag;
-use Bugzilla::FlagType;
-use Bugzilla::User;
-use Bugzilla::Util;
-
-sub fields {
-    # Keep this ordering in sync with bugzilla.dtd
-    my @fields = qw(bug_id alias creation_ts short_desc delta_ts
-                    reporter_accessible cclist_accessible
-                    product component version rep_platform op_sys
-                    bug_status resolution
-                    bug_file_loc status_whiteboard keywords
-                    priority bug_severity target_milestone
-                    dependson blocked votes
-                    reporter assigned_to cc
-                   );
-
-    if (Param('useqacontact')) {
-        push @fields, "qa_contact";
-    }
-
-    if (Param('timetrackinggroup')) {
-        push @fields, qw(estimated_time remaining_time actual_time);
-    }
-
-    return @fields;
-}
-
-my %ok_field;
-foreach my $key (qw(error groups
-                    longdescs milestoneurl attachments
-                    isopened isunconfirmed
-                    flag_types num_attachment_flag_types
-                    show_attachment_flags use_keywords any_flags_requesteeble
-                   ),
-                 fields()) {
-    $ok_field{$key}++;
-}
-
-# create a new empty bug
-#
-sub new {
-  my $type = shift();
-  my %bug;
-
-  # create a ref to an empty hash and bless it
-  #
-  my $self = {%bug};
-  bless $self, $type;
-
-  # construct from a hash containing a bug's info
-  #
-  if ($#_ == 1) {
-    $self->initBug(@_);
-  } else {
-    confess("invalid number of arguments \($#_\)($_)");
-  }
-
-  # bless as a Bug
-  #
-  return $self;
-}
-
-# dump info about bug into hash unless user doesn't have permission
-# user_id 0 is used when person is not logged in.
-#
-sub initBug  {
-  my $self = shift();
-  my ($bug_id, $user_id) = (@_);
-
-  $bug_id = trim($bug_id);
-
-  my $old_bug_id = $bug_id;
-
-  # If the bug ID isn't numeric, it might be an alias, so try to convert it.
-  $bug_id = &::BugAliasToID($bug_id) if $bug_id !~ /^[1-9][0-9]*$/;
-
-  if ((! defined $bug_id) || (!$bug_id) || (!detaint_natural($bug_id))) {
-      # no bug number given or the alias didn't match a bug
-      $self->{'bug_id'} = $old_bug_id;
-      $self->{'error'} = "InvalidBugId";
-      return $self;
-  }
-
-# default userid 0, or get DBID if you used an email address
-  unless (defined $user_id) {
-    $user_id = 0;
-  }
-  else {
-     if ($user_id =~ /^\@/) {
-        $user_id = &::DBname_to_id($user_id); 
-     }
-  }
-
-  $self->{'whoid'} = $user_id;
-
-  my $query = "
-    SELECT
-      bugs.bug_id, alias, bugs.product_id, products.name, version,
-      rep_platform, op_sys, bug_status, resolution, priority,
-      bug_severity, bugs.component_id, components.name, assigned_to,
-      reporter, bug_file_loc, short_desc, target_milestone,
-      qa_contact, status_whiteboard,
-      DATE_FORMAT(creation_ts,'%Y.%m.%d %H:%i'),
-      delta_ts, ifnull(sum(votes.vote_count),0),
-      reporter_accessible, cclist_accessible,
-      estimated_time, remaining_time
-    from bugs left join votes using(bug_id),
-      products, components
-    where bugs.bug_id = $bug_id
-      AND products.id = bugs.product_id
-      AND components.id = bugs.component_id
-    group by bugs.bug_id";
-
-  &::SendSQL($query);
-  my @row = ();
-
-  if ((@row = &::FetchSQLData()) && &::CanSeeBug($bug_id, $self->{'whoid'})) {
-    my $count = 0;
-    my %fields;
-    foreach my $field ("bug_id", "alias", "product_id", "product", "version", 
-                       "rep_platform", "op_sys", "bug_status", "resolution", 
-                       "priority", "bug_severity", "component_id", "component",
-                       "assigned_to", "reporter", "bug_file_loc", "short_desc",
-                       "target_milestone", "qa_contact", "status_whiteboard", 
-                       "creation_ts", "delta_ts", "votes",
-                       "reporter_accessible", "cclist_accessible",
-                       "estimated_time", "remaining_time")
-      {
-        $fields{$field} = shift @row;
-        if (defined $fields{$field}) {
-            $self->{$field} = $fields{$field};
-        }
-        $count++;
-    }
-  } elsif (@row) {
-      $self->{'bug_id'} = $bug_id;
-      $self->{'error'} = "NotPermitted";
-      return $self;
-  } else {
-      $self->{'bug_id'} = $bug_id;
-      $self->{'error'} = "NotFound";
-      return $self;
-  }
-
-  $self->{'assigned_to'} = new Bugzilla::User($self->{'assigned_to'});
-  $self->{'reporter'} = new Bugzilla::User($self->{'reporter'});
-
-  if (Param('useqacontact') && $self->{'qa_contact'} > 0) {
-      $self->{'qa_contact'} = new Bugzilla::User($self->{'qa_contact'});
-  } else {
-      $self->{'qa_contact'} = undef;
-  }
-
-  my $ccSet = new RelationSet;
-  $ccSet->mergeFromDB("select who from cc where bug_id=$bug_id");
-  my @cc = $ccSet->toArrayOfStrings();
-  if (@cc) {
-    $self->{'cc'} = \@cc;
-  }
-
-  if (@::legal_keywords) {
-    &::SendSQL("SELECT keyworddefs.name 
-              FROM keyworddefs, keywords
-             WHERE keywords.bug_id = $bug_id 
-               AND keyworddefs.id = keywords.keywordid
-          ORDER BY keyworddefs.name");
-    my @list;
-    while (&::MoreSQLData()) {
-        push(@list, &::FetchOneColumn());
-    }
-    if (@list) {
-      $self->{'keywords'} = join(', ', @list);
-    }
-  }
-
-  $self->{'attachments'} = Attachment::query($self->{bug_id});
-
-  # The types of flags that can be set on this bug.
-  # If none, no UI for setting flags will be displayed.
-  my $flag_types = 
-    Bugzilla::FlagType::match({ 'target_type'  => 'bug', 
-                                'product_id'   => $self->{'product_id'}, 
-                                'component_id' => $self->{'component_id'} });
-  foreach my $flag_type (@$flag_types) {
-      $flag_type->{'flags'} = 
-        Bugzilla::Flag::match({ 'bug_id'      => $self->{bug_id},
-                                'type_id'     => $flag_type->{'id'},
-                                'target_type' => 'bug' });
-  }
-  $self->{'flag_types'} = $flag_types;
-  $self->{'any_flags_requesteeble'} = grep($_->{'is_requesteeble'}, @$flag_types);
-
-  # The number of types of flags that can be set on attachments to this bug
-  # and the number of flags on those attachments.  One of these counts must be
-  # greater than zero in order for the "flags" column to appear in the table
-  # of attachments.
-  my $num_attachment_flag_types =
-    Bugzilla::FlagType::count({ 'target_type'  => 'attachment',
-                                'product_id'   => $self->{'product_id'},
-                                'component_id' => $self->{'component_id'},
-                                'is_active'    => 1 });
-  my $num_attachment_flags =
-    Bugzilla::Flag::count({ 'target_type'  => 'attachment',
-                            'bug_id'       => $self->{bug_id} });
-
-  $self->{'show_attachment_flags'}
-    = $num_attachment_flag_types || $num_attachment_flags;
-
-  $self->{'milestoneurl'} = $::milestoneurl{$self->{product}};
-
-  $self->{'isunconfirmed'} = ($self->{bug_status} eq $::unconfirmedstate);
-  $self->{'isopened'} = &::IsOpenedState($self->{bug_status});
-  
-  my @depends = EmitDependList("blocked", "dependson", $bug_id);
-  if (@depends) {
-      $self->{'dependson'} = \@depends;
-  }
-  my @blocked = EmitDependList("dependson", "blocked", $bug_id);
-  if (@blocked) {
-    $self->{'blocked'} = \@blocked;
-  }
-
-  return $self;
-}
-
-sub dup_id {
-    my ($self) = @_;
-
-    return $self->{'dup_id'} if exists $self->{'dup_id'};
-
-    $self->{'dup_id'} = undef;
-    if ($self->{'resolution'} eq 'DUPLICATE') { 
-        my $dbh = Bugzilla->dbh;
-        $self->{'dup_id'} =
-          $dbh->selectrow_array(q{SELECT dupe_of 
-                                  FROM duplicates
-                                  WHERE dupe = ?},
-                                undef,
-                                $self->{'bug_id'});
-    }
-    return $self->{'dup_id'};
-}
-
-sub actual_time {
-    my ($self) = @_;
-
-    return $self->{'actual_time'} if exists $self->{'actual_time'};
-
-    if (&::UserInGroup(Param("timetrackinggroup"))) {
-        &::SendSQL("SELECT SUM(work_time)
-               FROM longdescs WHERE longdescs.bug_id=$self->{bug_id}");
-        $self->{'actual_time'} = &::FetchSQLData();
-    }
-
-    return $self->{'actual_time'};
-}
-
-sub longdescs {
-    my ($self) = @_;
-
-    return $self->{'longdescs'} if exists $self->{'longdescs'};
-
-    $self->{'longdescs'} = &::GetComments($self->{bug_id});
-
-    return $self->{'longdescs'};
-}
-
-sub use_keywords {
-    return @::legal_keywords;
-}
-
-sub use_votes {
-    my ($self) = @_;
-
-    return Param('usevotes')
-      && $::prodmaxvotes{$self->{product}} > 0;
-}
-
-sub groups {
-    my $self = shift;
-
-    return $self->{'groups'} if exists $self->{'groups'};
-
-    my @groups;
-
-    # Some of this stuff needs to go into Bugzilla::User
-
-    # For every group, we need to know if there is ANY bug_group_map
-    # record putting the current bug in that group and if there is ANY
-    # user_group_map record putting the user in that group.
-    # The LEFT JOINs are checking for record existence.
-    #
-    &::SendSQL("SELECT DISTINCT groups.id, name, description," .
-             " bug_group_map.group_id IS NOT NULL," .
-             " user_group_map.group_id IS NOT NULL," .
-             " isactive, membercontrol, othercontrol" .
-             " FROM groups" . 
-             " LEFT JOIN bug_group_map" .
-             " ON bug_group_map.group_id = groups.id" .
-             " AND bug_id = $self->{'bug_id'}" .
-             " LEFT JOIN user_group_map" .
-             " ON user_group_map.group_id = groups.id" .
-             " AND user_id = $::userid" .
-             " AND NOT isbless" .
-             " LEFT JOIN group_control_map" .
-             " ON group_control_map.group_id = groups.id" .
-             " AND group_control_map.product_id = " . $self->{'product_id'} .
-             " WHERE isbuggroup");
-
-    while (&::MoreSQLData()) {
-        my ($groupid, $name, $description, $ison, $ingroup, $isactive,
-            $membercontrol, $othercontrol) = &::FetchSQLData();
-
-        $membercontrol ||= 0;
-
-        # For product groups, we only want to use the group if either
-        # (1) The bit is set and not required, or
-        # (2) The group is Shown or Default for members and
-        #     the user is a member of the group.
-        if ($ison ||
-            ($isactive && $ingroup
-                       && (($membercontrol == CONTROLMAPDEFAULT)
-                           || ($membercontrol == CONTROLMAPSHOWN))
-            ))
-        {
-            my $ismandatory = $isactive
-              && ($membercontrol == CONTROLMAPMANDATORY);
-
-            push (@groups, { "bit" => $groupid,
-                             "name" => $name,
-                             "ison" => $ison,
-                             "ingroup" => $ingroup,
-                             "mandatory" => $ismandatory,
-                             "description" => $description });
-        }
-    }
-
-    $self->{'groups'} = \@groups;
-
-    return $self->{'groups'};
-}
-
-sub user {
-    my $self = shift;
-    return $self->{'user'} if exists $self->{'user'};
-
-    $self->{'user'} = {};
-
-    my $movers = Param("movers");
-    $movers =~ s/\s?,\s?/|/g;
-    $movers =~ s/@/\@/g;
-    $self->{'user'}->{'canmove'} = Param("move-enabled") 
-      && (defined $::COOKIE{"Bugzilla_login"}) 
-        && ($::COOKIE{"Bugzilla_login"} =~ /$movers/);
-
-    # In the below, if the person hasn't logged in ($::userid == 0), then
-    # we treat them as if they can do anything.  That's because we don't
-    # know why they haven't logged in; it may just be because they don't
-    # use cookies.  Display everything as if they have all the permissions
-    # in the world; their permissions will get checked when they log in
-    # and actually try to make the change.
-    $self->{'user'}->{'canedit'} = $::userid == 0
-                                   || $::userid == $self->{'reporter'}{'id'}
-                                   || (Param('useqacontact') && $self->{'qa_contact'} && $::userid == $self->{'qa_contact'}{'id'})
-                                   || $::userid == $self->{'assigned_to'}{'id'}
-                                   || &::UserInGroup("editbugs");
-    $self->{'user'}->{'canconfirm'} = $::userid == 0
-                                   || ($self->{'qa_contact'} && $::userid == $self->{'qa_contact'}{'id'})
-                                   || $::userid == $self->{'assigned_to'}{'id'}
-                                   || &::UserInGroup("editbugs")
-                                   || &::UserInGroup("canconfirm");
-
-    return $self->{'user'};
-}
-
-sub choices {
-    my $self = shift;
-    return $self->{'choices'} if exists $self->{'choices'};
-
-    &::GetVersionTable();
-
-    $self->{'choices'} = {};
-
-    # Fiddle the product list.
-    my $seen_curr_prod;
-    my @prodlist;
-
-    foreach my $product (@::enterable_products) {
-        if ($product eq $self->{'product'}) {
-            # if it's the product the bug is already in, it's ALWAYS in
-            # the popup, period, whether the user can see it or not, and
-            # regardless of the disallownew setting.
-            $seen_curr_prod = 1;
-            push(@prodlist, $product);
-            next;
-        }
-
-        if (!&::CanEnterProduct($product)) {
-            # If we're using bug groups to restrict entry on products, and
-            # this product has an entry group, and the user is not in that
-            # group, we don't want to include that product in this list.
-            next;
-        }
-
-        push(@prodlist, $product);
-    }
-
-    # The current product is part of the popup, even if new bugs are no longer
-    # allowed for that product
-    if (!$seen_curr_prod) {
-        push (@prodlist, $self->{'product'});
-        @prodlist = sort @prodlist;
-    }
-
-    # Hack - this array contains "". See bug 106589.
-    my @res = grep ($_, @::settable_resolution);
-
-    $self->{'choices'} =
-      {
-       'product' => \@prodlist,
-       'rep_platform' => \@::legal_platform,
-       'priority' => \@::legal_priority,
-       'bug_severity' => \@::legal_severity,
-       'op_sys' => \@::legal_opsys,
-       'bug_status' => \@::legal_bugs_status,
-       'resolution' => \@res,
-       'component' => $::components{$self->{product}},
-       'version' => $::versions{$self->{product}},
-       'target_milestone' => $::target_milestone{$self->{product}},
-      };
-
-    return $self->{'choices'};
-}
-
-sub EmitDependList {
-  my ($myfield, $targetfield, $bug_id) = (@_);
-  my @list;
-  &::SendSQL("select dependencies.$targetfield, bugs.bug_status
-           from dependencies, bugs
-           where dependencies.$myfield = $bug_id
-             and bugs.bug_id = dependencies.$targetfield
-           order by dependencies.$targetfield");
-  while (&::MoreSQLData()) {
-    my ($i, $stat) = (&::FetchSQLData());
-    push @list, $i;
-  }
-  return @list;
-}
-
-sub AUTOLOAD {
-  use vars qw($AUTOLOAD);
-  my $attr = $AUTOLOAD;
-
-  $attr =~ s/.*:://;
-  return unless $attr=~ /[^A-Z]/;
-  confess ("invalid bug attribute $attr") unless $ok_field{$attr};
-
-  no strict 'refs';
-  *$AUTOLOAD = sub {
-      my $self = shift;
-      if (defined $self->{$attr}) {
-          return $self->{$attr};
-      } else {
-          return '';
-      }
-  };
-
-  goto &$AUTOLOAD;
-}
-
-1;
index 84979d3eaf82470770a4ff566820ec72455bd0aa..9f0467bb7193e35c379ca5f3d7fccc528e41009b 100644 (file)
@@ -26,7 +26,7 @@
 
 use strict;
 
-package Attachment;
+package Bugzilla::Attachment;
 
 # This module requires that its caller have said "require CGI.pl" to import
 # relevant functions from that script and its companion globals.pl.
index 94bd628e2498d4f8b124724e594fc6c43925742b..b1c2ea54d3117af468e576027d83e408108442bf 100755 (executable)
 # Contributor(s): Dawn Endico    <endico@mozilla.org>
 #                 Terry Weissman <terry@mozilla.org>
 #                 Chris Yeh      <cyeh@bluemartini.com>
+#                 Bradley Baetz  <bbaetz@acm.org>
+#                 Dave Miller    <justdave@bugzilla.org>
 
-package Bug;
+package Bugzilla::Bug;
 
 use strict;
 
-use RelationSet;
+use Bugzilla::RelationSet;
 use vars qw($unconfirmedstate $legal_keywords @legal_platform
             @legal_priority @legal_severity @legal_opsys @legal_bugs_status
             @settable_resolution %components %versions %target_milestone
@@ -33,7 +35,7 @@ use vars qw($unconfirmedstate $legal_keywords @legal_platform
 
 use CGI::Carp qw(fatalsToBrowser);
 
-use Attachment;
+use Bugzilla::Attachment;
 use Bugzilla::Config;
 use Bugzilla::Constants;
 use Bugzilla::Flag;
@@ -190,7 +192,7 @@ sub initBug  {
       $self->{'qa_contact'} = undef;
   }
 
-  my $ccSet = new RelationSet;
+  my $ccSet = new Bugzilla::RelationSet;
   $ccSet->mergeFromDB("select who from cc where bug_id=$bug_id");
   my @cc = $ccSet->toArrayOfStrings();
   if (@cc) {
@@ -212,7 +214,7 @@ sub initBug  {
     }
   }
 
-  $self->{'attachments'} = Attachment::query($self->{bug_id});
+  $self->{'attachments'} = Bugzilla::Attachment::query($self->{bug_id});
 
   # The types of flags that can be set on this bug.
   # If none, no UI for setting flags will be displayed.
index 059667a08b0d4f13a28e15fe160b95c766c7fe5b..fad3ad5d85225db236996e7b65001a87610831a2 100644 (file)
@@ -30,7 +30,7 @@ use strict;
 
 package Bugzilla::BugMail;
 
-use RelationSet;
+use Bugzilla::RelationSet;
 
 use Bugzilla::Config qw(:DEFAULT $datadir);
 use Bugzilla::Util;
@@ -166,7 +166,7 @@ sub ProcessOneBug($) {
     trick_taint($start);
     trick_taint($end);
 
-    my $ccSet = new RelationSet();
+    my $ccSet = new Bugzilla::RelationSet();
     $ccSet->mergeFromDB("SELECT who FROM cc WHERE bug_id = $id");
     $values{'cc'} = $ccSet->toString();
     
index 2052f950772d75c945724ad095958aa7c065f40e..8c9a4befe2bc5bdc2e2af4595df3ab58863c6074 100644 (file)
@@ -34,8 +34,7 @@ use Bugzilla::User;
 use Bugzilla::Config;
 use Bugzilla::Util;
 use Bugzilla::Error;
-
-use Attachment;
+use Bugzilla::Attachment;
 
 use constant TABLES_ALREADY_LOCKED => 1;
 
@@ -529,7 +528,7 @@ sub GetTarget {
     my $target = { 'exists' => 0 };
 
     if ($attach_id) {
-        $target->{'attachment'} = new Attachment($attach_id);
+        $target->{'attachment'} = new Bugzilla::Attachment($attach_id);
         if ($bug_id) {
             # Make sure the bug and attachment IDs correspond to each other
             # (i.e. this is the bug to which this attachment is attached).
index f2f822fc4a20759125518d1b76b02c5229939f96..62874635229cab1ae8aa425754a7f8e27b4df2f9 100644 (file)
 
 use strict;
 
-# Everything that uses RelationSet should already have globals.pl loaded
-# so we don't want to load it here.  Doing so causes a loop in Perl because
-# globals.pl turns around and does a 'use RelationSet'
+# XXX - mod_perl
+# Everything that uses Bugzilla::RelationSet should already have globals.pl
+# loaded so we don't want to load it here.  Doing so causes a loop in Perl
+# because globals.pl turns around and does a 'use Bugzilla::RelationSet'
 # See http://bugzilla.mozilla.org/show_bug.cgi?id=72862
-#require "globals.pl";
+#require "../globals.pl";
 
-package RelationSet;
+package Bugzilla::RelationSet;
 
-# create a new empty RelationSet
+# create a new empty Bugzilla::RelationSet
 #
 sub new {
   my $type = shift();
@@ -60,7 +61,7 @@ sub new {
     confess("invalid number of arguments");
   }
 
-  # bless as a RelationSet
+  # bless as a Bugzilla::RelationSet
   #
   return $self;
 }
@@ -81,7 +82,7 @@ sub generateSqlDeltas {
   my ( $self, # instance ptr to set representing the existing state
        $endState, # instance ptr to set representing the desired state
        $table, # table where these relations are kept
-       $invariantName, # column held const for a RelationSet (often "bug_id")
+       $invariantName, # column held const for a Bugzilla::RelationSet (often "bug_id")
        $invariantValue, # what to hold the above column constant at
        $columnName # the column which varies (often a userid)
      ) = @_;
index f7be40ab355b3d5e0b295a7f1f0aceb457842224..20ce480501356c4fd0bbaff5d5e9c0fea9a52d21 100644 (file)
@@ -27,7 +27,7 @@
 use strict;
 
 # Bundle the functions in this file together into the "Token" package.
-package Token;
+package Bugzilla::Token;
 
 use Bugzilla::Config;
 use Bugzilla::Error;
diff --git a/RelationSet.pm b/RelationSet.pm
deleted file mode 100644 (file)
index f2f822f..0000000
+++ /dev/null
@@ -1,266 +0,0 @@
-# 
-# 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.
-# 
-# The Original Code is the Bugzilla Bug Tracking System.
-# 
-# The Initial Developer of the Original Code is Netscape Communications
-# Corporation. Portions created by Netscape are
-# Copyright (C) 2000 Netscape Communications Corporation.  All
-# Rights Reserved.
-# 
-# Contributor(s): Dan Mosedale <dmose@mozilla.org>
-#                 Terry Weissman <terry@mozilla.org>
-#                 Dave Miller <justdave@syndicomm.com>
-
-# This object models a set of relations between one item and a group
-# of other items.  An example is the set of relations between one bug
-# and the users CCed on that bug.  Currently, the relation objects are
-# expected to be bugzilla userids.  However, this could and perhaps
-# should be generalized to work with non userid objects, such as
-# keywords associated with a bug.  That shouldn't be hard to do; it
-# might involve turning this into a virtual base class, and having
-# UserSet and KeywordSet types that inherit from it.
-
-use strict;
-
-# Everything that uses RelationSet should already have globals.pl loaded
-# so we don't want to load it here.  Doing so causes a loop in Perl because
-# globals.pl turns around and does a 'use RelationSet'
-# See http://bugzilla.mozilla.org/show_bug.cgi?id=72862
-#require "globals.pl";
-
-package RelationSet;
-
-# create a new empty RelationSet
-#
-sub new {
-  my $type = shift();
-
-  # create a ref to an empty hash and bless it
-  #
-  my $self = {};
-  bless $self, $type;
-
-  # construct from a comma-delimited string
-  # 
-  if ($#_ == 0) {
-    $self->mergeFromString($_[0]);
-  }
-  # unless this was a constructor for an empty list, somebody screwed up.
-  #
-  elsif ( $#_ != -1 ) {
-    confess("invalid number of arguments");
-  }
-
-  # bless as a RelationSet
-  #
-  return $self;
-}
-
-# Assumes that the set of relations "FROM $table WHERE $constantSql and 
-# $column = $value" is currently represented by $self, and this set should
-# be updated to look like $other.  
-#
-# Returns an array of two strings, one INSERT and one DELETE, which will
-# make this change.  Either or both strings may be the empty string,
-# meaning that no INSERT or DELETE or both (respectively) need to be done.
-#
-# THE CALLER IS RESPONSIBLE FOR ANY DESIRED LOCKING AND/OR CONSISTENCY 
-# CHECKS (not to mention doing the SendSQL() calls).
-#
-sub generateSqlDeltas {
-  ($#_ == 5) || confess("invalid number of arguments");
-  my ( $self, # instance ptr to set representing the existing state
-       $endState, # instance ptr to set representing the desired state
-       $table, # table where these relations are kept
-       $invariantName, # column held const for a RelationSet (often "bug_id")
-       $invariantValue, # what to hold the above column constant at
-       $columnName # the column which varies (often a userid)
-     ) = @_;
-
-  # construct the insert list by finding relations which exist in the
-  # end state but not the current state.
-  #
-  my @endStateRelations = keys(%$endState);
-  my @insertList = ();
-  foreach ( @endStateRelations ) {
-    push ( @insertList, $_ ) if ( ! exists $$self{"$_"} );
-  }
-
-  # we've built the list.  If it's non-null, add required sql chrome.
-  #
-  my $sqlInsert="";
-  if ( $#insertList > -1 ) {
-    $sqlInsert = "INSERT INTO $table ($invariantName, $columnName) VALUES " .
-      join (",", 
-            map ( "($invariantValue, $_)" , @insertList ) 
-           );
-  }
-     
-  # construct the delete list by seeing which relations exist in the
-  # current state but not the end state
-  #
-  my @selfRelations = keys(%$self);
-  my @deleteList = ();
-  foreach ( @selfRelations ) {
-    push (@deleteList, $_) if ( ! exists $$endState{"$_"} );
-  }
-
-  # we've built the list.  if it's non-empty, add required sql chrome.
-  #
-  my $sqlDelete = "";
-  if ( $#deleteList > -1 ) {
-    $sqlDelete = "DELETE FROM $table WHERE $invariantName = $invariantValue " .
-      "AND $columnName IN ( " . join (",", @deleteList) . " )";
-  } 
-
-  return ($sqlInsert, $sqlDelete);
-}
-
-# compare the current object with another.  
-#
-sub isEqual {
-  ($#_ == 1) || confess("invalid number of arguments");
-  my $self = shift();
-  my $other = shift();
-
-  # get arrays of the keys for faster processing
-  #
-  my @selfRelations = keys(%$self);
-  my @otherRelations = keys(%$other);
-  # make sure the arrays are the same size
-  #
-  return 0 if ( $#selfRelations != $#otherRelations );
-
-  # bail out if any of the elements are different
-  #
-  foreach my $relation ( @selfRelations ) {
-    return 0 if ( !exists $$other{$relation})
-  }
-
-  # we made it!
-  #
-  return 1;
-
-}
-
-# merge the results of a SQL command into this set
-#
-sub mergeFromDB {
-  ( $#_ == 1 ) || confess("invalid number of arguments");
-  my $self = shift();
-
-  &::SendSQL(shift());
-  while (my @row = &::FetchSQLData()) {
-    $$self{$row[0]} = 1;
-  }
-
-  return;
-}
-
-# merge a set in string form into this set
-#
-sub mergeFromString {
-  ($#_ == 1) || confess("invalid number of arguments");
-  my $self = shift();
-
-  # do the merge
-  #
-  foreach my $person (split(/[ ,]/, shift())) {
-    if ($person ne "") {
-      $$self{&::DBNameToIdAndCheck($person)} = 1;
-    }
-  }
-}
-
-# remove a set in string form from this set
-#
-sub removeItemsInString {
-  ($#_ == 1) || confess("invalid number of arguments");
-  my $self = shift();
-
-  # do the merge
-  #
-  foreach my $person (split(/[ ,]/, shift())) {
-    if ($person ne "") {
-      my $dbid = &::DBNameToIdAndCheck($person);
-      if (exists $$self{$dbid}) {
-        delete $$self{$dbid};
-      }
-    }
-  }
-}
-
-# remove a set in array form from this set
-#
-sub removeItemsInArray {
-  ($#_ > 0) || confess("invalid number of arguments");
-  my $self = shift();
-
-  # do the merge
-  #
-  while (my $person = shift()) {
-    if ($person ne "") {
-      my $dbid = &::DBNameToIdAndCheck($person);
-      if (exists $$self{$dbid}) {
-        delete $$self{$dbid};
-      }
-    }
-  }
-}
-
-# return the number of elements in this set
-#
-sub size {
-  my $self = shift();
-
-  my @k = keys(%$self);
-  return $#k++;
-}
-
-# return this set in array form
-#
-sub toArray {
-  my $self= shift();
-
-  return keys(%$self);
-}
-
-# return this set as an array of strings
-#
-sub toArrayOfStrings {
-  ($#_ == 0) || confess("invalid number of arguments");
-  my $self = shift();
-
-  my @result = ();
-  foreach my $i ( keys %$self ) {
-    push @result, &::DBID_to_name($i);
-  }
-
-  return sort { lc($a) cmp lc($b) } @result;
-}  
-
-# return this set in string form (comma-separated and sorted)
-#
-sub toString {
-  ($#_ == 0) || confess("invalid number of arguments");
-  my $self = shift();
-
-  my @result = ();
-  foreach my $i ( keys %$self ) {
-    push @result, &::DBID_to_name($i);
-  }
-
-  return join(',', sort(@result));
-}  
-
-1;
diff --git a/Token.pm b/Token.pm
deleted file mode 100644 (file)
index f7be40a..0000000
--- a/Token.pm
+++ /dev/null
@@ -1,268 +0,0 @@
-# -*- Mode: perl; indent-tabs-mode: nil -*-
-#
-# 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.
-#
-# The Original Code is the Bugzilla Bug Tracking System.
-#
-# The Initial Developer of the Original Code is Netscape Communications
-# Corporation. Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All
-# Rights Reserved.
-#
-# Contributor(s):    Myk Melez <myk@mozilla.org>
-
-################################################################################
-# Module Initialization
-################################################################################
-
-# Make it harder for us to do dangerous things in Perl.
-use strict;
-
-# Bundle the functions in this file together into the "Token" package.
-package Token;
-
-use Bugzilla::Config;
-use Bugzilla::Error;
-
-use Date::Format;
-
-# This module requires that its caller have said "require CGI.pl" to import
-# relevant functions from that script and its companion globals.pl.
-
-################################################################################
-# Constants
-################################################################################
-
-# The maximum number of days a token will remain valid.
-my $maxtokenage = 3;
-
-################################################################################
-# Functions
-################################################################################
-
-sub IssueEmailChangeToken {
-    my ($userid, $old_email, $new_email) = @_;
-
-    my $token_ts = time();
-    my $issuedate = time2str("%Y-%m-%d %H:%M", $token_ts);
-
-    # Generate a unique token and insert it into the tokens table.
-    # We have to lock the tokens table before generating the token, 
-    # since the database must be queried for token uniqueness.
-    &::SendSQL("LOCK TABLES tokens WRITE");
-    my $token = GenerateUniqueToken();
-    my $quotedtoken = &::SqlQuote($token);
-    my $quoted_emails = &::SqlQuote($old_email . ":" . $new_email);
-    &::SendSQL("INSERT INTO tokens ( userid , issuedate , token , 
-                                     tokentype , eventdata )
-                VALUES             ( $userid , '$issuedate' , $quotedtoken , 
-                                     'emailold' , $quoted_emails )");
-    my $newtoken = GenerateUniqueToken();
-    $quotedtoken = &::SqlQuote($newtoken);
-    &::SendSQL("INSERT INTO tokens ( userid , issuedate , token , 
-                                     tokentype , eventdata )
-                VALUES             ( $userid , '$issuedate' , $quotedtoken , 
-                                     'emailnew' , $quoted_emails )");
-    &::SendSQL("UNLOCK TABLES");
-
-    # Mail the user the token along with instructions for using it.
-
-    my $template = $::template;
-    my $vars = $::vars;
-
-    $vars->{'oldemailaddress'} = $old_email . Param('emailsuffix');
-    $vars->{'newemailaddress'} = $new_email . Param('emailsuffix');
-    
-    $vars->{'max_token_age'} = $maxtokenage;
-    $vars->{'token_ts'} = $token_ts;
-
-    $vars->{'token'} = $token;
-    $vars->{'emailaddress'} = $old_email . Param('emailsuffix');
-
-    my $message;
-    $template->process("account/email/change-old.txt.tmpl", $vars, \$message)
-      || ThrowTemplateError($template->error());
-
-    open SENDMAIL, "|/usr/lib/sendmail -t -i";
-    print SENDMAIL $message;
-    close SENDMAIL;
-
-    $vars->{'token'} = $newtoken;
-    $vars->{'emailaddress'} = $new_email . Param('emailsuffix');
-
-    $message = "";
-    $template->process("account/email/change-new.txt.tmpl", $vars, \$message)
-      || ThrowTemplateError($template->error());
-
-    open SENDMAIL, "|/usr/lib/sendmail -t -i";
-    print SENDMAIL $message;
-    close SENDMAIL;
-
-}
-
-sub IssuePasswordToken {
-    # Generates a random token, adds it to the tokens table, and sends it
-    # to the user with instructions for using it to change their password.
-
-    my ($loginname) = @_;
-
-    # Retrieve the user's ID from the database.
-    my $quotedloginname = &::SqlQuote($loginname);
-    &::SendSQL("SELECT userid FROM profiles WHERE login_name = $quotedloginname");
-    my ($userid) = &::FetchSQLData();
-
-    my $token_ts = time();
-    my $issuedate = time2str("%Y-%m-%d %H:%M", $token_ts);
-
-    # Generate a unique token and insert it into the tokens table.
-    # We have to lock the tokens table before generating the token, 
-    # since the database must be queried for token uniqueness.
-    &::SendSQL("LOCK TABLES tokens WRITE");
-    my $token = GenerateUniqueToken();
-    my $quotedtoken = &::SqlQuote($token);
-    my $quotedipaddr = &::SqlQuote($::ENV{'REMOTE_ADDR'});
-    &::SendSQL("INSERT INTO tokens ( userid , issuedate , token , tokentype , eventdata )
-                VALUES      ( $userid , '$issuedate' , $quotedtoken , 'password' , $quotedipaddr )");
-    &::SendSQL("UNLOCK TABLES");
-
-    # Mail the user the token along with instructions for using it.
-    
-    my $template = $::template;
-    my $vars = $::vars;
-
-    $vars->{'token'} = $token;
-    $vars->{'emailaddress'} = $loginname . Param('emailsuffix');
-
-    $vars->{'max_token_age'} = $maxtokenage;
-    $vars->{'token_ts'} = $token_ts;
-
-    my $message = "";
-    $template->process("account/password/forgotten-password.txt.tmpl", 
-                                                               $vars, \$message)
-      || ThrowTemplateError($template->error());
-
-    open SENDMAIL, "|/usr/lib/sendmail -t -i";
-    print SENDMAIL $message;
-    close SENDMAIL;
-
-}
-
-
-sub CleanTokenTable {
-    &::SendSQL("LOCK TABLES tokens WRITE");
-    &::SendSQL("DELETE FROM tokens 
-                WHERE TO_DAYS(NOW()) - TO_DAYS(issuedate) >= " . $maxtokenage);
-    &::SendSQL("UNLOCK TABLES");
-}
-
-
-sub GenerateUniqueToken {
-    # Generates a unique random token.  Uses &GenerateRandomPassword 
-    # for the tokens themselves and checks uniqueness by searching for
-    # the token in the "tokens" table.  Gives up if it can't come up
-    # with a token after about one hundred tries.
-
-    my $token;
-    my $duplicate = 1;
-    my $tries = 0;
-    while ($duplicate) {
-
-        ++$tries;
-        if ($tries > 100) {
-            ThrowCodeError("token_generation_error");
-        }
-
-        $token = &::GenerateRandomPassword();
-        &::SendSQL("SELECT userid FROM tokens WHERE token = " . &::SqlQuote($token));
-        $duplicate = &::FetchSQLData();
-    }
-
-    return $token;
-
-}
-
-
-sub Cancel {
-    # Cancels a previously issued token and notifies the system administrator.
-    # This should only happen when the user accidentally makes a token request
-    # or when a malicious hacker makes a token request on behalf of a user.
-    
-    my ($token, $cancelaction) = @_;
-
-    # Quote the token for inclusion in SQL statements.
-    my $quotedtoken = &::SqlQuote($token);
-    
-    # Get information about the token being cancelled.
-    &::SendSQL("SELECT  issuedate , tokentype , eventdata , login_name , realname
-                FROM    tokens, profiles 
-                WHERE   tokens.userid = profiles.userid
-                AND     token = $quotedtoken");
-    my ($issuedate, $tokentype, $eventdata, $loginname, $realname) = &::FetchSQLData();
-
-    # Get the email address of the Bugzilla maintainer.
-    my $maintainer = Param('maintainer');
-
-    my $template = $::template;
-    my $vars = $::vars;
-
-    $vars->{'emailaddress'} = $loginname . Param('emailsuffix');
-    $vars->{'maintainer'} = $maintainer;
-    $vars->{'remoteaddress'} = $::ENV{'REMOTE_ADDR'};
-    $vars->{'token'} = $token;
-    $vars->{'tokentype'} = $tokentype;
-    $vars->{'issuedate'} = $issuedate;
-    $vars->{'eventdata'} = $eventdata;
-    $vars->{'cancelaction'} = $cancelaction;
-
-    # Notify the user via email about the cancellation.
-
-    my $message;
-    $template->process("account/cancel-token.txt.tmpl", $vars, \$message)
-      || ThrowTemplateError($template->error());
-
-    open SENDMAIL, "|/usr/lib/sendmail -t -i";
-    print SENDMAIL $message;
-    close SENDMAIL;
-
-    # Delete the token from the database.
-    &::SendSQL("LOCK TABLES tokens WRITE");
-    &::SendSQL("DELETE FROM tokens WHERE token = $quotedtoken");
-    &::SendSQL("UNLOCK TABLES");
-}
-
-sub DeletePasswordTokens {
-    my ($userid, $reason) = @_;
-
-    my $dbh = Bugzilla->dbh;
-    my $sth = $dbh->prepare("SELECT token " .
-                            "FROM tokens " .
-                            "WHERE userid=? AND tokentype='password'");
-    $sth->execute($userid);
-    while (my $token = $sth->fetchrow_array) {
-        Token::Cancel($token, $reason);
-    }
-}
-
-sub HasEmailChangeToken {
-    # Returns an email change token if the user has one. 
-    
-    my ($userid) = @_;
-    
-    &::SendSQL("SELECT token FROM tokens WHERE userid = $userid " . 
-               "AND (tokentype = 'emailnew' OR tokentype = 'emailold') " . 
-               "LIMIT 1");
-    my ($token) = &::FetchSQLData();
-    
-    return $token;
-}
-
-
-1;
index c14339f9a2a4098194b48d756d5b4c1bebf5eafb..e2daba47ee2546ae823db667e390d8f6f16d4055 100755 (executable)
@@ -1348,7 +1348,6 @@ if ($^O !~ /MSWin32/i) {
         fixPerms('css', $<, $webservergid, 027, 1);
         fixPerms('js', $<, $webservergid, 027, 1);
         chmod 0644, 'globals.pl';
-        chmod 0644, 'RelationSet.pm';
         
         # Don't use fixPerms here, because it won't change perms on the directory
         # unless its using recursion
index cdb61cd66bb22028a202c7e8eb9f6cfd635c6702..399482caa95bd0ecd5f36ca4ce60cb970a92f6e5 100644 (file)
@@ -74,7 +74,7 @@ use DBI;
 
 use Date::Format;               # For time2str().
 use Date::Parse;               # For str2time().
-use RelationSet;
+use Bugzilla::RelationSet;
 
 # Use standard Perl libraries for cross-platform file/directory manipulation.
 use File::Spec;
@@ -354,8 +354,8 @@ sub GetVersionTable {
         $mtime = 0;
     }
     if (time() - $mtime > 3600) {
-        use Token;
-        Token::CleanTokenTable() if Bugzilla->dbwritesallowed;
+        use Bugzilla::Token;
+        Bugzilla::Token::CleanTokenTable() if Bugzilla->dbwritesallowed;
         GenerateVersionTable();
     }
     require "$datadir/versioncache";
diff --git a/move.pl b/move.pl
index d08830b2bdcd2faddd09e6712ef015cb2b7b261a..b4d47a40fc35c8aa734c6b5a53c586deba862ed6 100755 (executable)
--- a/move.pl
+++ b/move.pl
@@ -30,8 +30,8 @@ require "CGI.pl";
 
 use vars qw($template $userid %COOKIE);
 
-use Bug;
 use Bugzilla;
+use Bugzilla::Bug;
 use Bugzilla::Config qw(:DEFAULT $datadir);
 use Bugzilla::BugMail;
 
@@ -106,7 +106,7 @@ my @bugs;
 
 print "<P>\n";
 foreach my $id (split(/:/, $::FORM{'buglist'})) {
-  my $bug = new Bug($id, $::userid);
+  my $bug = new Bugzilla::Bug($id, $::userid);
   push @bugs, $bug;
   if (!$bug->error) {
     my $exporterid = DBNameToIdAndCheck($exporter);
@@ -155,7 +155,7 @@ $from =~ s/@/\@/;
 $msg .= "From: Bugzilla <" . $from . ">\n";
 $msg .= "Subject: Moving bug(s) $buglist\n\n";
 
-my @fieldlist = (Bug::fields(), 'group', 'long_desc', 'attachment');
+my @fieldlist = (Bugzilla::Bug::fields(), 'group', 'long_desc', 'attachment');
 my %displayfields;
 foreach (@fieldlist) {
     $displayfields{$_} = 1;
index dbc102d3eeff5272168d4e88100ef990329f0b63..d6fda9b3bfc4749053de34e4d29d7fc69ea2cfaf 100755 (executable)
@@ -30,7 +30,7 @@ use Bugzilla;
 use Bugzilla::Constants;
 require "CGI.pl";
 
-use Bug;
+use Bugzilla::Bug;
 
 use Bugzilla::User;
 
@@ -478,7 +478,7 @@ if (defined $::FORM{'qa_contact'}) {
 }
 
 $vars->{'id'} = $id;
-my $bug = new Bug($id, $::userid);
+my $bug = new Bugzilla::Bug($id, $::userid);
 $vars->{'bug'} = $bug;
 
 ThrowCodeError("bug_error", { bug => $bug }) if $bug->error;
index d81f866e581ffbbc1fb5b88e603e7cc31d7a4a66..774883a9c5b2c252cef60fdb5fdf3943b1c62b67 100755 (executable)
@@ -35,10 +35,9 @@ use Bugzilla;
 use Bugzilla::Constants;
 require "CGI.pl";
 
-use Bug;
+use Bugzilla::Bug;
 use Bugzilla::User;
-
-use RelationSet;
+use Bugzilla::RelationSet;
 
 # Use the Flag module to modify flag data if the user set flags.
 use Bugzilla::Flag;
@@ -330,8 +329,8 @@ my $qacontactid;
 # CheckCanChangeField() defines what users are allowed to change what bugs. You
 # can add code here for site-specific policy changes, according to the 
 # instructions given in the Bugzilla Guide and below. Note that you may also
-# have to update the Bug::user() function to give people access to the options
-# that they are permitted to change.
+# have to update the Bugzilla::Bug::user() function to give people access to the
+# options that they are permitted to change.
 #
 # CheckCanChangeField() should return true if the user is allowed to change this
 # field, and false if they are not.
@@ -1752,7 +1751,7 @@ foreach my $id (@idlist) {
 # now show the next bug
 if ($next_bug) {
     if (detaint_natural($next_bug) && CanSeeBug($next_bug, $::userid)) {
-        my $bug = new Bug($next_bug, $::userid);
+        my $bug = new Bugzilla::Bug($next_bug, $::userid);
         ThrowCodeError("bug_error", { bug => $bug }) if $bug->error;
 
         # next.html.tmpl includes edit.html.tmpl, and therefore we
index c7a780404895e57a6df2884746e509ed5b637c77..6d971bbfcc712254d8fa9dddd1df4432a945f53b 100755 (executable)
@@ -32,7 +32,7 @@ ConnectToDatabase();
 
 use vars qw($template $vars $userid);
 
-use Bug;
+use Bugzilla::Bug;
 
 my $cgi = Bugzilla->cgi;
 
@@ -65,10 +65,10 @@ if ($single) {
     # Its a bit silly to do the validation twice - that functionality should
     # probably move into Bug.pm at some point
     ValidateBugID($id);
-    push @bugs, new Bug($id, $userid);
+    push @bugs, new Bugzilla::Bug($id, $userid);
 } else {
     foreach my $id ($cgi->param('id')) {
-        my $bug = new Bug($id, $userid);
+        my $bug = new Bugzilla::Bug($id, $userid);
         push @bugs, $bug;
     }
 }
@@ -93,7 +93,7 @@ $vars->{'bug_list'} = \@bug_list;
 # If no explicit list is defined, we show all fields. We then exclude any
 # on the exclusion list. This is so you can say e.g. "Everything except 
 # attachments" without listing almost all the fields.
-my @fieldlist = (Bug::fields(), 'group', 'long_desc', 'attachment');
+my @fieldlist = (Bugzilla::Bug::fields(), 'group', 'long_desc', 'attachment');
 my %displayfields;
 
 if ($cgi->param("field")) {
index b02a932d7264068f46b338e698b676053f9ed31c..f9188900922c03ffd5a45bb59902d055446192dc 100755 (executable)
--- a/token.cgi
+++ b/token.cgi
@@ -41,9 +41,9 @@ require "CGI.pl";
 ConnectToDatabase();
 quietly_check_login('permit_anonymous');
 
-# Use the "Token" module that contains functions for doing various
+# Use the "Bugzilla::Token" module that contains functions for doing various
 # token-related tasks.
-use Token;
+use Bugzilla::Token;
 
 use Bugzilla::User;
 
@@ -72,7 +72,7 @@ if ($cgi->param('t')) {
   }
 
 
-  Token::CleanTokenTable();
+  Bugzilla::Token::CleanTokenTable();
 
   # Make sure the token exists in the database.
   SendSQL( "SELECT tokentype FROM tokens WHERE token = $::quotedtoken" );
@@ -80,17 +80,17 @@ if ($cgi->param('t')) {
 
   # Make sure the token is the correct type for the action being taken.
   if ( grep($::action eq $_ , qw(cfmpw cxlpw chgpw)) && $tokentype ne 'password' ) {
-    Token::Cancel($::token, "wrong_token_for_changing_passwd");
+    Bugzilla::Token::Cancel($::token, "wrong_token_for_changing_passwd");
     ThrowUserError("wrong_token_for_changing_passwd");
   }
   if ( ($::action eq 'cxlem') 
       && (($tokentype ne 'emailold') && ($tokentype ne 'emailnew')) ) {
-    Token::Cancel($::token, "wrong_token_for_cancelling_email_change");
+    Bugzilla::Token::Cancel($::token, "wrong_token_for_cancelling_email_change");
     ThrowUserError("wrong_token_for_cancelling_email_change");
   }
   if ( grep($::action eq $_ , qw(cfmem chgem)) 
       && ($tokentype ne 'emailnew') ) {
-    Token::Cancel($::token, "wrong_token_for_confirming_email_change");
+    Bugzilla::Token::Cancel($::token, "wrong_token_for_confirming_email_change");
     ThrowUserError("wrong_token_for_confirming_email_change");
   }
 }
@@ -176,7 +176,7 @@ sub confirmChangePassword {
 
 sub cancelChangePassword {    
     $vars->{'message'} = "password_change_canceled";
-    Token::Cancel($::token, $vars->{'message'});
+    Bugzilla::Token::Cancel($::token, $vars->{'message'});
 
     print $cgi->header();
     $template->process("global/message.html.tmpl", $vars)
@@ -308,7 +308,7 @@ sub cancelChangeEmail {
 
     $vars->{'old_email'} = $old_email;
     $vars->{'new_email'} = $new_email;
-    Token::Cancel($::token, $vars->{'message'});
+    Bugzilla::Token::Cancel($::token, $vars->{'message'});
 
     SendSQL("LOCK TABLES tokens WRITE");
     SendSQL("DELETE FROM tokens 
index f2b9445edc6543b4f24697d451b4b24a8649a8d4..5466c80cc4e1b625fee3dc2b1dc7e47ff715e66d 100755 (executable)
@@ -29,7 +29,7 @@ use Bugzilla;
 
 require "CGI.pl";
 
-use RelationSet;
+use Bugzilla::RelationSet;
 
 # Use global template variables.
 use vars qw($template $vars $userid);
@@ -121,9 +121,9 @@ sub SaveAccount {
             $cgi->param('Bugzilla_password') 
               || ThrowCodeError("old_password_required");
 
-            use Token;
+            use Bugzilla::Token;
             # Block multiple email changes for the same user.
-            if (Token::HasEmailChangeToken($userid)) {
+            if (Bugzilla::Token::HasEmailChangeToken($userid)) {
                 ThrowUserError("email_change_in_progress");
             }
 
@@ -133,7 +133,7 @@ sub SaveAccount {
             ValidateNewUser($new_login_name)
               || ThrowUserError("account_exists", {email => $new_login_name});
 
-            Token::IssueEmailChangeToken($userid,$old_login_name,
+            Bugzilla::Token::IssueEmailChangeToken($userid,$old_login_name,
                                                  $new_login_name);
 
             $vars->{'email_changes_saved'} = 1;
@@ -148,7 +148,7 @@ sub SaveAccount {
 
 sub DoEmail {
     if (Param("supportwatchers")) {
-        my $watcheduserSet = new RelationSet;
+        my $watcheduserSet = new Bugzilla::RelationSet;
         $watcheduserSet->mergeFromDB("SELECT watched FROM watch WHERE" .
                                     " watcher=$userid");
         $vars->{'watchedusers'} = $watcheduserSet->toString();
@@ -246,12 +246,12 @@ sub SaveEmail {
         SendSQL("LOCK TABLES watch WRITE, profiles READ");
 
         # what the db looks like now
-        my $origWatchedUsers = new RelationSet;
+        my $origWatchedUsers = new Bugzilla::RelationSet;
         $origWatchedUsers->mergeFromDB("SELECT watched FROM watch WHERE" .
                                        " watcher=$userid");
 
         # Update the database to look like the form
-        my $newWatchedUsers = new RelationSet($cgi->param('watchedusers'));
+        my $newWatchedUsers = new Bugzilla::RelationSet($cgi->param('watchedusers'));
         my @CCDELTAS = $origWatchedUsers->generateSqlDeltas(
                                                          $newWatchedUsers, 
                                                          "watch",