示例#1
0
 public function testFilterCreation()
 {
     $f1 = Zend_Ldap_Filter::equals('name', 'value');
     $this->assertEquals('(name=value)', $f1->toString());
     $f2 = Zend_Ldap_Filter::begins('name', 'value');
     $this->assertEquals('(name=value*)', $f2->toString());
     $f3 = Zend_Ldap_Filter::ends('name', 'value');
     $this->assertEquals('(name=*value)', $f3->toString());
     $f4 = Zend_Ldap_Filter::contains('name', 'value');
     $this->assertEquals('(name=*value*)', $f4->toString());
     $f5 = Zend_Ldap_Filter::greater('name', 'value');
     $this->assertEquals('(name>value)', $f5->toString());
     $f6 = Zend_Ldap_Filter::greaterOrEqual('name', 'value');
     $this->assertEquals('(name>=value)', $f6->toString());
     $f7 = Zend_Ldap_Filter::less('name', 'value');
     $this->assertEquals('(name<value)', $f7->toString());
     $f8 = Zend_Ldap_Filter::lessOrEqual('name', 'value');
     $this->assertEquals('(name<=value)', $f8->toString());
     $f9 = Zend_Ldap_Filter::approx('name', 'value');
     $this->assertEquals('(name~=value)', $f9->toString());
     $f10 = Zend_Ldap_Filter::any('name');
     $this->assertEquals('(name=*)', $f10->toString());
     $f11 = Zend_Ldap_Filter::string('name=*value*value*');
     $this->assertEquals('(name=*value*value*)', $f11->toString());
     $f12 = Zend_Ldap_Filter::mask('(&(objectClass=account)(uid=%s))', 'a*b(b)d\\e/f');
     $this->assertEquals('(&(objectClass=account)(uid=a\\2ab\\28b\\29d\\5ce/f))', $f12->toString());
 }
 /**
  * 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'));
     //         }
 }
示例#3
0
 /**
  * Returns a condition statement string based on given field identifier and clause(s)
  * 
  * @param string	$field
  * @param array		$clauses
  * @param string 	$mode
  * @return string
  */
 protected function _buildConditionStatement($field, array $clauses, $mode = 'AND')
 {
     $statements = array();
     foreach ($clauses as $key => $clause) {
         $prefix = $suffix = null;
         $ops = $this->_matchOperator($clause['operator']);
         $value = $clause['value'];
         if (in_array(Backend\Condition::OPERATOR_BEGINSWITH, $ops)) {
             $value .= '*';
             $filter = \Zend_Ldap_Filter::begins($field, $value);
         }
         if (in_array(Backend\Condition::OPERATOR_ENDSWITH, $ops)) {
             $value = '*' . $value;
             if ($filter instanceof \Zend_Ldap_Filter) {
                 $filter = \Zend_Ldap_Filter::contains($field, $value);
             } else {
                 $filter = \Zend_Ldap_Filter::ends($field, $value);
             }
         }
         if (in_array(Backend\Condition::OPERATOR_DIFF, $ops)) {
             $prefix = '(!';
             $suffix = ')';
         }
         /* if value is an t41_Object_Model-derivated object, use its uri to get id value
          * 
          * @todo set a better way to check that a t41_Object_Uri contains a given t41_Backend_Uri/alias
          *
          * @var $value t41_Object_Model
          */
         if ($value instanceof ObjectModel\BaseObject) {
             throw new Exception("LDAP Adapter doesn't support conditions which value is an object: " . $field);
         }
         $operator = '=';
         $statements[] = sprintf('%s(%s%s%s)%s', $prefix, $field, $operator, $value, $suffix);
     }
     return implode($statements);
 }