/**
  * appends sql to given select statement
  *
  * @param Zend_Db_Select                $_select
  * @param Tinebase_Backend_Sql_Abstract $_backend
  */
 public function appendFilterSql($_select, $_backend)
 {
     $db = Tinebase_Core::getDb();
     if (!is_array($this->_foreignIdsP1)) {
         $this->_foreignIdsP1 = $this->_controllerP1->search($this->_filterGroupP1, new Tinebase_Model_Pagination(), FALSE, TRUE);
     }
     $filters = array(array('field' => 'contact_id', 'operator' => 'AND', 'value' => array(array('field' => 'id', 'operator' => 'in', 'value' => $this->_foreignIdsP1))));
     $this->_filterGroup = new $this->_options['filtergroup']($filters);
     if (!is_array($this->_foreignIds)) {
         $this->_foreignIds = $this->_controller->search($this->_filterGroup, new Tinebase_Model_Pagination(), FALSE, TRUE);
     }
     $_select->where('bill_open_item.debitor_id' . ' IN (?)', empty($this->_foreignIds) ? array('') : $this->_foreignIds);
 }
 /**
  * get records and resolve fields
  *
  * @return Tinebase_Record_RecordSet
  */
 protected function _getRecords()
 {
     $pagination = !empty($this->_options['sortInfo']) ? new Tinebase_Model_Pagination($this->_options['sortInfo']) : new Tinebase_Model_Pagination();
     if ($this->_recordIds === NULL) {
         // need to fetch record ids first because filtered fields can change during iteration step
         if (Tinebase_Core::isLogLevel(Zend_Log::TRACE)) {
             Tinebase_Core::getLogger()->trace(__METHOD__ . '::' . __LINE__ . ' Getting record ids using filter: ' . print_r($this->_filter->toArray(), TRUE) . ' and pagination: ' . print_r($pagination->toArray(), true));
         }
         $this->_recordIds = $this->_controller->search($this->_filter, $pagination, FALSE, TRUE, $this->_options['searchAction']);
         $this->_totalCount = count($this->_recordIds);
         if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) {
             Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' Found ' . $this->_totalCount . ' total records to process.');
         }
         if (empty($this->_recordIds)) {
             return new Tinebase_Record_RecordSet($this->_filter->getModelName());
         }
     }
     // get records by filter (ensure acl)
     $filterClassname = get_class($this->_filter);
     $recordIdsForIteration = array_splice($this->_recordIds, 0, $this->_options['limit']);
     $idFilter = new $filterClassname(array(array('field' => isset($this->_options['idProperty']) || array_key_exists('idProperty', $this->_options) ? $this->_options['idProperty'] : 'id', 'operator' => 'in', 'value' => $recordIdsForIteration)));
     $records = $this->_controller->search($idFilter, $pagination, $this->_options['getRelations']);
     if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) {
         Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' Got ' . count($records) . ' for next iteration.');
     }
     return $records;
 }
 /**
  * get list of records
  *
  * @param Tinebase_Model_Filter_FilterGroup|optional $_filter
  * @param Tinebase_Model_Pagination|optional $_pagination
  * @param boolean $_getRelations
  * @param boolean $_onlyIds
  * @param string $_action for right/acl check
  * @return Tinebase_Record_RecordSet|array
  */
 public function search(Tinebase_Model_Filter_FilterGroup $_filter = NULL, Tinebase_Record_Interface $_pagination = NULL, $_getRelations = FALSE, $_onlyIds = FALSE, $_action = 'get')
 {
     $result = parent::search($_filter, $_pagination, $_getRelations, $_onlyIds, $_action);
     // @todo allow to configure if grants are needed
     $this->_getGrants($result);
     return $result;
 }
 /**
  * search for leads
  *
  * @param Tinebase_Model_Filter_FilterGroup $_filter
  * @param Tinebase_Record_Interface $_pagination
  * @param boolean $_getRelations
  * @param boolean $_onlyIds
  * @param string $_action for right/acl check
  * @return Tinebase_Record_RecordSet
  */
 public function search(Tinebase_Model_Filter_FilterGroup $_filter = NULL, Tinebase_Record_Interface $_pagination = NULL, $_getRelations = FALSE, $_onlyIds = FALSE, $_action = 'get')
 {
     $leads = parent::search($_filter, $_pagination, $_getRelations, $_onlyIds, $_action);
     if ($_getRelations) {
         $leads->setByIndices('relations', Tinebase_Relations::getInstance()->getMultipleRelations($this->_modelName, $this->_backend->getType(), $leads->getId(), NULL, array('CUSTOMER', 'PARTNER', 'TASK', 'RESPONSIBLE', 'PRODUCT'), FALSE, $_getRelations));
     }
     return $leads;
 }
