/** * (non-PHPdoc) * @see Tinebase_Controller_Record_Abstract::_addDefaultFilter() */ protected function _addDefaultFilter(Tinebase_Model_Filter_FilterGroup $_filter = NULL) { $manageShared = Tinebase_Core::getUser()->hasRight('Sipgate', Sipgate_Acl_Rights::MANAGE_SHARED_ACCOUNTS); $managePrivate = Tinebase_Core::getUser()->hasRight('Sipgate', Sipgate_Acl_Rights::MANAGE_PRIVATE_ACCOUNTS); $manage = Tinebase_Core::getUser()->hasRight('Sipgate', Sipgate_Acl_Rights::MANAGE_ACCOUNTS); $fg = new Sipgate_Model_LineFilter(array(), 'OR'); // fetch all assignes lines $my = new Tinebase_Model_Filter_Id(array('field' => 'user_id', 'operator' => 'equals', 'value' => Tinebase_Core::getUser()->getId())); $my->setIsImplicit(true); $fg->addFilter($my); if ($manage) { // fetch all private accounts of the user himself if ($managePrivate) { $accountFilter = new Sipgate_Model_AccountFilter(array(), 'AND'); $accountFilter->addFilter(new Tinebase_Model_Filter_Text(array('field' => 'type', 'operator' => 'equals', 'value' => 'private'))); $r = Sipgate_Controller_Account::getInstance()->search($accountFilter); if ($r->count()) { $f = new Tinebase_Model_Filter_Id(array('field' => 'account_id', 'operator' => 'in', 'value' => $r->id)); $f->setIsImplicit(true); $fg->addFilter($f); } } // fetch shared accounts if ($manageShared) { $accountFilter = new Sipgate_Model_AccountFilter(array(), 'AND'); $accountFilter->addFilter(new Tinebase_Model_Filter_Text(array('field' => 'type', 'operator' => 'equals', 'value' => 'shared'))); $r = Sipgate_Controller_Account::getInstance()->searchRightsLess($accountFilter); if ($r->count()) { $f = new Tinebase_Model_Filter_Id(array('field' => 'account_id', 'operator' => 'in', 'value' => $r->id)); $f->setIsImplicit(true); $fg->addFilter($f); } } } $_filter->addFiltergroup($fg); }