cvs: php4 /ext/ldap ldap.c php_ldap.h

From: Date: Mon, 08 Jan 2001 18:13:08 +0000
Subject: cvs: php4 /ext/ldap ldap.c php_ldap.h
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-3477@lists.php.net to get a copy of this message
venaas Mon Jan 8 10:13:08 2001 EDT Modified files: /php4/ext/ldap php_ldap.h ldap.c Log: Added ldap_rename(). Currently requires API with ldap_rename(). @- Added ldap_rename() function (Stig Venaas) Index: php4/ext/ldap/php_ldap.h diff -u php4/ext/ldap/php_ldap.h:1.14 php4/ext/ldap/php_ldap.h:1.15 --- php4/ext/ldap/php_ldap.h:1.14 Sun Jan 7 05:03:11 2001 +++ php4/ext/ldap/php_ldap.h Mon Jan 8 10:13:08 2001 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_ldap.h,v 1.14 2001/01/07 13:03:11 venaas Exp $ */ +/* $Id: php_ldap.h,v 1.15 2001/01/08 18:13:08 venaas Exp $ */ #ifndef PHP_LDAP_H #define PHP_LDAP_H @@ -88,6 +88,7 @@ PHP_FUNCTION(ldap_first_reference); PHP_FUNCTION(ldap_next_reference); PHP_FUNCTION(ldap_parse_reference); +PHP_FUNCTION(ldap_rename); #endif #ifdef STR_TRANSLATION Index: php4/ext/ldap/ldap.c diff -u php4/ext/ldap/ldap.c:1.76 php4/ext/ldap/ldap.c:1.77 --- php4/ext/ldap/ldap.c:1.76 Sun Jan 7 13:18:02 2001 +++ php4/ext/ldap/ldap.c Mon Jan 8 10:13:08 2001 @@ -23,7 +23,7 @@ */ -/* $Id: ldap.c,v 1.76 2001/01/07 21:18:02 venaas Exp $ */ +/* $Id: ldap.c,v 1.77 2001/01/08 18:13:08 venaas Exp $ */ #define IS_EXT_MODULE #include "php.h" @@ -102,6 +102,7 @@ PHP_FE(ldap_first_reference, NULL) PHP_FE(ldap_next_reference, NULL) PHP_FE(ldap_parse_reference, third_argument_force_ref) + PHP_FE(ldap_rename, NULL) #endif #ifdef STR_TRANSLATION @@ -234,7 +235,7 @@ php_info_print_table_start(); php_info_print_table_row(2, "LDAP Support", "enabled" ); - php_info_print_table_row(2, "RCS Version", "$Id: ldap.c,v 1.76 2001/01/07 21:18:02 venaas Exp $" ); + php_info_print_table_row(2, "RCS Version", "$Id: ldap.c,v 1.77 2001/01/08 18:13:08 venaas Exp $" ); php_info_print_table_row(2, "Total Links", maxl ); #ifdef LDAP_API_VERSION snprintf(ldapapiversion, 31, "%d", LDAP_API_VERSION); @@ -1635,7 +1636,7 @@ /* options with string value */ case LDAP_OPT_HOST_NAME: case LDAP_OPT_ERROR_STRING: -#ifndef HAVE_NSLDAP +#ifdef LDAP_OPT_MATCHED_DN case LDAP_OPT_MATCHED_DN: #endif { @@ -1917,6 +1918,46 @@ ldap_value_free(lreferrals); } RETURN_TRUE; +} +/* }}} */ + + +/* {{{ proto boolean ldap_rename(int link, string dn, string newrdn, + string newparent, boolean deleteoldrdn); + Modify the name of an entry */ +PHP_FUNCTION(ldap_rename) +{ + pval **link, **dn, **newrdn, **newparent, **deleteoldrdn; + LDAP *ldap; + int rc; + + if (ZEND_NUM_ARGS() != 5 || zend_get_parameters_ex(5, &link, &dn, &newrdn, &newparent, &deleteoldrdn) == FAILURE) { + WRONG_PARAM_COUNT; + } + + ldap = _get_ldap_link(link); + if (ldap == NULL) RETURN_FALSE; + + convert_to_string_ex(dn); + convert_to_string_ex(newrdn); + convert_to_string_ex(newparent); + convert_to_boolean_ex(deleteoldrdn); + +#if ( LDAP_API_VERSION > 2000 ) || HAVE_NSLDAP + rc = ldap_rename_s(ldap, Z_STRVAL_PP(dn), Z_STRVAL_PP(newrdn), Z_STRVAL_PP(newparent), Z_BVAL_PP(deleteoldrdn), NULL, NULL); +#else + if (Z_STRLEN_PP(newparent) != 0) { + php_error(E_WARNING, "You are using old LDAP API, newparent must be the empty string, can only modify RDN"); + RETURN_FALSE; + } +/* could support old APIs but need check for ldap_modrdn2()/ldap_modrdn() */ + rc = ldap_modrdn2_s(ldap, Z_STRVAL_PP(dn), Z_STRVAL_PP(newrdn), Z_BVAL_PP(deleteoldrdn)); +#endif + + if (rc == LDAP_SUCCESS) { + RETURN_TRUE; + } + RETURN_FALSE; } /* }}} */ #endif

« previous php.cvs (#3477) next »