/**
  * (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);
 }
 /**
  * returns record prepared for json transport
  *
  * @param Tinebase_Record_Interface $_record
  * @return array record data
  */
 protected function _recordToJson($_record)
 {
     switch (get_class($_record)) {
         case 'Sipgate_Model_Account':
             $filter = new Sipgate_Model_LineFilter(array(), 'AND');
             $filter->addFilter(new Tinebase_Model_Filter_Id(array('field' => 'account_id', 'operator' => 'equals', 'value' => $_record->id)));
             $_record->lines = $this->_multipleRecordsToJson(Sipgate_Controller_Line::getInstance()->search($filter));
             break;
         case 'Sipgate_Model_Line':
             Tinebase_User::getInstance()->resolveUsers($_record, $this->_resolveUserFields['Sipgate_Model_Line']);
             $_record->account_id = Sipgate_Controller_Account::getInstance()->get($_record->account_id);
             break;
     }
     return parent::_recordToJson($_record);
 }
 /**
  * inspects delete action
  *
  * @param array $_ids
  * @return array of ids to actually delete
  */
 protected function _inspectDelete(array $_ids)
 {
     if (!is_array($_ids)) {
         $_ids = array($_ids);
     }
     $filter = new Sipgate_Model_LineFilter(array(), 'OR');
     foreach ($_ids as $id) {
         $filter->addFilter(new Tinebase_Model_Filter_Text(array('field' => 'account_id', 'operator' => 'equals', 'value' => $id)));
     }
     Sipgate_Controller_Line::getInstance()->deleteByFilter($filter);
     return $_ids;
 }