Пример #5
0
 /**
  * get id's of all entries available on the server
  *
  * @param string $_folderId
  * @param int $_filterType
  * @return array
  */
 public function getServerEntries($_folderId, $_filterType)
 {
     $filter = $this->_getContentFilter($_filterType);
     $this->_addContainerFilter($filter, $_folderId);
     if (!empty($this->_sortField)) {
         $pagination = new Tinebase_Model_Pagination(array('sort' => $this->_sortField));
     } else {
         $pagination = null;
     }
     //if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . " assembled {$this->_contentFilterClass}: " . print_r($filter->toArray(), TRUE));
     $result = $this->_contentController->search($filter, $pagination, false, true, 'sync');
     return $result;
 }
 /**
  * 
  * @param  string  $folderId
  * @param  int     $filterType
  * @return Tinebase_Record_RecordSet
  */
 public function getServerEntries($folderId, $filterType)
 {
     $maxFilterType = $this->getMaxFilterType();
     if ($maxFilterType !== Syncroton_Command_Sync::FILTER_NOTHING) {
         if ($filterType === Syncroton_Command_Sync::FILTER_NOTHING || $maxFilterType < $filterType) {
             $filterType = $maxFilterType;
         }
     }
     $filter = $this->_getContentFilter($filterType);
     $this->_addContainerFilter($filter, $folderId);
     if (!empty($this->_sortField)) {
         $pagination = new Tinebase_Model_Pagination(array('sort' => $this->_sortField));
     } else {
         $pagination = null;
     }
     if (Tinebase_Core::isLogLevel(Zend_Log::TRACE)) {
         Tinebase_Core::getLogger()->trace(__METHOD__ . '::' . __LINE__ . " Assembled {$this->_contentFilterClass}: " . print_r($filter->toArray(), TRUE));
     }
     $result = $this->_contentController->search($filter, $pagination, false, true, 'sync');
     return $result;
 }
 /**
  * search for duplicates
  * 
  * @param Tinebase_Controller_Record_Interface $_controller
  * @param  Tinebase_Model_Filter_FilterGroup
  * @param string $_field
  * @return array with ids / field
  * 
  * @todo add more options (like soundex, what do do with duplicates/delete/merge them, ...)
  */
 protected function _searchDuplicates(Tinebase_Controller_Record_Abstract $_controller, $_filter, $_field)
 {
     $pagination = new Tinebase_Model_Pagination(array('start' => 0, 'limit' => 100));
     $results = array();
     $allRecords = array();
     $totalCount = $_controller->searchCount($_filter);
     echo 'Searching ' . $totalCount . " record(s) for duplicates\n";
     while ($pagination->start < $totalCount) {
         $records = $_controller->search($_filter, $pagination);
         foreach ($records as $record) {
             if (in_array($record->{$_field}, $allRecords)) {
                 $allRecordsFlipped = array_flip($allRecords);
                 $duplicateId = $allRecordsFlipped[$record->{$_field}];
                 $results[] = array('id' => $duplicateId, 'value' => $record->{$_field});
                 $results[] = array('id' => $record->getId(), 'value' => $record->{$_field});
             }
             $allRecords[$record->getId()] = $record->{$_field};
         }
         $pagination->start += 100;
     }
     return $results;
 }
 /**
  * (non-PHPdoc)
  * @see Tinebase_Controller_Record_Abstract::search()
  */
 public function search(Tinebase_Model_Filter_FilterGroup $_filter = NULL, Tinebase_Record_Interface $_pagination = NULL, $_getRelations = FALSE, $_onlyIds = FALSE, $_action = 'get')
 {
     $result = parent::search($_filter, $_pagination, $_getRelations, $_onlyIds, $_action);
     if ($_onlyIds !== true) {
         $this->_removeHiddenListMembers($result);
     }
     return $result;
 }
