[Rt-commit] r18957 - rt/3.999/trunk/lib/RT/Model

ruz at bestpractical.com ruz at bestpractical.com
Fri Mar 27 13:44:28 EDT 2009


Author: ruz
Date: Fri Mar 27 13:44:28 2009
New Revision: 18957

Modified:
   rt/3.999/trunk/lib/RT/Model/ACE.pm

Log:
* fix load_by_cols in Model::ACE, don't touch arguments
  when they are not provided

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	Fri Mar 27 13:44:28 2009
@@ -64,7 +64,10 @@
 package RT::Model::ACE;
 
 use strict;
-no warnings qw(redefine);
+use warnings;
+
+use Scalar::Util qw(blessed);
+
 use RT::Model::PrincipalCollection;
 use RT::Model::QueueCollection;
 use RT::Model::GroupCollection;
@@ -138,33 +141,27 @@
 
 sub load_by_cols {
     my $self = shift;
-    my %args = (
-        principal   => undef,
-        type        => undef,
-        right_name  => undef,
-        object      => undef,
-        object_id   => undef,
-        object_type => undef,
-        @_
-    );
+    my %args = ( @_ );
 
-    my ( $object, $object_type, $object_id ) = $self->_parse_object_arg(%args);
-    unless ($object) {
-        return ( 0, _("System error. Right not granted.") );
+    if ( $args{'object'} || defined $args{'object_id'} || $args{'object_type'} ) {
+        my ( $object, $object_type, $object_id ) = $self->_parse_object_arg(%args);
+        unless ($object) {
+            return ( 0, _("System error. Right not granted.") );
+        }
+        delete $args{'object'};
+        $args{'object_type'} = $object_type;
+        $args{'object_id'} = $object_id;
     }
 
-    my ($acl_group, $msg) = $self->principal_to_acl_group( $args{'principal'} );
-    unless ( $acl_group ) {
-        return ( 0, $msg );
+    if ( defined $args{'principal'} ) {
+        my ($group, $msg) = $self->principal_to_acl_group( $args{'principal'} );
+        unless ( $group ) {
+            return ( 0, $msg );
+        }
+        $args{'principal'} = $group->id;
     }
 
-    $self->load_by_cols(
-        principal   => $acl_group->id,
-        type        => $args{'type'} || 'Group',
-        right_name  => $args{'right_name'},
-        object_type => $object_type,
-        object_id   => $object_id
-    );
+    $self->SUPER::load_by_cols( %args );
     unless ( $self->id ) {
         return ( 0, _("ACE not found") );
     }
@@ -467,7 +464,7 @@
     my $self = shift;
 
     if ( $self->principal->is_group
-        && $self->principal->object->has_member( $self->current_user->principal, recursively => 1 ) )
+        && $self->principal->object->has_member( principal =>  $self->current_user->principal, recursively => 1 ) )
     {
         return ( $self->__value(@_) );
     } elsif (
@@ -498,13 +495,13 @@
     return $principal->acl_equivalence_group
         if blessed $principal;
 
-    my $tmp = RT::Model::Principal->new( $self->current_user );
+    my $tmp = RT::Model::Principal->new( current_user => $self->current_user );
     $tmp->load( $principal );
     unless ( $tmp->id ) {
         return (undef, _( 'Principal %1 not found.', $principal ));
         return undef;
     }
-    return $principal->acl_equivalence_group;
+    return $tmp->acl_equivalence_group;
 }
 
 sub _parse_object_arg {


More information about the Rt-commit mailing list