/** * resolves a record * * @param string $value * @return array|string */ protected function _resolveRecord($value) { if ($value === Addressbook_Model_Contact::CURRENTCONTACT) { $contact = Addressbook_Controller_Contact::getInstance()->getContactByUserId(Tinebase_Core::getUser()->getId(), TRUE)->toArray(); } else { $contact = parent::_resolveRecord($value); } return $contact; }
/** * add path custom filter * * @param Zend_Db_Select $_select * @param Felamimail_Backend_Cache_Sql_Message $_backend * @param array $_filterData * @return void */ protected function _addPathSql($_select, $_backend, $_filterData) { $db = $_backend->getAdapter(); $folderIds = array(); foreach ((array) $_filterData['value'] as $filterValue) { if (empty($filterValue)) { $_select->where('1 = 0'); } else { if ($filterValue === self::PATH_ALLINBOXES) { $folderIds = array_merge($folderIds, $this->_getFolderIdsOfAllInboxes()); } else { if (strpos($filterValue, '/') !== FALSE) { $pathParts = explode('/', $filterValue); array_shift($pathParts); if (count($pathParts) == 1) { // we only have an account id $this->_addAccountFilter($_select, $_backend, (array) $pathParts[0]); } else { if (count($pathParts) > 1) { $folderIds[] = array_pop($pathParts); } } } } } } if (count($folderIds) > 0) { $folderFilter = new Tinebase_Model_Filter_Id('folder_id', $_filterData['operator'], array_unique($folderIds)); $folderFilter->appendFilterSql($_select, $_backend); } }
/** * (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); }