import rt 3.8.10
[freeside.git] / rt / lib / RT / Users.pm
index f4a9726..f0f07fd 100755 (executable)
+# BEGIN BPS TAGGED BLOCK {{{
+#
+# COPYRIGHT:
+#
+# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+#                                          <sales@bestpractical.com>
+#
+# (Except where explicitly superseded by other copyright notices)
+#
+#
+# LICENSE:
+#
+# 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.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 or visit their web page on the internet at
+# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+#
+#
+# CONTRIBUTION SUBMISSION POLICY:
+#
+# (The following paragraph is not intended to limit the rights granted
+# to you to modify and distribute this software under the terms of
+# the GNU General Public License and is only of importance to you if
+# you choose to contribute your changes and enhancements to the
+# community by submitting them to Best Practical Solutions, LLC.)
+#
+# By intentionally submitting any modifications, corrections or
+# derivatives to this work, or any other work intended for use with
+# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+# you are the copyright holder for those contributions and you grant
+# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+# royalty-free, perpetual, license to use, copy, create derivative
+# works based on those contributions, and sublicense and distribute
+# those contributions and any derivatives thereof.
+#
+# END BPS TAGGED 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/Users.pm,v 1.1 2002-08-12 06:17:07 ivan Exp $
-# (c) 1996-1999 Jesse Vincent <jesse@fsck.com>
-# This software is redistributable under the terms of the GNU GPL
 
 =head1 NAME
 
-  RT::Users - Collection of RT::User objects
-
+  RT::Users -- Class Description
 =head1 SYNOPSIS
 
-  use RT::Users;
-
+  use RT::Users
 
 =head1 DESCRIPTION
 
 
 =head1 METHODS
 
-=begin testing
-
-ok(require RT::TestHarness);
-ok(require RT::Users);
-
-=end testing
-
 =cut
 
 package RT::Users;
-use RT::EasySearch;
-@ISA = qw(RT::EasySearch);
-
-# {{{ sub _Init 
-sub _Init  {
-  my $self = shift;
-  $self->{'table'} = "Users";
-  $self->{'primary_key'} = "id";
-
-  # By default, order by name
-  $self->OrderBy( ALIAS => 'main',
-                 FIELD => 'Name',
-                 ORDER => 'ASC');
-
-  return ($self->SUPER::_Init(@_));
-  
-}
-# }}}
-
-# {{{ sub _DoSearch 
-
-=head2 _DoSearch
-
-  A subclass of DBIx::SearchBuilder::_DoSearch that makes sure that _Disabled rows never get seen unless
-we're explicitly trying to see them.
-
-=cut
-
-sub _DoSearch {
-    my $self = shift;
-    
-    #unless we really want to find disabled rows, make sure we\'re only finding enabled ones.
-    unless($self->{'find_disabled_rows'}) {
-       $self->LimitToEnabled();
-    }
-    
-    return($self->SUPER::_DoSearch(@_));
-    
-}
-
-# }}}
-
-# {{{ sub NewItem 
-
-sub NewItem  {
-  my $self = shift;
-
-  use RT::User;
-  my $item = new RT::User($self->CurrentUser);
-  return($item);
-}
-# }}}
-
-# {{{ LimitToEmail
-=head2 LimitToEmail
-
-Takes one argument. an email address. limits the returned set to
-that email address
-
-=cut
-
-sub LimitToEmail {
-    my $self = shift;
-    my $addr = shift;
-    $self->Limit(FIELD => 'EmailAddress', VALUE => "$addr");
-}
-
-# }}}
-
-# {{{ MemberOfGroup
-
-=head2 MemberOfGroup
-
-takes one argument, a group id number. Limits the returned set
-to members of a given group
-
-=cut
-
-sub MemberOfGroup {
-    my $self = shift;
-    my $group = shift;
-    
-    return ("No group specified") if (!defined $group);
-
-    my $groupalias = $self->NewAlias('GroupMembers');
-
-    $self->Join( ALIAS1 => 'main', FIELD1 => 'id', 
-                ALIAS2 => "$groupalias", FIELD2 => 'Name');
-    
-    $self->Limit (ALIAS => "$groupalias",
-                 FIELD => 'GroupId',
-                 VALUE => "$group",
-                 OPERATOR => "="
-                );
-}
-
-# }}}
-
-# {{{ LimitToPrivileged
 
-=head2 LimitToPrivileged
+use RT::SearchBuilder;
+use RT::User;
 
-Limits to users who can be made members of ACLs and groups
+use vars qw( @ISA );
+@ISA= qw(RT::SearchBuilder);
 
