diff options
| author | foobar <sniper@php.net> | 2000-07-26 11:01:44 +0000 |
|---|---|---|
| committer | foobar <sniper@php.net> | 2000-07-26 11:01:44 +0000 |
| commit | 123d745249307ae229233a07a31381e4df65210f (patch) | |
| tree | de5cc0bd7a3ee91e7627d82c82617bb1423f6acf /ext/ldap/ldap.c | |
| parent | 69a075136f30609ce67e7a51b8e44a34b505af15 (diff) | |
| download | php-git-123d745249307ae229233a07a31381e4df65210f.tar.gz | |
@- Added new function: ldap_compare(). (Jani)
# Documentation is coming right after this.
Diffstat (limited to 'ext/ldap/ldap.c')
| -rw-r--r-- | ext/ldap/ldap.c | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/ext/ldap/ldap.c b/ext/ldap/ldap.c index 4946b6f6cd..78c4f12d1d 100644 --- a/ext/ldap/ldap.c +++ b/ext/ldap/ldap.c @@ -90,6 +90,7 @@ function_entry ldap_functions[] = { PHP_FE(ldap_errno, NULL) PHP_FE(ldap_err2str, NULL) PHP_FE(ldap_error, NULL) + PHP_FE(ldap_compare, NULL) {NULL, NULL, NULL} }; @@ -1367,3 +1368,47 @@ PHP_FUNCTION(ldap_error) { RETURN_STRING(ldap_err2string(ld_errno), 1); } /* }}} */ + + +/* {{{ proto int ldap_compare(int link, string dn, string attr, string value) + Determine if an entry has a specific value for one of its attributes. */ +PHP_FUNCTION(ldap_compare) { + pval **link, **dn, **attr, **value; + char *ldap_dn, *ldap_attr, *ldap_value; + LDAP *ldap; + int errno; + + if (ZEND_NUM_ARGS() != 4 || zend_get_parameters_ex(4, &link, &dn, &attr, &value) == FAILURE) { + WRONG_PARAM_COUNT; + } + + convert_to_string_ex(link); + ldap = _get_ldap_link(link); + if (ldap == NULL) RETURN_LONG(-1); + + convert_to_string_ex(dn); + convert_to_string_ex(attr); + convert_to_string_ex(value); + + ldap_dn = (*dn)->value.str.val; + ldap_attr = (*attr)->value.str.val; + ldap_value = (*value)->value.str.val; + + errno = ldap_compare_s(ldap, ldap_dn, ldap_attr, ldap_value); + + switch(errno) { + case LDAP_COMPARE_TRUE : + RETURN_TRUE; + break; + + case LDAP_COMPARE_FALSE : + RETURN_FALSE; + break; + } + + php_error(E_WARNING, "LDAP: Compare operation could not be completed: %s", ldap_err2string(errno)); + RETURN_LONG(-1); + +} +/* }}} */ + |
