]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 339383: Make Bugzilla::Group use Bugzilla::Object
authormkanat%bugzilla.org <>
Tue, 8 Aug 2006 06:05:00 +0000 (06:05 +0000)
committermkanat%bugzilla.org <>
Tue, 8 Aug 2006 06:05:00 +0000 (06:05 +0000)
Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=bkor, a=myk

Bugzilla/Config/GroupSecurity.pm
Bugzilla/Group.pm
editflagtypes.cgi
editgroups.cgi

index 1dee703d01fddbecd6038bea3dad3c171f65198f..0a238f20938e5231254e71585f717565aa0565a9 100644 (file)
@@ -101,7 +101,7 @@ sub get_param_list {
 }
 
 sub _get_all_group_names {
-    my @group_names = map {$_->name} Bugzilla::Group::get_all_groups();
+    my @group_names = map {$_->name} Bugzilla::Group->get_all;
     unshift(@group_names, '');
     return \@group_names;
 }
index c273e7f20dc812368cc414960ad0aaa611bd668e..5fc88c047ac882e3c0c745814ad11aa05b373dc5 100644 (file)
 # Contributor(s): Joel Peshkin <bugreport@peshkin.net>
 #                 Erik Stambaugh <erik@dasbistro.com>
 #                 Tiago R. Mello <timello@async.com.br>
+#                 Max Kanat-Alexander <mkanat@bugzilla.org>
 
 use strict;
 
 package Bugzilla::Group;
 
+use base qw(Bugzilla::Object);
 use Bugzilla::Util;
 use Bugzilla::Error;
 
@@ -41,61 +43,14 @@ use constant DB_COLUMNS => qw(
     groups.isactive
 );
 
-our $columns = join(", ", DB_COLUMNS);
+use constant DB_TABLE => 'groups';
 
-sub new {
-    my $invocant = shift;
-    my $class = ref($invocant) || $invocant;
-    my $self = {};
-    bless($self, $class);
-    return $self->_init(@_);
-}
-
-sub _init {
-    my $self = shift;
-    my ($param) = (@_);
-    my $dbh = Bugzilla->dbh;
-
-    my $id = $param unless (ref $param eq 'HASH');
-    my $group;
-
-    if (defined $id) {
-        detaint_natural($id)
-          || ThrowCodeError('param_must_be_numeric',
-                            {function => 'Bugzilla::Group::_init'});
-
-        $group = $dbh->selectrow_hashref(qq{
-            SELECT $columns FROM groups
-            WHERE id = ?}, undef, $id);
-
-    } elsif (defined $param->{'name'}) {
-
-        trick_taint($param->{'name'});
-
-        $group = $dbh->selectrow_hashref(qq{
-            SELECT $columns FROM groups
-            WHERE name = ?}, undef, $param->{'name'});
-
-    } else {
-        ThrowCodeError('bad_arg',
-            {argument => 'param',
-             function => 'Bugzilla::Group::_init'});
-    }
-
-    return undef unless (defined $group);
-
-    foreach my $field (keys %$group) {
-        $self->{$field} = $group->{$field};
-    }
-    return $self;
-}
+use constant LIST_ORDER => 'isbuggroup, name';
 
 ###############################
 ####      Accessors      ######
 ###############################
 
-sub id           { return $_[0]->{'id'};           }
-sub name         { return $_[0]->{'name'};         }
 sub description  { return $_[0]->{'description'};  }
 sub is_bug_group { return $_[0]->{'isbuggroup'};   }
 sub user_regexp  { return $_[0]->{'userregexp'};   }
@@ -124,19 +79,6 @@ sub ValidateGroupName {
     return $ret;
 }
 
-sub get_all_groups {
-    my $dbh = Bugzilla->dbh;
-
-    my $group_ids = $dbh->selectcol_arrayref('SELECT id FROM groups
-                                              ORDER BY isbuggroup, name');
-
-    my @groups;
-    foreach my $gid (@$group_ids) {
-        push @groups, new Bugzilla::Group($gid);
-    }
-    return @groups;
-}
-
 1;
 
 __END__
@@ -159,30 +101,13 @@ Bugzilla::Group - Bugzilla group class.
     my $is_active    = $group->is_active;
 
     my $group_id = Bugzilla::Group::ValidateGroupName('admin', @users);
-    my @groups   = Bugzilla::Group::get_all_groups();
+    my @groups   = Bugzilla::Group->get_all;
 
 =head1 DESCRIPTION
 
-Group.pm represents a Bugzilla Group object.
-
-=head1 METHODS
-
-=over
-
-=item C<new($param)>
-
- Description: The constructor is used to load an existing group
-              by passing a group id or a hash with the group name.
-
- Params:      $param - If you pass an integer, the integer is the
-                       group id from the database that we want to
-                       read in. If you pass in a hash with 'name'
-                       key, then the value of the name key is the
-                       name of a product from the DB.
-
- Returns:     A Bugzilla::Group object.
-
-=back
+Group.pm represents a Bugzilla Group object. It is an implementation
+of L<Bugzilla::Object>, and thus has all the methods that L<Bugzilla::Object>
+provides, in addition to any methods documented below.
 
 =head1 SUBROUTINES
 
@@ -200,15 +125,4 @@ Group.pm represents a Bugzilla Group object.
  Returns:     It returns the group id if successful
               and undef otherwise.
 
-=item C<get_all_groups()>
-
- Description: Returns all groups available, including both
-              system groups and bug groups.
-
- Params:      none
-
- Returns:     An array of group objects.
-
 =back
-
-=cut
index 622cfcb05123688e3fed7d47e95ef4d0dfc4cc5f..e7b0908b538bca91dc7ff68d5091edeff6155a82 100755 (executable)
@@ -186,7 +186,7 @@ sub edit {
                             'inclusions'  => \%inclusions };
     }
     # Get a list of groups available to restrict this flag type against.
-    my @groups = Bugzilla::Group::get_all_groups();
+    my @groups = Bugzilla::Group->get_all;
     $vars->{'groups'} = \@groups;
     # Return the appropriate HTTP response headers.
     print $cgi->header();
@@ -236,7 +236,7 @@ sub processCategoryChange {
     # Fill $vars with products and components data.
     $vars = get_products_and_components($vars);
 
-    my @groups = Bugzilla::Group::get_all_groups();
+    my @groups = Bugzilla::Group->get_all;
     $vars->{'groups'} = \@groups;
     $vars->{'action'} = $cgi->param('action');
 
index a26bd0c776b4fba3ad58054e5e246d9f41c72a42..7ab2ac62eaf234ff514db5af0c6da242308c3ad2 100755 (executable)
@@ -176,7 +176,7 @@ sub CheckGroupRegexp {
 # If no action is specified, get a list of all groups available.
 
 unless ($action) {
-    my @groups = Bugzilla::Group::get_all_groups();
+    my @groups = Bugzilla::Group->get_all;
     $vars->{'groups'} = \@groups;
     
     print $cgi->header();