summaryrefslogtreecommitdiff
path: root/rt/lib/RT/GroupMember.pm
diff options
context:
space:
mode:
Diffstat (limited to 'rt/lib/RT/GroupMember.pm')
-rwxr-xr-xrt/lib/RT/GroupMember.pm231
1 files changed, 89 insertions, 142 deletions
diff --git a/rt/lib/RT/GroupMember.pm b/rt/lib/RT/GroupMember.pm
index 8de1a73fe..69de50b42 100755
--- a/rt/lib/RT/GroupMember.pm
+++ b/rt/lib/RT/GroupMember.pm
@@ -1,189 +1,136 @@
-# BEGIN LICENSE BLOCK
-#
-# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com>
-#
-# (Except where explictly superceded by other copyright notices)
-#
-# This work is made available to you under the terms of Version 2 of
-# the GNU General Public License. A copy of that license should have
-# been provided with this software, but in any event can be snarfed
-# from www.gnu.org.
-#
-# This work is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# Unless otherwise specified, all modifications, corrections or
-# extensions to this work which alter its source code become the
-# property of Best Practical Solutions, LLC when submitted for
-# inclusion in the work.
-#
-#
-# END LICENSE BLOCK
-# Autogenerated by DBIx::SearchBuilder factory (by <jesse@bestpractical.com>)
-# WARNING: THIS FILE IS AUTOGENERATED. ALL CHANGES TO THIS FILE WILL BE LOST.
-#
-# !! DO NOT EDIT THIS FILE !!
-#
-
-use strict;
-
+# $Header: /home/cvs/cvsroot/freeside/rt/lib/RT/GroupMember.pm,v 1.1 2002-08-12 06:17:07 ivan Exp $
+# Copyright 2000 Jesse Vincent <jesse@fsck.com>
+# Released under the terms of the GNU Public License
=head1 NAME
-RT::GroupMember
-
+ RT::GroupMember - a member of an RT Group
=head1 SYNOPSIS
-=head1 DESCRIPTION
-
-=head1 METHODS
-
-=cut
-
-package RT::GroupMember;
-use RT::Record;
-
+RT::GroupMember should never be called directly. It should generally
+only be accessed through the helper functions in RT::Group;
-use vars qw( @ISA );
-@ISA= qw( RT::Record );
+=head1 DESCRIPTION
-sub _Init {
- my $self = shift;
- $self->Table('GroupMembers');
- $self->SUPER::_Init(@_);
-}
+=head1 METHODS
+=begin testing
-=item Create PARAMHASH
+ok (require RT::TestHarness);
+ok (require RT::GroupMember);
-Create takes a hash of values and creates a row in the database:
+=end testing
- int(11) 'GroupId'.
- int(11) 'MemberId'.
=cut
+package RT::GroupMember;
+use RT::Record;
+use vars qw|@ISA|;
+@ISA= qw(RT::Record);
+# {{{ sub _Init
+sub _Init {
+ my $self = shift;
+ $self->{'table'} = "GroupMembers";
+ return($self->SUPER::_Init(@_));
+}
+# }}}
-
-sub Create {
+# {{{ sub _Accessible
+sub _Accessible {
my $self = shift;
- my %args = (
- GroupId => '0',
- MemberId => '0',
-
- @_);
- $self->SUPER::Create(
- GroupId => $args{'GroupId'},
- MemberId => $args{'MemberId'},
-);
+ my %Cols = (
+ GroupId => 'read',
+ UserId => 'read'
+ );
+ return $self->SUPER::_Accessible(@_, %Cols);
}
+# }}}
+# {{{ sub Create
+# a helper method for Add
-=item id
-
-Returns the current value of id.
-(In the database, id is stored as int(11).)
-
-
-=cut
-
-
-=item GroupId
-
-Returns the current value of GroupId.
-(In the database, GroupId is stored as int(11).)
-
-
-
-=item SetGroupId VALUE
+sub Create {
+ my $self = shift;
+ my %args = ( GroupId => undef,
+ UserId => undef,
+ @_
+ );
+
+ unless( $self->CurrentUser->HasSystemRight('AdminGroups')) {
+ return (0, 'Permission Denied');
+ }
+
+ return ($self->SUPER::Create(GroupId => $args{'GroupId'},
+ UserId => $args{'UserId'}))
+}
+# }}}
+# {{{ sub Add
-Set GroupId to VALUE.
-Returns (1, 'Status message') on success and (0, 'Error Message') on failure.
-(In the database, GroupId will be stored as a int(11).)
+=head2 Add
+Takes a paramhash of UserId and GroupId. makes that user a memeber
+of that group
=cut
+sub Add {
+ my $self = shift;
+ return ($self->Create(@_));
+}
+# }}}
-=item MemberId
-
-Returns the current value of MemberId.
-(In the database, MemberId is stored as int(11).)
-
-
-
-=item SetMemberId VALUE
-
+# {{{ sub Delete
-Set MemberId to VALUE.
-Returns (1, 'Status message') on success and (0, 'Error Message') on failure.
-(In the database, MemberId will be stored as a int(11).)
+=head2 Delete
+Takes no arguments. deletes the currently loaded member from the
+group in question.
=cut
+sub Delete {
+ my $self = shift;
+ unless ($self->CurrentUser->HasSystemRight('AdminGroups')) {
+ return (0, 'Permission Denied');
+ }
+ return($self->SUPER::Delete(@_));
+}
+# }}}
-sub _ClassAccessible {
- {
-
- id =>
- {read => 1, type => 'int(11)', default => ''},
- GroupId =>
- {read => 1, write => 1, type => 'int(11)', default => '0'},
- MemberId =>
- {read => 1, write => 1, type => 'int(11)', default => '0'},
-
- }
-};
-
-
- eval "require RT::GroupMember_Overlay";
- if ($@ && $@ !~ qr{^Can't locate RT/GroupMember_Overlay.pm}) {
- die $@;
- };
-
- eval "require RT::GroupMember_Vendor";
- if ($@ && $@ !~ qr{^Can't locate RT/GroupMember_Vendor.pm}) {
- die $@;
- };
-
- eval "require RT::GroupMember_Local";
- if ($@ && $@ !~ qr{^Can't locate RT/GroupMember_Local.pm}) {
- die $@;
- };
-
-
-
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-If you'll be working with perl 5.6.0 or greater, each of these files should begin with the line
-
- no warnings qw(redefine);
+# {{{ sub UserObj
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
+=head2 UserObj
-RT::GroupMember_Overlay, RT::GroupMember_Vendor, RT::GroupMember_Local
+Returns an RT::User object for the user specified by $self->UserId
=cut
+sub UserObj {
+ my $self = shift;
+ unless (defined ($self->{'user_obj'})) {
+ $self->{'user_obj'} = new RT::User($self->CurrentUser);
+ $self->{'user_obj'}->Load($self->UserId);
+ }
+ return($self->{'user_obj'});
+}
-1;
+# {{{ sub _Set
+sub _Set {
+ my $self = shift;
+ unless ($self->CurrentUser->HasSystemRight('AdminGroups')) {
+ return (0, 'Permission Denied');
+ }
+ return($self->SUPER::_Set(@_));
+}
+# }}}