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(@_)); +} +# }}} | 