-=cut
 
-sub LimitToPrivileged {
+sub _Init {
     my $self = shift;
-    $self->Limit( FIELD => 'Privileged',
-                  OPERATOR => '=',
-                  VALUE => '1');
-}
-
-# }}}
-
-
+    $self->{'table'} = 'Users';
+    $self->{'primary_key'} = 'id';
 
-# {{{ LimitToSystem
 
-=head2 LimitToSystem
-
-Limits to users who can be granted rights, but who should
-never have their rights modified by a user or be made members of groups.
-
-=cut
-
-sub LimitToSystem {
-    my $self = shift;
-    $self->Limit( FIELD => 'Privileged',
-                  OPERATOR => '=',
-                  VALUE => '2');
+    return ( $self->SUPER::_Init(@_) );
 }
 
-# }}}
 
-# {{{ HasQueueRight
+=head2 NewItem
 
-=head2 HasQueueRight
-
-Takes a queue id as its first argument.  Queue Id "0" is treated by RT as "applies to all queues"
-Takes a specific right as an optional second argument
-
-Limits the returned set to users who have rights in the queue specified, personally.  If the optional second argument is supplied, limits to users who have been explicitly granted that right.
-
-
-
-This should not be used as an ACL check, but only for obtaining lists of
-users with explicit rights in a given queue.
+Returns an empty new RT::User item
 
 =cut
 
-sub HasQueueRight {
+sub NewItem {
     my $self = shift;
-    my $queue = shift;
-    my $right;
-    
-    $right = shift if (@_);
-
-
-    my $acl_alias  = $self->NewAlias('ACL');
-    $self->Join( ALIAS1 => 'main',  FIELD1 => 'id',
-                ALIAS2 => $acl_alias, FIELD2 => 'PrincipalId');
-    $self->Limit (ALIAS => $acl_alias,
-                FIELD => 'PrincipalType',
-                OPERATOR => '=',
-                VALUE => 'User');
-
-
-    $self->Limit(ALIAS => $acl_alias,
-                FIELD => 'RightAppliesTo',
-                OPERATOR => '=',
-                VALUE => "$queue");
-
-
-    $self->Limit(ALIAS => $acl_alias,
-                FIELD => 'RightScope',
-                OPERATOR => '=',
-                ENTRYAGGREGATOR => 'OR',
-                VALUE => 'Queue');
-
-
-    $self->Limit(ALIAS => $acl_alias,
-                FIELD => 'RightScope',
-                OPERATOR => '=',
-                ENTRYAGGREGATOR => 'OR',
-                VALUE => 'Ticket');
-
-
-    #TODO: is this being initialized properly if the right isn't there?
-    if (defined ($right)) {
-       
-       $self->Limit(ALIAS => $acl_alias,
-                    FIELD => 'RightName',
-                    OPERATOR => '=',
-                    VALUE => "$right");
-       
-       
-       };
-
-
+    return(RT::User->new($self->CurrentUser));
 }
+RT::Base->_ImportOverlays();
 
+=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.
 
-# {{{ HasSystemRight
+Each of these files should begin with the line 
 
-=head2 HasSystemRight
+   no warnings qw(redefine);
 
-Takes one optional argument:
-   The name of a System level right.
+so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
 
-Limits the returned set to users who have been granted system rights, personally.  If the optional argument is passed in, limits to users who have been granted the explicit right listed.   Please see the note attached to LimitToQueueRights
+RT::Users_Overlay, RT::Users_Vendor, RT::Users_Local
 
 =cut
 
-sub HasSystemRight {
-    my $self = shift;
-    my $right = shift if (@_);
-       my $acl_alias  = $self->NewAlias('ACL');
-
-
-    $self->Join( ALIAS1 => 'main',  FIELD1 => 'id',
-                ALIAS2 => $acl_alias, FIELD2 => 'PrincipalId');
-    $self->Limit (ALIAS => $acl_alias,
-                FIELD => 'PrincipalType',
-                OPERATOR => '=',
-                VALUE => 'User');
-
-    $self->Limit(ALIAS => $acl_alias,
-                FIELD => 'RightScope',
-                OPERATOR => '=',
-                VALUE => 'System');
-
-
-    #TODO: is this being initialized properly if the right isn't there?
-    if (defined ($right)) {
-       $self->Limit(ALIAS => $acl_alias,
-                    FIELD => 'RightName',
-                    OPERATOR => '=',
-                    VALUE => "$right");
-       
-       }
-
-    
-}
-
-# }}}
 
 1;
-