cvs: php4 /ext/ldap ldap.c php_ldap.h
| From: | Stig Venaas | 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