[Rt-commit] r18686 - in rt/3.999/trunk: lib/RT/Model share/html/Elements/RT__Model__Group

ruz at bestpractical.com ruz at bestpractical.com
Wed Mar 4 22:48:25 EST 2009


Author: ruz
Date: Wed Mar  4 22:48:24 2009
New Revision: 18686

Modified:
   rt/3.999/trunk/lib/RT/Model/ACE.pm
   rt/3.999/trunk/lib/RT/Model/CachedGroupMember.pm
   rt/3.999/trunk/lib/RT/Model/Group.pm
   rt/3.999/trunk/lib/RT/Model/GroupMember.pm
   rt/3.999/trunk/lib/RT/Model/Queue.pm
   rt/3.999/trunk/lib/RT/SharedSetting.pm
   rt/3.999/trunk/share/html/Elements/RT__Model__Group/ColumnMap

Log:
* drop has_member_recursively

Modified: rt/3.999/trunk/lib/RT/Model/ACE.pm
==============================================================================
--- rt/3.999/trunk/lib/RT/Model/ACE.pm	(original)
+++ rt/3.999/trunk/lib/RT/Model/ACE.pm	Wed Mar  4 22:48:24 2009
@@ -475,7 +475,7 @@
     my $self = shift;
 
     if ( $self->principal->is_group
-        && $self->principal->object->has_member_recursively( $self->current_user->principal ) )
+        && $self->principal->object->has_member( $self->current_user->principal, recursively => 1 ) )
     {
         return ( $self->__value(@_) );
     } elsif (

Modified: rt/3.999/trunk/lib/RT/Model/CachedGroupMember.pm
==============================================================================
--- rt/3.999/trunk/lib/RT/Model/CachedGroupMember.pm	(original)
+++ rt/3.999/trunk/lib/RT/Model/CachedGroupMember.pm	Wed Mar  4 22:48:24 2009
@@ -238,7 +238,7 @@
 
     # Unless $self->group_obj still has the member recursively $self->member_obj
     # (Since we deleted the database row above, $self no longer counts)
-    unless ( $self->group_obj->object->has_member_recursively( $self->member_id ) ) {
+    unless ( $self->group_obj->object->has_member( $self->member_id, recursively => 1 ) ) {
 
         #   Find all ACEs granted to $self->group_id
         my $acl = RT::Model::ACECollection->new( current_user => RT->system_user );
@@ -297,7 +297,7 @@
 
     # Unless $self->group_obj still has the member recursively $self->member_obj
     # (Since we Setdisabledd the database row above, $self no longer counts)
-    unless ( $self->group_obj->object->has_member_recursively( $self->member_id ) ) {
+    unless ( $self->group_obj->object->has_member( $self->member_id, recursively => 1 ) ) {
 
         #   Find all ACEs granted to $self->group_id
         my $acl = RT::Model::ACECollection->new( current_user => RT->system_user );

Modified: rt/3.999/trunk/lib/RT/Model/Group.pm
==============================================================================
--- rt/3.999/trunk/lib/RT/Model/Group.pm	(original)
+++ rt/3.999/trunk/lib/RT/Model/Group.pm	Wed Mar  4 22:48:24 2009
@@ -914,7 +914,7 @@
         );
     }
     if (   $new_member_obj->is_group
-        && $new_member_obj->object->has_member_recursively( $self->principal ) )
+        && $new_member_obj->object->has_member( $self->principal, recursively => 1 ) )
     {
 
         #This group can't be made to be a member of itself
@@ -935,11 +935,12 @@
 }
 
 
+=head2 has_member
 
-=head2 has_member RT::Model::Principal|id
+Takes an L<RT::Model::Principal> object or its id and optional 'recursively'
+argument. Returns id of a GroupMember or CachedGroupMember record if that user
+is a member of this group. By default lookup is not recursive.
 
-Takes an L<RT::Model::Principal> object or its id returns a GroupMember id if that user is a 
-member of this group.
 Returns undef if the user isn't a member of the group or if the current
 user doesn't have permission to find out. Arguably, it should differentiate
 between ACL failure and non membership.
@@ -949,6 +950,10 @@
 sub has_member {
     my $self      = shift;
     my $principal = shift;
+    my %args      = (
+        recursively => 0,
+        @_
+    );
 
     my $id;
     if ( UNIVERSAL::isa( $principal, 'RT::Model::Principal' ) ) {
@@ -966,47 +971,11 @@
     }
     return undef unless $id;
 
-    my $member_obj = RT::Model::GroupMember->new;
-    $member_obj->load_by_cols(
-        member_id => $id,
-        group_id  => $self->id
-    );
+    my $class = $args{'recursively'}
+        ? 'RT::Model::GroupMember'
+        : 'RT::Model::CachedGroupMember';
 
-    if ( my $member_id = $member_obj->id ) {
-        return $member_id;
-    } else {
-        return (undef);
-    }
-}
-
-
-
-=head2 has_member_recursively RT::Model::Principal|id
-
-Takes an L<RT::Model::Principal> object or its id and returns true if that user is a member of 
-this group.
-Returns undef if the user isn't a member of the group or if the current
-user doesn't have permission to find out. Arguably, it should differentiate
-between ACL failure and non membership.
-
-=cut
-
-sub has_member_recursively {
-    my $self = shift;
-    my $principal = shift || '';
-
-    my $id;
-    if ( UNIVERSAL::isa( $principal, 'RT::Model::Principal' ) ) {
-        $id = $principal->id;
-    } elsif ( $principal =~ /^\d+$/ ) {
-        $id = $principal;
-    } else {
-        Jifty->log->error( "Group::has_member_recursively was called with an argument that" . " isn't an RT::Model::Principal or id. It's $principal" );
-        return (undef);
-    }
-    return undef unless $id;
-
-    my $member_obj = RT::Model::CachedGroupMember->new;
+    my $member_obj = new $class;
     $member_obj->load_by_cols(
         member_id => $id,
         group_id  => $self->id
@@ -1020,7 +989,6 @@
 }
 
 
-
 =head2 delete_member PRINCIPAL_ID
 
 Takes the principal id of a current user or group.
@@ -1236,3 +1204,4 @@
 
 RT
 
+=cut

Modified: rt/3.999/trunk/lib/RT/Model/GroupMember.pm
==============================================================================
--- rt/3.999/trunk/lib/RT/Model/GroupMember.pm	(original)
+++ rt/3.999/trunk/lib/RT/Model/GroupMember.pm	Wed Mar  4 22:48:24 2009
@@ -142,7 +142,7 @@
 
     if ( $args{'member'}->is_group ) {
         my $member_object = $args{'member'}->object;
-        if ( $member_object->has_member_recursively( $args{'group'} ) ) {
+        if ( $member_object->has_member( $args{'group'}, recursively => 1 ) ) {
             Jifty->log->debug("Adding that group would create a loop");
             Jifty->handle->rollback() unless $inside_transaction;
             return (undef);

Modified: rt/3.999/trunk/lib/RT/Model/Queue.pm
==============================================================================
--- rt/3.999/trunk/lib/RT/Model/Queue.pm	(original)
+++ rt/3.999/trunk/lib/RT/Model/Queue.pm	Wed Mar  4 22:48:24 2009
@@ -853,7 +853,7 @@
         return (undef);
     }
 
-    return ( $group->has_member_recursively($principal) );
+    return $group->has_member( $principal, recursively => 1 );
 }
 
 

Modified: rt/3.999/trunk/lib/RT/SharedSetting.pm
==============================================================================
--- rt/3.999/trunk/lib/RT/SharedSetting.pm	(original)
+++ rt/3.999/trunk/lib/RT/SharedSetting.pm	Wed Mar  4 22:48:24 2009
@@ -382,7 +382,7 @@
 
             # then any principal that is a member of the setting's group can see
             # the setting
-            return $setting_group->has_member_recursively($to_id);
+            return $setting_group->has_member( $to_id, recursively => 1 );
         }
     }
 
@@ -431,8 +431,8 @@
     }
 
     if ( $obj_type eq 'RT::Model::Group'
-        && !$object->has_member_recursively(
-            $self->current_user->principal ) )
+        && !$object->has_member(
+            $self->current_user->principal, recursively => 1 ) )
     {
         Jifty->log->debug( "Permission denied, "
               . $self->current_user->name

Modified: rt/3.999/trunk/share/html/Elements/RT__Model__Group/ColumnMap
==============================================================================
--- rt/3.999/trunk/share/html/Elements/RT__Model__Group/ColumnMap	(original)
+++ rt/3.999/trunk/share/html/Elements/RT__Model__Group/ColumnMap	Wed Mar  4 22:48:24 2009
@@ -70,7 +70,7 @@
         value     => sub  {
             my $group = $_[0];
             my $uid   = $_[2] || return '';
-            return $group->has_member_recursively( $uid )? $_[0]->_('yes'): $_[0]->_('no');
+            return $group->has_member( $uid, recursively => 1 )? $_[0]->_('yes'): $_[0]->_('no');
         },
     },
     name => {


More information about the Rt-commit mailing list