diff options
Diffstat (limited to 'rt/lib/RT/GroupMember.pm')
-rwxr-xr-x | rt/lib/RT/GroupMember.pm | 231 |
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(@_)); +} +# }}} |