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