import of rt 3.0.9
[freeside.git] / rt / lib / RT / Group_Overlay.pm
index 9215025..f71fe7f 100644 (file)
@@ -1,3 +1,4 @@
+
 # BEGIN LICENSE BLOCK
 # 
 # Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com>
@@ -327,8 +328,6 @@ sub LoadSystemInternalGroup {
     my $identifier = shift;
 
         $self->LoadByCols( "Domain" => 'SystemInternal',
-                           "Instance" => '',
-                           "Name" => '',
                            "Type" => $identifier );
 }
 
@@ -350,7 +349,7 @@ Takes a param hash with 2 parameters:
 
 sub LoadTicketRoleGroup {
     my $self       = shift;
-    my %args = (Ticket => undef,
+    my %args = (Ticket => '0',
                 Type => undef,
                 @_);
         $self->LoadByCols( Domain => 'RT::Ticket-Role',
@@ -444,7 +443,7 @@ sub _Create {
         Description => undef,
         Domain      => undef,
         Type        => undef,
-        Instance    => undef,
+        Instance    => '0',
         InsideTransaction => undef,
         @_
     );
@@ -466,7 +465,7 @@ sub _Create {
         Description => $args{'Description'},
         Type        => $args{'Type'},
         Domain      => $args{'Domain'},
-        Instance    => $args{'Instance'}
+        Instance    => ($args{'Instance'} || '0')
     );
     my $id = $self->Id;
     unless ($id) {
@@ -798,22 +797,14 @@ sub UserMembersObj {
     #If we don't have rights, don't include any results
     # TODO XXX  WHY IS THERE NO ACL CHECK HERE?
 
-    my $principals = $users->NewAlias('Principals');
-
-    $users->Join(ALIAS1 => 'main', FIELD1 => 'id',
-                 ALIAS2 => $principals, FIELD2 => 'ObjectId');
-    $users->Limit(ALIAS =>$principals,
-                  FIELD => 'PrincipalType', OPERATOR => '=', VALUE => 'User');
-
     my $cached_members = $users->NewAlias('CachedGroupMembers');
     $users->Join(ALIAS1 => $cached_members, FIELD1 => 'MemberId',
-                 ALIAS2 => $principals, FIELD2 => 'id');
+                 ALIAS2 => $users->PrincipalsAlias, FIELD2 => 'id');
     $users->Limit(ALIAS => $cached_members, 
                   FIELD => 'GroupId',
                   OPERATOR => '=',
                   VALUE => $self->PrincipalId);
 
-
     return ( $users);
 
 }
@@ -1009,6 +1000,10 @@ sub HasMember {
         return(undef);
     }
 
+    unless ($principal->Id) {
+        return(undef);
+    }
+
     my $member_obj = RT::GroupMember->new( $self->CurrentUser );
     $member_obj->LoadByCols( MemberId => $principal->id, 
                              GroupId => $self->PrincipalId );