/**
  * get list of users
  *
  * @param string $_filter
  * @param string $_sort
  * @param string $_dir
  * @param int $_start
  * @param int $_limit
  * @param string $_accountClass the type of subclass for the Tinebase_Record_RecordSet to return
  * @return Tinebase_Record_RecordSet with record class Tinebase_Model_User
  */
 public function getUsersFromSyncBackend($_filter = NULL, $_sort = NULL, $_dir = 'ASC', $_start = NULL, $_limit = NULL, $_accountClass = 'Tinebase_Model_User')
 {
     $filter = $this->_getBaseFilter();
     if (!empty($_filter)) {
         $filter = $filter->addFilter(Zend_Ldap_Filter::orFilter(Zend_Ldap_Filter::contains($this->_rowNameMapping['accountFirstName'], Zend_Ldap::filterEscape($_filter)), Zend_Ldap_Filter::contains($this->_rowNameMapping['accountLastName'], Zend_Ldap::filterEscape($_filter)), Zend_Ldap_Filter::contains($this->_rowNameMapping['accountLoginName'], Zend_Ldap::filterEscape($_filter))));
     }
     $accounts = $this->_ldap->search($filter, $this->_baseDn, $this->_userSearchScope, array_values($this->_rowNameMapping), $_sort !== null ? $this->_rowNameMapping[$_sort] : null);
     $result = new Tinebase_Record_RecordSet($_accountClass);
     // nothing to be done anymore
     if (count($accounts) == 0) {
         return $result;
     }
     foreach ($accounts as $account) {
         $accountObject = $this->_ldap2User($account, $_accountClass);
         if ($accountObject) {
             $result->addRecord($accountObject);
         }
     }
     return $result;
     // @todo implement limit, start, dir and status
     //         $select = $this->_getUserSelectObject()
     //             ->limit($_limit, $_start);
     //         if ($_sort !== NULL) {
     //             $select->order($this->rowNameMapping[$_sort] . ' ' . $_dir);
     //         }
     //         // return only active users, when searching for simple users
     //         if ($_accountClass == 'Tinebase_Model_User') {
     //             $select->where($this->_db->quoteInto($this->_db->quoteIdentifier('status') . ' = ?', 'enabled'));
     //         }
 }
示例#2
0
 public function testRealFilterString()
 {
     $f1 = Zend_Ldap_Filter::orFilter(Zend_Ldap_Filter::equals('sn', 'Gehrig'), Zend_Ldap_Filter::equals('sn', 'Goerke'));
     $f2 = Zend_Ldap_Filter::orFilter(Zend_Ldap_Filter::equals('givenName', 'Stefan'), Zend_Ldap_Filter::equals('givenName', 'Ingo'));
     $f = Zend_Ldap_Filter::andFilter($f1, $f2);
     $this->assertEquals('(&(|(sn=Gehrig)(sn=Goerke))(|(givenName=Stefan)(givenName=Ingo)))', $f->toString());
 }
示例#3
0
 /**
  * get groupmemberships of user from sync backend
  * 
  * @param   Tinebase_Model_User|string  $_userId
  * @return  array  list of group ids
  */
 public function getGroupMembershipsFromSyncBackend($_userId)
 {
     $metaData = $this->_getUserMetaData($_userId);
     $filter = Zend_Ldap_Filter::andFilter(Zend_Ldap_Filter::string($this->_groupBaseFilter), Zend_Ldap_Filter::orFilter(Zend_Ldap_Filter::equals('memberuid', Zend_Ldap::filterEscape($metaData['uid'][0])), Zend_Ldap_Filter::equals('member', Zend_Ldap::filterEscape($metaData['dn']))));
     if (Tinebase_Core::isLogLevel(Zend_Log::TRACE)) {
         Tinebase_Core::getLogger()->trace(__METHOD__ . '::' . __LINE__ . ' ldap search filter: ' . $filter);
     }
     $groups = $this->_ldap->search($filter, $this->_options['groupsDn'], $this->_groupSearchScope, array('cn', 'description', $this->_groupUUIDAttribute));
     $memberships = array();
     foreach ($groups as $group) {
         $memberships[] = $group[$this->_groupUUIDAttribute][0];
     }
     if (Tinebase_Core::isLogLevel(Zend_Log::TRACE)) {
         Tinebase_Core::getLogger()->trace(__METHOD__ . '::' . __LINE__ . ' group memberships: ' . print_r($memberships, TRUE));
     }
     return $memberships;
 }