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