Пример #9
0
 /**
  * get list of records
  *
  * @param Tinebase_Model_Filter_FilterGroup|optional $_filter
  * @param Tinebase_Model_Pagination|optional $_pagination
  * @param boolean $_getRelations
  * @param boolean $_onlyIds
  * @param string $_action for right/acl check
  * @return Tinebase_Record_RecordSet|array
  */
 public function search(Tinebase_Model_Filter_FilterGroup $_filter = NULL, Tinebase_Record_Interface $_pagination = NULL, $_getRelations = FALSE, $_onlyIds = FALSE, $_action = 'get')
 {
     if ($_filter === NULL) {
         $_filter = new Felamimail_Model_AccountFilter(array());
     }
     $result = parent::search($_filter, $_pagination, $_getRelations, $_onlyIds, $_action);
     // check preference / config if we should add system account with tine user credentials or from config.inc.php
     if ($this->_useSystemAccount && !$_onlyIds) {
         $systemAccountFound = FALSE;
         // check if resultset contains system account and add config values
         foreach ($result as $account) {
             if ($account->type == Felamimail_Model_Account::TYPE_SYSTEM) {
                 $this->_addSystemAccountConfigValues($account);
                 $systemAccountFound = TRUE;
             }
         }
         if (!$systemAccountFound) {
             $this->_addSystemAccount($result);
         }
     }
     return $result;
 }
 /**
  * get list of records
  *
  * @param Tinebase_Model_Filter_FilterGroup $_filter
  * @param Tinebase_Model_Pagination $_pagination
  * @param boolean $_getRelations
  * @param boolean $_onlyIds
  * @param string $_action for right/acl check
  * @return Tinebase_Record_RecordSet|array
  */
 public function search(Tinebase_Model_Filter_FilterGroup $_filter = NULL, Tinebase_Model_Pagination $_pagination = NULL, $_getRelations = FALSE, $_onlyIds = FALSE, $_action = 'get')
 {
     $_filter->setId('OuterFilter');
     return parent::search($_filter, $_pagination, $_getRelations, $_onlyIds, $_action);
 }
 /**
  * get list of records
  *
  * @param Tinebase_Model_Filter_FilterGroup|optional $_filter
  * @param Tinebase_Model_Pagination|optional $_pagination
  * @param boolean $_getRelations
  * @param boolean $_onlyIds
  * @param string $_action for right/acl check
  * @return Tinebase_Record_RecordSet|array
  */
 public function search(Tinebase_Model_Filter_FilterGroup $_filter = NULL, Tinebase_Record_Interface $_pagination = NULL, $_getRelations = FALSE, $_onlyIds = FALSE, $_action = 'get')
 {
     if ($_filter === NULL) {
         $_filter = new Expressomail_Model_AccountFilter(array());
     }
     $params = array('Expressomail_Controller_Account_search', Tinebase_Core::getUser()->accountId, $_filter->toArray());
     $cacheId = Tinebase_Helper::arrayHash($params);
     $cache = Tinebase_Core::getCache();
     if ($cache->test($cacheId)) {
         $result = $cache->load($cacheId);
         return $result;
     }
     $result = parent::search($_filter, $_pagination, $_getRelations, $_onlyIds, $_action);
     // check preference / config if we should add system account with tine user credentials or from config.inc.php
     if ($this->_useSystemAccount && !$_onlyIds) {
         $systemAccountFound = FALSE;
         // check if resultset contains system account and add config values
         foreach ($result as $account) {
             if ($account->type == Expressomail_Model_Account::TYPE_SYSTEM) {
                 $this->_addSystemAccountConfigValues($account);
                 $systemAccountFound = TRUE;
             }
         }
         if (!$systemAccountFound) {
             $this->_addSystemAccount($result);
         }
     }
     $cache->save($result, $cacheId);
     return $result;
 }
 /**
  * get list of records
  *
  * @param Tinebase_Model_Filter_FilterGroup $_filter
  * @param Tinebase_Model_Pagination $_pagination
  * @param boolean $_getRelations
  * @param boolean $_onlyIds
  * @param string $_action for right/acl check
  * @return Tinebase_Record_RecordSet|array
  */
 public function search(Tinebase_Model_Filter_FilterGroup $_filter = NULL, Tinebase_Model_Pagination $_pagination = NULL, $_getRelations = FALSE, $_onlyIds = FALSE, $_action = 'get')
 {
     if ($_filter === NULL) {
         $_filter = new Expressomail_Model_AccountFilter(array());
     }
     $cacheId = $this->_createExpressomailControllerAccountSearchCacheId($_filter);
     $cache = Tinebase_Core::getCache();
     if ($cache->test($cacheId)) {
         $result = $cache->load($cacheId);
         return $result;
     }
     $result = parent::search($_filter, $_pagination, $_getRelations, $_onlyIds, $_action);
     // check preference / config if we should add system account with tine user credentials or from config.inc.php
     if ($this->_useSystemAccount && !$_onlyIds) {
         $systemAccountFound = FALSE;
         // check if resultset contains system account and add config values
         foreach ($result as $account) {
             if ($account->type == Expressomail_Model_Account::TYPE_SYSTEM) {
                 $this->_addSystemAccountConfigValues($account);
                 $systemAccountFound = TRUE;
             }
         }
         if (!$systemAccountFound) {
             $this->_addSystemAccount($result);
         }
         if ($this->resolveCustomfields()) {
             Tinebase_CustomField::getInstance()->resolveMultipleCustomfields($result);
         }
     }
     $cache->save($result, $cacheId);
     return $result;
 }
 /**
  * get list of records
  *
  * @param Tinebase_Model_Filter_FilterGroup|optional    $_filter
  * @param Tinebase_Model_Pagination|optional            $_pagination
  * @param bool                                          $_getRelations
  * @param boolean                                       $_onlyIds
  * @param string                                        $_action for right/acl check
  * @return Tinebase_Record_RecordSet|array
  */
 public function search(Tinebase_Model_Filter_FilterGroup $_filter = NULL, Tinebase_Record_Interface $_pagination = NULL, $_getRelations = FALSE, $_onlyIds = FALSE, $_action = 'get')
 {
     $events = parent::search($_filter, $_pagination, $_getRelations, $_onlyIds, $_action);
     if (!$_onlyIds) {
         $this->_freeBusyCleanup($events, $_action);
     }
     return $events;
 }
 /**
  * get list of access log entries
  *
  * @param Tinebase_Model_Filter_FilterGroup|optional $_filter
  * @param Tinebase_Model_Pagination|optional $_pagination
  * @param boolean $_getRelations
  * @param boolean $_onlyIds
  * @param string $_action for right/acl check
  * @return Tinebase_Record_RecordSet|array
  */
 public function search(Tinebase_Model_Filter_FilterGroup $_filter = NULL, Tinebase_Record_Interface $_pagination = NULL, $_getRelations = FALSE, $_onlyIds = FALSE, $_action = 'get')
 {
     $this->checkRight('MANAGE_DEVICES');
     return parent::search($_filter, $_pagination, $_getRelations, $_onlyIds, $_action);
 }