Author: david
Date: Tue Sep 29 14:12:07 2009
New Revision: 3596

Log:
Filter draft objects by repository.

Modified:
   trunk/apps/qubit/modules/informationobject/actions/listAction.class.php

Modified: 
trunk/apps/qubit/modules/informationobject/actions/listAction.class.php
==============================================================================
--- trunk/apps/qubit/modules/informationobject/actions/listAction.class.php     
Tue Sep 29 13:54:02 2009        (r3595)
+++ trunk/apps/qubit/modules/informationobject/actions/listAction.class.php     
Tue Sep 29 14:12:07 2009        (r3596)
@@ -81,12 +81,6 @@
       $query = $request->query;
     }
 
-    // Filter out 'draft' items by repository
-    if (!QubitAcl::check(QubitInformationObject::getRoot(), 
QubitAclAction::VIEW_DRAFT_ID))
-    {
-      $query->addSubquery(new Zend_Search_Lucene_Search_Query_Term(new 
Zend_Search_Lucene_Index_Term(QubitTerm::PUBLICATION_STATUS_DRAFT_ID, 
'publicationStatusId')), false);
-    }
-
     // Filter out objects in forbidden repositories (no read access)
     if (0 < count($deniedRepositories = 
QubitAcl::deniedRepositories(QubitInformationObject::getRoot(), 
QubitAclAction::READ_ID)))
     {
@@ -105,13 +99,41 @@
         }
       }
 
-      $subquery1 = new Zend_Search_Lucene_Search_Query_MultiTerm();
+      $subquery = new Zend_Search_Lucene_Search_Query_MultiTerm();
       foreach ($deniedRepositories as $repositoryId)
       {
-        $subquery1->addTerm(new Zend_Search_Lucene_Index_Term($repositoryId, 
'repositoryid'));
+        $subquery->addTerm(new Zend_Search_Lucene_Index_Term($repositoryId, 
'repositoryid'));
+      }
+
+      $query->addSubquery($subquery, false /* prohibited */);
+    }
+
+    // Filter out 'draft' items by repository
+    $deniedStatusRepos = 
QubitAcl::deniedRepositories(QubitInformationObject::getRoot(), 
QubitAclAction::VIEW_DRAFT_ID);
+    if (0 < count($deniedStatusRepos))
+    {
+      if (array('*') == $deniedStatusRepos)
+      {
+        // Don't show *any* draft info objects
+        $query->addSubquery(new Zend_Search_Lucene_Search_Query_Term(new 
Zend_Search_Lucene_Index_Term(QubitTerm::PUBLICATION_STATUS_DRAFT_ID, 
'publicationStatusId')), false);
       }
+      else
+      {
+        $subquery = new Zend_Search_Lucene_Search_Query_MultiTerm();
+        foreach ($deniedStatusRepos as $repositoryId)
+        {
+          // Don't bother excluding repos (again) that have no read access at 
all
+          if (in_array($repositoryId, $deniedRepositories))
+          {
+            continue;
+          }
+
+          $subquery->addTerm(new Zend_Search_Lucene_Index_Term($repositoryId, 
'repositoryid'), true);
+          $subquery->addTerm(new 
Zend_Search_Lucene_Index_Term(QubitTerm::PUBLICATION_STATUS_DRAFT_ID, 
'publicationStatusId'), true);
+        }
 
-      $query->addSubquery($subquery1, false /* prohibited */);
+        $query->addSubquery($subquery, false /* prohibited */);
+      }
     }
 
     $this->pager = new QubitSearchPager;

--~--~---------~--~----~------------~-------~--~----~
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