From 07578c0a572fe5e5966a0ec3e1bc38a7f0ead834 Mon Sep 17 00:00:00 2001 From: "lpsolit%gmail.com" <> Date: Tue, 12 Jul 2005 00:14:31 +0000 Subject: Bug 298931: migrate Group.pm from a simple module to a class - Patch by Tiago R. Mello r=LpSolit,mkanat a=justdave --- Bugzilla/Group.pm | 138 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 135 insertions(+), 3 deletions(-) (limited to 'Bugzilla/Group.pm') diff --git a/Bugzilla/Group.pm b/Bugzilla/Group.pm index 2cb8e5342..85e6de5b1 100644 --- a/Bugzilla/Group.pm +++ b/Bugzilla/Group.pm @@ -19,16 +19,93 @@ # # Contributor(s): Joel Peshkin # Erik Stambaugh +# Tiago R. Mello use strict; package Bugzilla::Group; +use Bugzilla; use Bugzilla::Config; +use Bugzilla::Util; +use Bugzilla::Error; + +############################### +##### Module Initialization ### +############################### + +use constant DB_COLUMNS => qw( + groups.id + groups.name + groups.description + groups.isbuggroup + groups.last_changed + groups.userregexp + groups.isactive +); + +our $columns = join(", ", DB_COLUMNS); + +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)) { + + $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; +} + +############################### +#### Accessors ###### +############################### + +sub id { return $_[0]->{'id'}; } +sub name { return $_[0]->{'name'}; } +sub description { return $_[0]->{'description'}; } +sub is_bug_group { return $_[0]->{'isbuggroup'}; } +sub last_changed { return $_[0]->{'last_changed'}; } +sub user_regexp { return $_[0]->{'userregexp'}; } +sub is_active { return $_[0]->{'isactive'}; } + +################################ +##### Module Subroutines ### +################################ -# ValidateGroupName checks to see if ANY of the users in the provided list -# of user objects can see the named group. It returns the group id if -# successful and undef otherwise. sub ValidateGroupName { my ($name, @users) = (@_); my $dbh = Bugzilla->dbh; @@ -49,3 +126,58 @@ sub ValidateGroupName { } 1; + +__END__ + +=head1 NAME + +Bugzilla::Group - Object for a Bugzilla group. + +=head1 SYNOPSIS + + use Bugzilla::Group; + + my $group = new Bugzilla::Group(1); + my $group = new Bugzilla::Group({name => 'AcmeGroup'}); + + my $id = $group->id; + my $name = $group->name; + my $description = $group->description; + my $last_changed = $group->last_changed; + my $user_reg_exp = $group->user_reg_exp; + my $is_active = $group->is_active; + +=head1 DESCRIPTION + +Group.pm represents a Bugzilla Group object. + +=head1 METHODS + +=over + +=item C + +The constructor is used to load an existing group by passing +a group id or a hash with the group name. + +=back + +=head1 SUBROUTINES + +=over + +=item C + +ValidateGroupName checks to see if ANY of the users in the provided list +of user objects can see the named group. It returns the group id if +successful and undef otherwise. + +=back + +=head1 AUTHOR + + Joel Peshkin + Erik Stambaugh + Tiago R. Mello + +=cut -- cgit v1.2.3-24-g4f1b