Author: david
Date: Fri Oct 23 14:28:38 2009
New Revision: 3814

Log:
Use QubitAcl::getRepositoryAccess to determine users ability to see 
repositories in autocomplete field. Fixes issue #1088.

Modified:
   trunk/apps/qubit/modules/informationobject/actions/editAction.class.php
   trunk/apps/qubit/modules/repository/actions/autocompleteAction.class.php

Modified: 
trunk/apps/qubit/modules/informationobject/actions/editAction.class.php
==============================================================================
--- trunk/apps/qubit/modules/informationobject/actions/editAction.class.php     
Fri Oct 23 12:17:32 2009        (r3813)
+++ trunk/apps/qubit/modules/informationobject/actions/editAction.class.php     
Fri Oct 23 14:28:38 2009        (r3814)
@@ -138,7 +138,7 @@
 
         if (isset($this->request->id))
         {
-          $this->repoAcParams = array('module' => 'repository', 'action' => 
'autocomplete', 'aclAction' => QubitAclAction::UPDATE_ID, 'informationObject' 
=> $this->request->id);
+          $this->repoAcParams = array('module' => 'repository', 'action' => 
'autocomplete', 'aclAction' => QubitAclAction::UPDATE_ID);
         }
         else
         {

Modified: 
trunk/apps/qubit/modules/repository/actions/autocompleteAction.class.php
==============================================================================
--- trunk/apps/qubit/modules/repository/actions/autocompleteAction.class.php    
Fri Oct 23 12:17:32 2009        (r3813)
+++ trunk/apps/qubit/modules/repository/actions/autocompleteAction.class.php    
Fri Oct 23 14:28:38 2009        (r3814)
@@ -35,25 +35,39 @@
     // object form
     if (isset($request->aclAction))
     {
-      if (isset($request->informationObject))
-      {
-        $informationObject = 
QubitInformationObject::getById($request->informationObject);
-      }
-      else
-      {
-        $informationObject = QubitInformationObject::getRoot();
-      }
-
-      $deniedRepositories = QubitAcl::deniedRepositories($informationObject, 
$request->aclAction);
+      $repositoryList = array();
+      $repositoryAccess = QubitAcl::getRepositoryAccess($request->aclAction);
 
       // If all repositories are denied, no response
-      if (array('*') == $deniedRepositories)
+      if (1 == count($repositoryAccess) && QubitAcl::DENY == 
$repositoryAccess[0]['access'])
       {
 
         return sfView::NONE;
       }
+      else
+      {
+        while ($repo = array_shift($repositoryAccess))
+        {
+          if ('*' != $repo['id'])
+          {
+            $repositoryList[] = $repo['id'];
+          }
+          else
+          {
+            if (QubitAcl::DENY == $repo['access'])
+            {
+              // Require repos to be specifically allowed (all others 
prohibited)
+              $criteria->add(QubitRepository::ID, $repositoryList + 
array('null'), Criteria::IN);
+            }
+            else
+            {
+              // Prohibit specified repos (all others allowed)
+              $criteria->add(QubitRepository::ID, $repositoryList, 
Criteria::NOT_IN);
+            }
+          }
+        }
+      }
 
-      $criteria->add(QubitRepository::ID, $deniedRepositories, 
Criteria::NOT_IN);
     }
 
     $this->repositories = QubitRepository::get($criteria);

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Qubit Toolkit Commits" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.ca/group/qubit-commits?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to