/** * redefine required grants for get actions * * @param Tinebase_Model_Filter_FilterGroup $_filter * @param string $_action get|update */ public function checkFilterACL(Tinebase_Model_Filter_FilterGroup $_filter, $_action = 'get') { $hasGrantsFilter = FALSE; foreach ($_filter->getAclFilters() as $aclFilter) { if ($aclFilter instanceof Calendar_Model_GrantFilter) { $hasGrantsFilter = TRUE; break; } } if (!$hasGrantsFilter) { // force a grant filter // NOTE: actual grants are set via setRequiredGrants later $grantsFilter = $_filter->createFilter('grants', 'in', '@setRequiredGrants'); $_filter->addFilter($grantsFilter); } parent::checkFilterACL($_filter, $_action); if ($_action == 'get') { $_filter->setRequiredGrants(array(Tinebase_Model_Grants::GRANT_FREEBUSY, Tinebase_Model_Grants::GRANT_READ, Tinebase_Model_Grants::GRANT_ADMIN)); } }