gave the objects_allowed method the ability to check a list of perms
authorerickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Tue, 19 Feb 2008 20:00:10 +0000 (20:00 +0000)
committererickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Tue, 19 Feb 2008 20:00:10 +0000 (20:00 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/branches/acq-experiment@8781 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/perlmods/OpenILS/Utils/CStoreEditor.pm

index 419b235..c386f22 100644 (file)
@@ -442,24 +442,30 @@ sub allowed {
 sub objects_allowed {
     my($self, $perm, $obj_type) = @_;
 
-    my $query = {
-        select => {puopm => ['object_id']},
-        from => {
-            puopm => {
-                ppl => {field => 'id',fkey => 'perm'}
-            }
-        },
-        where => {
-            '+puopm' => {usr => $self->requestor->id, object_type => $obj_type},
-            '+ppl' => {code => $perm}
-        }
-    };
+    my $perms = (ref($perm) eq 'ARRAY') ? $perm : [$perm];
+    my @ids;
 
-   my $list = $self->json_query($query);
-   my @ids;
-   push(@ids, 0+$_->{object_id}) for @$list;
+    for $perm (@$perms) {
+        my $query = {
+            select => {puopm => ['object_id']},
+            from => {
+                puopm => {
+                    ppl => {field => 'id',fkey => 'perm'}
+                }
+            },
+            where => {
+                '+puopm' => {usr => $self->requestor->id, object_type => $obj_type},
+                '+ppl' => {code => $perm}
+            }
+        };
+    
+        my $list = $self->json_query($query);
+        push(@ids, 0+$_->{object_id}) for @$list;
+    }
 
-   return \@ids;
+   my %trim
+   $trim{$_} = 1 for @ids;
+   return keys %trim;
 }