/**
  * 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);
 }