summaryrefslogtreecommitdiff
path: root/ext/ldap/ldap.c
diff options
context:
space:
mode:
authorfoobar <sniper@php.net>2000-07-26 11:01:44 +0000
committerfoobar <sniper@php.net>2000-07-26 11:01:44 +0000
commit123d745249307ae229233a07a31381e4df65210f (patch)
treede5cc0bd7a3ee91e7627d82c82617bb1423f6acf /ext/ldap/ldap.c
parent69a075136f30609ce67e7a51b8e44a34b505af15 (diff)
downloadphp-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.c45
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);
+
+}
+/* }}} */
+