示例#1
0
 public function testGroupingFilter()
 {
     $f1 = Zend_Ldap_Filter::equals('name', 'value');
     $f2 = Zend_Ldap_Filter::begins('name', 'value');
     $f3 = Zend_Ldap_Filter::ends('name', 'value');
     $f4 = Zend_Ldap_Filter::andFilter($f1, $f2, $f3);
     $f5 = Zend_Ldap_Filter::orFilter($f1, $f2, $f3);
     $this->assertEquals('(&(name=value)(name=value*)(name=*value))', $f4->toString());
     $this->assertEquals('(|(name=value)(name=value*)(name=*value))', $f5->toString());
     $f4 = $f4->addFilter($f1);
     $this->assertEquals('(&(name=value)(name=value*)(name=*value)(name=value))', $f4->toString());
 }
示例#2
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);
 }