scottmac Thu, 19 May 2011 17:41:21 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=311264
Log: Tidy up ldap paging code and rename the API as discussed in #42060 Bug: http://bugs.php.net/42060 (Feedback) [PATCH] LDAP: Add pagedResults support and more Changed paths: U php/php-src/branches/PHP_5_4/ext/ldap/ldap.c A php/php-src/branches/PHP_5_4/ext/ldap/tests/ldap_control_paged_results_variation1.phpt A php/php-src/branches/PHP_5_4/ext/ldap/tests/ldap_control_paged_results_variation2.phpt A php/php-src/branches/PHP_5_4/ext/ldap/tests/ldap_control_paged_results_variation3.phpt D php/php-src/branches/PHP_5_4/ext/ldap/tests/ldap_ctrl_paged_results_variation1.phpt D php/php-src/branches/PHP_5_4/ext/ldap/tests/ldap_ctrl_paged_results_variation2.phpt D php/php-src/branches/PHP_5_4/ext/ldap/tests/ldap_ctrl_paged_results_variation3.phpt U php/php-src/trunk/ext/ldap/ldap.c A php/php-src/trunk/ext/ldap/tests/ldap_control_paged_results_variation1.phpt A php/php-src/trunk/ext/ldap/tests/ldap_control_paged_results_variation2.phpt A php/php-src/trunk/ext/ldap/tests/ldap_control_paged_results_variation3.phpt D php/php-src/trunk/ext/ldap/tests/ldap_ctrl_paged_results_variation1.phpt D php/php-src/trunk/ext/ldap/tests/ldap_ctrl_paged_results_variation2.phpt D php/php-src/trunk/ext/ldap/tests/ldap_ctrl_paged_results_variation3.phpt
Modified: php/php-src/branches/PHP_5_4/ext/ldap/ldap.c =================================================================== --- php/php-src/branches/PHP_5_4/ext/ldap/ldap.c 2011-05-19 17:38:03 UTC (rev 311263) +++ php/php-src/branches/PHP_5_4/ext/ldap/ldap.c 2011-05-19 17:41:21 UTC (rev 311264) @@ -2186,13 +2186,15 @@ #endif #ifdef LDAP_CONTROL_PAGEDRESULTS -/* {{{ proto bool ldap_ctrl_paged_results(resource link, int pagesize [, bool iscritical [, string cookie]]) +/* {{{ proto bool ldap_control_paged_result(resource link, int pagesize [, bool iscritical [, string cookie]]) Inject paged results control*/ -PHP_FUNCTION(ldap_ctrl_paged_results) +PHP_FUNCTION(ldap_control_paged_result) { long pagesize; zend_bool iscritical; - zval *link, *cookie; + zval *link; + char *cookie = NULL; + int cookie_len = 0; struct berval lcookie = { 0, NULL }; ldap_linkdata *ld; LDAP *ldap; @@ -2200,11 +2202,11 @@ LDAPControl ctrl, *ctrlsp[2]; int rc, myargcount = ZEND_NUM_ARGS(); - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl|bz", &link, &pagesize, &iscritical, &cookie) != SUCCESS) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl|bs", &link, &pagesize, &iscritical, &cookie, &cookie_len) != SUCCESS) { return; } - if (Z_TYPE_PP(&link) == IS_NULL) { + if (Z_TYPE_P(link) == IS_NULL) { ldap = NULL; } else { ZEND_FETCH_RESOURCE(ld, ldap_linkdata *, &link, -1, "ldap link", le_link); @@ -2221,9 +2223,8 @@ switch (myargcount) { case 4: - convert_to_string_ex(&cookie); - lcookie.bv_val = Z_STRVAL_PP(&cookie); - lcookie.bv_len = Z_STRLEN_PP(&cookie); + lcookie.bv_val = cookie; + lcookie.bv_len = cookie_len; /* fallthru */ case 3: ctrl.ldctl_iscritical = (int)iscritical; @@ -2232,13 +2233,13 @@ if (ber_printf(ber, "{iO}", (int)pagesize, &lcookie) == LBER_ERROR) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to BER printf paged results control"); - RETVAL_BOOL(0); + RETVAL_FALSE; goto lcpr_error_out; } rc = ber_flatten2(ber, &ctrl.ldctl_value, 0); if (rc == LBER_ERROR) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to BER encode paged results control"); - RETVAL_BOOL(0); + RETVAL_FALSE; goto lcpr_error_out; } @@ -2252,16 +2253,16 @@ rc = ldap_set_option(ldap, LDAP_OPT_SERVER_CONTROLS, ctrlsp); if (rc != LDAP_SUCCESS) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to set paged results control: %s (%d)", ldap_err2string(rc), rc); - RETVAL_BOOL(0); + RETVAL_FALSE; goto lcpr_error_out; } - RETVAL_BOOL(1); + RETVAL_TRUE; } else { /* return a PHP control object */ array_init(return_value); add_assoc_string(return_value, "oid", ctrl.ldctl_oid, 1); - if ( ctrl.ldctl_value.bv_len ) { + if (ctrl.ldctl_value.bv_len) { add_assoc_stringl(return_value, "value", ctrl.ldctl_value.bv_val, ctrl.ldctl_value.bv_len, 1); } if (ctrl.ldctl_iscritical) { @@ -2270,16 +2271,16 @@ } lcpr_error_out: - if (ber != NULL) { + if (ber != NULL) { ber_free(ber, 1); } return; } /* }}} */ -/* {{{ proto bool ldap_ctrl_paged_results_resp(resource link, resource result [, string cookie [, int estimated]]) +/* {{{ proto bool ldap_control_paged_result_response(resource link, resource result [, string cookie [, int estimated]]) Extract paged results control response */ -PHP_FUNCTION(ldap_ctrl_paged_results_resp) +PHP_FUNCTION(ldap_control_paged_result_response) { zval *link, *result, *cookie, *estimated; struct berval lcookie; @@ -2357,8 +2358,8 @@ zval_dtor(estimated); ZVAL_LONG(estimated, lestimated); } + zval_dtor(cookie); - if (lcookie.bv_len == 0) { ZVAL_EMPTY_STRING(cookie); } else { @@ -2551,14 +2552,14 @@ ZEND_END_ARG_INFO() #ifdef LDAP_CONTROL_PAGEDRESULTS -ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_ctrl_paged_results, 0, 0, 2) +ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_control_paged_result, 0, 0, 2) ZEND_ARG_INFO(0, link) ZEND_ARG_INFO(0, pagesize) ZEND_ARG_INFO(0, iscritical) ZEND_ARG_INFO(0, cookie) ZEND_END_ARG_INFO(); -ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_ctrl_paged_results_resp, 0, 0, 2) +ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_control_paged_result_response, 0, 0, 2) ZEND_ARG_INFO(0, link) ZEND_ARG_INFO(0, result) ZEND_ARG_INFO(1, cookie) @@ -2709,8 +2710,8 @@ #endif #ifdef LDAP_CONTROL_PAGEDRESULTS - PHP_FE(ldap_ctrl_paged_results, arginfo_ldap_ctrl_paged_results) - PHP_FE(ldap_ctrl_paged_results_resp, arginfo_ldap_ctrl_paged_results_resp) + PHP_FE(ldap_control_paged_result, arginfo_ldap_control_paged_result) + PHP_FE(ldap_control_paged_result_response, arginfo_ldap_control_paged_result_response) #endif {NULL, NULL, NULL} }; Added: php/php-src/branches/PHP_5_4/ext/ldap/tests/ldap_control_paged_results_variation1.phpt =================================================================== --- php/php-src/branches/PHP_5_4/ext/ldap/tests/ldap_control_paged_results_variation1.phpt (rev 0) +++ php/php-src/branches/PHP_5_4/ext/ldap/tests/ldap_control_paged_results_variation1.phpt 2011-05-19 17:41:21 UTC (rev 311264) @@ -0,0 +1,56 @@ +--TEST-- +ldap_ldap_control_paged_results() test (fetching the first page) +--CREDITS-- +Jean-Sebastien Hedde <jean...@au-fil-du.net> +--SKIPIF-- +<?php +require_once('skipif.inc'); +require_once('skipifbindfailure.inc'); +?> +--FILE-- +<?php +include "connect.inc"; + +$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version); +insert_dummy_data($link); + +$dn = "dc=my-domain,dc=com"; +$filter = "(cn=*)"; +var_dump( + ldap_control_paged_results($link, 1), + $result = ldap_search($link, $dn, $filter, array('cn')), + ldap_get_entries($link, $result) +); +?> +===DONE=== +--CLEAN-- +<?php +include "connect.inc"; + +$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version); +remove_dummy_data($link); +?> +--EXPECTF-- +bool(true) +resource(6) of type (ldap result) +array(2) { + ["count"]=> + int(1) + [0]=> + array(4) { + ["cn"]=> + array(2) { + ["count"]=> + int(1) + [0]=> + string(5) "userA" + } + [0]=> + string(2) "cn" + ["count"]=> + int(1) + ["dn"]=> + string(28) "cn=userA,dc=my-domain,dc=com" + } +} +===DONE=== Added: php/php-src/branches/PHP_5_4/ext/ldap/tests/ldap_control_paged_results_variation2.phpt =================================================================== --- php/php-src/branches/PHP_5_4/ext/ldap/tests/ldap_control_paged_results_variation2.phpt (rev 0) +++ php/php-src/branches/PHP_5_4/ext/ldap/tests/ldap_control_paged_results_variation2.phpt 2011-05-19 17:41:21 UTC (rev 311264) @@ -0,0 +1,72 @@ +--TEST-- +ldap_ldap_control_paged_results() test (fetching the first page with a pagesize=2) +--CREDITS-- +Jean-Sebastien Hedde <jean...@au-fil-du.net> +--SKIPIF-- +<?php +require_once('skipif.inc'); +require_once('skipifbindfailure.inc'); +?> +--FILE-- +<?php +include "connect.inc"; + +$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version); +insert_dummy_data($link); + +$dn = "dc=my-domain,dc=com"; +$filter = "(cn=*)"; +var_dump( + ldap_control_paged_results($link, 2), + $result = ldap_search($link, $dn, $filter, array('cn')), + ldap_get_entries($link, $result) +); +?> +===DONE=== +--CLEAN-- +<?php +include "connect.inc"; + +$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version); +remove_dummy_data($link); +?> +--EXPECTF-- +bool(true) +resource(6) of type (ldap result) +array(3) { + ["count"]=> + int(2) + [0]=> + array(4) { + ["cn"]=> + array(2) { + ["count"]=> + int(1) + [0]=> + string(5) "userA" + } + [0]=> + string(2) "cn" + ["count"]=> + int(1) + ["dn"]=> + string(28) "cn=userA,dc=my-domain,dc=com" + } + [1]=> + array(4) { + ["cn"]=> + array(2) { + ["count"]=> + int(1) + [0]=> + string(5) "userB" + } + [0]=> + string(2) "cn" + ["count"]=> + int(1) + ["dn"]=> + string(28) "cn=userB,dc=my-domain,dc=com" + } +} +===DONE=== Added: php/php-src/branches/PHP_5_4/ext/ldap/tests/ldap_control_paged_results_variation3.phpt =================================================================== --- php/php-src/branches/PHP_5_4/ext/ldap/tests/ldap_control_paged_results_variation3.phpt (rev 0) +++ php/php-src/branches/PHP_5_4/ext/ldap/tests/ldap_control_paged_results_variation3.phpt 2011-05-19 17:41:21 UTC (rev 311264) @@ -0,0 +1,100 @@ +--TEST-- +ldap_ldap_control_paged_results() test (fetching the first page then the next final page) +--CREDITS-- +Jean-Sebastien Hedde <jean...@au-fil-du.net> +--SKIPIF-- +<?php +require_once('skipif.inc'); +require_once('skipifbindfailure.inc'); +?> +--FILE-- +<?php +include "connect.inc"; + +$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version); +insert_dummy_data($link); + +$dn = "dc=my-domain,dc=com"; +$filter = "(cn=*)"; +$cookie = ''; +var_dump( + ldap_control_paged_results($link, 2, true, $cookie), + $result = ldap_search($link, $dn, $filter, array('cn')), + ldap_get_entries($link, $result), + ldap_control_paged_results_response($link, $result, $cookie), + ldap_control_paged_results($link, 20, true, $cookie), + $result = ldap_search($link, $dn, $filter, array('cn')), + ldap_get_entries($link, $result) +); +?> +===DONE=== +--CLEAN-- +<?php +include "connect.inc"; + +$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version); +remove_dummy_data($link); +?> +--EXPECTF-- +bool(true) +resource(%d) of type (ldap result) +array(3) { + ["count"]=> + int(2) + [0]=> + array(4) { + ["cn"]=> + array(2) { + ["count"]=> + int(1) + [0]=> + string(5) "userA" + } + [0]=> + string(2) "cn" + ["count"]=> + int(1) + ["dn"]=> + string(28) "cn=userA,dc=my-domain,dc=com" + } + [1]=> + array(4) { + ["cn"]=> + array(2) { + ["count"]=> + int(1) + [0]=> + string(5) "userB" + } + [0]=> + string(2) "cn" + ["count"]=> + int(1) + ["dn"]=> + string(28) "cn=userB,dc=my-domain,dc=com" + } +} +bool(true) +bool(true) +resource(%d) of type (ldap result) +array(2) { + ["count"]=> + int(1) + [0]=> + array(4) { + ["cn"]=> + array(2) { + ["count"]=> + int(1) + [0]=> + string(5) "userC" + } + [0]=> + string(2) "cn" + ["count"]=> + int(1) + ["dn"]=> + string(37) "cn=userC,cn=userB,dc=my-domain,dc=com" + } +} +===DONE=== Deleted: php/php-src/branches/PHP_5_4/ext/ldap/tests/ldap_ctrl_paged_results_variation1.phpt =================================================================== --- php/php-src/branches/PHP_5_4/ext/ldap/tests/ldap_ctrl_paged_results_variation1.phpt 2011-05-19 17:38:03 UTC (rev 311263) +++ php/php-src/branches/PHP_5_4/ext/ldap/tests/ldap_ctrl_paged_results_variation1.phpt 2011-05-19 17:41:21 UTC (rev 311264) @@ -1,56 +0,0 @@ ---TEST-- -ldap_ldap_ctrl_paged_results() test (fetching the first page) ---CREDITS-- -Jean-Sebastien Hedde <jean...@au-fil-du.net> ---SKIPIF-- -<?php -require_once('skipif.inc'); -require_once('skipifbindfailure.inc'); -?> ---FILE-- -<?php -include "connect.inc"; - -$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version); -insert_dummy_data($link); - -$dn = "dc=my-domain,dc=com"; -$filter = "(cn=*)"; -var_dump( - ldap_ctrl_paged_results($link, 1), - $result = ldap_search($link, $dn, $filter, array('cn')), - ldap_get_entries($link, $result) -); -?> -===DONE=== ---CLEAN-- -<?php -include "connect.inc"; - -$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version); -remove_dummy_data($link); -?> ---EXPECTF-- -bool(true) -resource(6) of type (ldap result) -array(2) { - ["count"]=> - int(1) - [0]=> - array(4) { - ["cn"]=> - array(2) { - ["count"]=> - int(1) - [0]=> - string(5) "userA" - } - [0]=> - string(2) "cn" - ["count"]=> - int(1) - ["dn"]=> - string(28) "cn=userA,dc=my-domain,dc=com" - } -} -===DONE=== Deleted: php/php-src/branches/PHP_5_4/ext/ldap/tests/ldap_ctrl_paged_results_variation2.phpt =================================================================== --- php/php-src/branches/PHP_5_4/ext/ldap/tests/ldap_ctrl_paged_results_variation2.phpt 2011-05-19 17:38:03 UTC (rev 311263) +++ php/php-src/branches/PHP_5_4/ext/ldap/tests/ldap_ctrl_paged_results_variation2.phpt 2011-05-19 17:41:21 UTC (rev 311264) @@ -1,72 +0,0 @@ ---TEST-- -ldap_ldap_ctrl_paged_results() test (fetching the first page with a pagesize=2) ---CREDITS-- -Jean-Sebastien Hedde <jean...@au-fil-du.net> ---SKIPIF-- -<?php -require_once('skipif.inc'); -require_once('skipifbindfailure.inc'); -?> ---FILE-- -<?php -include "connect.inc"; - -$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version); -insert_dummy_data($link); - -$dn = "dc=my-domain,dc=com"; -$filter = "(cn=*)"; -var_dump( - ldap_ctrl_paged_results($link, 2), - $result = ldap_search($link, $dn, $filter, array('cn')), - ldap_get_entries($link, $result) -); -?> -===DONE=== ---CLEAN-- -<?php -include "connect.inc"; - -$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version); -remove_dummy_data($link); -?> ---EXPECTF-- -bool(true) -resource(6) of type (ldap result) -array(3) { - ["count"]=> - int(2) - [0]=> - array(4) { - ["cn"]=> - array(2) { - ["count"]=> - int(1) - [0]=> - string(5) "userA" - } - [0]=> - string(2) "cn" - ["count"]=> - int(1) - ["dn"]=> - string(28) "cn=userA,dc=my-domain,dc=com" - } - [1]=> - array(4) { - ["cn"]=> - array(2) { - ["count"]=> - int(1) - [0]=> - string(5) "userB" - } - [0]=> - string(2) "cn" - ["count"]=> - int(1) - ["dn"]=> - string(28) "cn=userB,dc=my-domain,dc=com" - } -} -===DONE=== Deleted: php/php-src/branches/PHP_5_4/ext/ldap/tests/ldap_ctrl_paged_results_variation3.phpt =================================================================== --- php/php-src/branches/PHP_5_4/ext/ldap/tests/ldap_ctrl_paged_results_variation3.phpt 2011-05-19 17:38:03 UTC (rev 311263) +++ php/php-src/branches/PHP_5_4/ext/ldap/tests/ldap_ctrl_paged_results_variation3.phpt 2011-05-19 17:41:21 UTC (rev 311264) @@ -1,100 +0,0 @@ ---TEST-- -ldap_ldap_ctrl_paged_results() test (fetching the first page then the next final page) ---CREDITS-- -Jean-Sebastien Hedde <jean...@au-fil-du.net> ---SKIPIF-- -<?php -require_once('skipif.inc'); -require_once('skipifbindfailure.inc'); -?> ---FILE-- -<?php -include "connect.inc"; - -$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version); -insert_dummy_data($link); - -$dn = "dc=my-domain,dc=com"; -$filter = "(cn=*)"; -$cookie = ''; -var_dump( - ldap_ctrl_paged_results($link, 2, true, $cookie), - $result = ldap_search($link, $dn, $filter, array('cn')), - ldap_get_entries($link, $result), - ldap_ctrl_paged_results_resp($link, $result, $cookie), - ldap_ctrl_paged_results($link, 20, true, $cookie), - $result = ldap_search($link, $dn, $filter, array('cn')), - ldap_get_entries($link, $result) -); -?> -===DONE=== ---CLEAN-- -<?php -include "connect.inc"; - -$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version); -remove_dummy_data($link); -?> ---EXPECTF-- -bool(true) -resource(%d) of type (ldap result) -array(3) { - ["count"]=> - int(2) - [0]=> - array(4) { - ["cn"]=> - array(2) { - ["count"]=> - int(1) - [0]=> - string(5) "userA" - } - [0]=> - string(2) "cn" - ["count"]=> - int(1) - ["dn"]=> - string(28) "cn=userA,dc=my-domain,dc=com" - } - [1]=> - array(4) { - ["cn"]=> - array(2) { - ["count"]=> - int(1) - [0]=> - string(5) "userB" - } - [0]=> - string(2) "cn" - ["count"]=> - int(1) - ["dn"]=> - string(28) "cn=userB,dc=my-domain,dc=com" - } -} -bool(true) -bool(true) -resource(%d) of type (ldap result) -array(2) { - ["count"]=> - int(1) - [0]=> - array(4) { - ["cn"]=> - array(2) { - ["count"]=> - int(1) - [0]=> - string(5) "userC" - } - [0]=> - string(2) "cn" - ["count"]=> - int(1) - ["dn"]=> - string(37) "cn=userC,cn=userB,dc=my-domain,dc=com" - } -} -===DONE=== Modified: php/php-src/trunk/ext/ldap/ldap.c =================================================================== --- php/php-src/trunk/ext/ldap/ldap.c 2011-05-19 17:38:03 UTC (rev 311263) +++ php/php-src/trunk/ext/ldap/ldap.c 2011-05-19 17:41:21 UTC (rev 311264) @@ -2186,13 +2186,15 @@ #endif #ifdef LDAP_CONTROL_PAGEDRESULTS -/* {{{ proto bool ldap_ctrl_paged_results(resource link, int pagesize [, bool iscritical [, string cookie]]) +/* {{{ proto bool ldap_control_paged_result(resource link, int pagesize [, bool iscritical [, string cookie]]) Inject paged results control*/ -PHP_FUNCTION(ldap_ctrl_paged_results) +PHP_FUNCTION(ldap_control_paged_result) { long pagesize; zend_bool iscritical; - zval *link, *cookie; + zval *link; + char *cookie = NULL; + int cookie_len = 0; struct berval lcookie = { 0, NULL }; ldap_linkdata *ld; LDAP *ldap; @@ -2200,11 +2202,11 @@ LDAPControl ctrl, *ctrlsp[2]; int rc, myargcount = ZEND_NUM_ARGS(); - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl|bz", &link, &pagesize, &iscritical, &cookie) != SUCCESS) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl|bs", &link, &pagesize, &iscritical, &cookie, &cookie_len) != SUCCESS) { return; } - if (Z_TYPE_PP(&link) == IS_NULL) { + if (Z_TYPE_P(link) == IS_NULL) { ldap = NULL; } else { ZEND_FETCH_RESOURCE(ld, ldap_linkdata *, &link, -1, "ldap link", le_link); @@ -2221,9 +2223,8 @@ switch (myargcount) { case 4: - convert_to_string_ex(&cookie); - lcookie.bv_val = Z_STRVAL_PP(&cookie); - lcookie.bv_len = Z_STRLEN_PP(&cookie); + lcookie.bv_val = cookie; + lcookie.bv_len = cookie_len; /* fallthru */ case 3: ctrl.ldctl_iscritical = (int)iscritical; @@ -2232,13 +2233,13 @@ if (ber_printf(ber, "{iO}", (int)pagesize, &lcookie) == LBER_ERROR) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to BER printf paged results control"); - RETVAL_BOOL(0); + RETVAL_FALSE; goto lcpr_error_out; } rc = ber_flatten2(ber, &ctrl.ldctl_value, 0); if (rc == LBER_ERROR) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to BER encode paged results control"); - RETVAL_BOOL(0); + RETVAL_FALSE; goto lcpr_error_out; } @@ -2252,16 +2253,16 @@ rc = ldap_set_option(ldap, LDAP_OPT_SERVER_CONTROLS, ctrlsp); if (rc != LDAP_SUCCESS) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to set paged results control: %s (%d)", ldap_err2string(rc), rc); - RETVAL_BOOL(0); + RETVAL_FALSE; goto lcpr_error_out; } - RETVAL_BOOL(1); + RETVAL_TRUE; } else { /* return a PHP control object */ array_init(return_value); add_assoc_string(return_value, "oid", ctrl.ldctl_oid, 1); - if ( ctrl.ldctl_value.bv_len ) { + if (ctrl.ldctl_value.bv_len) { add_assoc_stringl(return_value, "value", ctrl.ldctl_value.bv_val, ctrl.ldctl_value.bv_len, 1); } if (ctrl.ldctl_iscritical) { @@ -2270,16 +2271,16 @@ } lcpr_error_out: - if (ber != NULL) { + if (ber != NULL) { ber_free(ber, 1); } return; } /* }}} */ -/* {{{ proto bool ldap_ctrl_paged_results_resp(resource link, resource result [, string cookie [, int estimated]]) +/* {{{ proto bool ldap_control_paged_result_response(resource link, resource result [, string cookie [, int estimated]]) Extract paged results control response */ -PHP_FUNCTION(ldap_ctrl_paged_results_resp) +PHP_FUNCTION(ldap_control_paged_result_response) { zval *link, *result, *cookie, *estimated; struct berval lcookie; @@ -2357,8 +2358,8 @@ zval_dtor(estimated); ZVAL_LONG(estimated, lestimated); } + zval_dtor(cookie); - if (lcookie.bv_len == 0) { ZVAL_EMPTY_STRING(cookie); } else { @@ -2551,14 +2552,14 @@ ZEND_END_ARG_INFO() #ifdef LDAP_CONTROL_PAGEDRESULTS -ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_ctrl_paged_results, 0, 0, 2) +ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_control_paged_result, 0, 0, 2) ZEND_ARG_INFO(0, link) ZEND_ARG_INFO(0, pagesize) ZEND_ARG_INFO(0, iscritical) ZEND_ARG_INFO(0, cookie) ZEND_END_ARG_INFO(); -ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_ctrl_paged_results_resp, 0, 0, 2) +ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_control_paged_result_response, 0, 0, 2) ZEND_ARG_INFO(0, link) ZEND_ARG_INFO(0, result) ZEND_ARG_INFO(1, cookie) @@ -2709,8 +2710,8 @@ #endif #ifdef LDAP_CONTROL_PAGEDRESULTS - PHP_FE(ldap_ctrl_paged_results, arginfo_ldap_ctrl_paged_results) - PHP_FE(ldap_ctrl_paged_results_resp, arginfo_ldap_ctrl_paged_results_resp) + PHP_FE(ldap_control_paged_result, arginfo_ldap_control_paged_result) + PHP_FE(ldap_control_paged_result_response, arginfo_ldap_control_paged_result_response) #endif {NULL, NULL, NULL} }; Added: php/php-src/trunk/ext/ldap/tests/ldap_control_paged_results_variation1.phpt =================================================================== --- php/php-src/trunk/ext/ldap/tests/ldap_control_paged_results_variation1.phpt (rev 0) +++ php/php-src/trunk/ext/ldap/tests/ldap_control_paged_results_variation1.phpt 2011-05-19 17:41:21 UTC (rev 311264) @@ -0,0 +1,56 @@ +--TEST-- +ldap_ldap_control_paged_results() test (fetching the first page) +--CREDITS-- +Jean-Sebastien Hedde <jean...@au-fil-du.net> +--SKIPIF-- +<?php +require_once('skipif.inc'); +require_once('skipifbindfailure.inc'); +?> +--FILE-- +<?php +include "connect.inc"; + +$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version); +insert_dummy_data($link); + +$dn = "dc=my-domain,dc=com"; +$filter = "(cn=*)"; +var_dump( + ldap_control_paged_results($link, 1), + $result = ldap_search($link, $dn, $filter, array('cn')), + ldap_get_entries($link, $result) +); +?> +===DONE=== +--CLEAN-- +<?php +include "connect.inc"; + +$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version); +remove_dummy_data($link); +?> +--EXPECTF-- +bool(true) +resource(6) of type (ldap result) +array(2) { + ["count"]=> + int(1) + [0]=> + array(4) { + ["cn"]=> + array(2) { + ["count"]=> + int(1) + [0]=> + string(5) "userA" + } + [0]=> + string(2) "cn" + ["count"]=> + int(1) + ["dn"]=> + string(28) "cn=userA,dc=my-domain,dc=com" + } +} +===DONE=== Added: php/php-src/trunk/ext/ldap/tests/ldap_control_paged_results_variation2.phpt =================================================================== --- php/php-src/trunk/ext/ldap/tests/ldap_control_paged_results_variation2.phpt (rev 0) +++ php/php-src/trunk/ext/ldap/tests/ldap_control_paged_results_variation2.phpt 2011-05-19 17:41:21 UTC (rev 311264) @@ -0,0 +1,72 @@ +--TEST-- +ldap_ldap_control_paged_results() test (fetching the first page with a pagesize=2) +--CREDITS-- +Jean-Sebastien Hedde <jean...@au-fil-du.net> +--SKIPIF-- +<?php +require_once('skipif.inc'); +require_once('skipifbindfailure.inc'); +?> +--FILE-- +<?php +include "connect.inc"; + +$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version); +insert_dummy_data($link); + +$dn = "dc=my-domain,dc=com"; +$filter = "(cn=*)"; +var_dump( + ldap_control_paged_results($link, 2), + $result = ldap_search($link, $dn, $filter, array('cn')), + ldap_get_entries($link, $result) +); +?> +===DONE=== +--CLEAN-- +<?php +include "connect.inc"; + +$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version); +remove_dummy_data($link); +?> +--EXPECTF-- +bool(true) +resource(6) of type (ldap result) +array(3) { + ["count"]=> + int(2) + [0]=> + array(4) { + ["cn"]=> + array(2) { + ["count"]=> + int(1) + [0]=> + string(5) "userA" + } + [0]=> + string(2) "cn" + ["count"]=> + int(1) + ["dn"]=> + string(28) "cn=userA,dc=my-domain,dc=com" + } + [1]=> + array(4) { + ["cn"]=> + array(2) { + ["count"]=> + int(1) + [0]=> + string(5) "userB" + } + [0]=> + string(2) "cn" + ["count"]=> + int(1) + ["dn"]=> + string(28) "cn=userB,dc=my-domain,dc=com" + } +} +===DONE=== Added: php/php-src/trunk/ext/ldap/tests/ldap_control_paged_results_variation3.phpt =================================================================== --- php/php-src/trunk/ext/ldap/tests/ldap_control_paged_results_variation3.phpt (rev 0) +++ php/php-src/trunk/ext/ldap/tests/ldap_control_paged_results_variation3.phpt 2011-05-19 17:41:21 UTC (rev 311264) @@ -0,0 +1,100 @@ +--TEST-- +ldap_ldap_control_paged_results() test (fetching the first page then the next final page) +--CREDITS-- +Jean-Sebastien Hedde <jean...@au-fil-du.net> +--SKIPIF-- +<?php +require_once('skipif.inc'); +require_once('skipifbindfailure.inc'); +?> +--FILE-- +<?php +include "connect.inc"; + +$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version); +insert_dummy_data($link); + +$dn = "dc=my-domain,dc=com"; +$filter = "(cn=*)"; +$cookie = ''; +var_dump( + ldap_control_paged_results($link, 2, true, $cookie), + $result = ldap_search($link, $dn, $filter, array('cn')), + ldap_get_entries($link, $result), + ldap_control_paged_results_response($link, $result, $cookie), + ldap_control_paged_results($link, 20, true, $cookie), + $result = ldap_search($link, $dn, $filter, array('cn')), + ldap_get_entries($link, $result) +); +?> +===DONE=== +--CLEAN-- +<?php +include "connect.inc"; + +$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version); +remove_dummy_data($link); +?> +--EXPECTF-- +bool(true) +resource(%d) of type (ldap result) +array(3) { + ["count"]=> + int(2) + [0]=> + array(4) { + ["cn"]=> + array(2) { + ["count"]=> + int(1) + [0]=> + string(5) "userA" + } + [0]=> + string(2) "cn" + ["count"]=> + int(1) + ["dn"]=> + string(28) "cn=userA,dc=my-domain,dc=com" + } + [1]=> + array(4) { + ["cn"]=> + array(2) { + ["count"]=> + int(1) + [0]=> + string(5) "userB" + } + [0]=> + string(2) "cn" + ["count"]=> + int(1) + ["dn"]=> + string(28) "cn=userB,dc=my-domain,dc=com" + } +} +bool(true) +bool(true) +resource(%d) of type (ldap result) +array(2) { + ["count"]=> + int(1) + [0]=> + array(4) { + ["cn"]=> + array(2) { + ["count"]=> + int(1) + [0]=> + string(5) "userC" + } + [0]=> + string(2) "cn" + ["count"]=> + int(1) + ["dn"]=> + string(37) "cn=userC,cn=userB,dc=my-domain,dc=com" + } +} +===DONE=== Deleted: php/php-src/trunk/ext/ldap/tests/ldap_ctrl_paged_results_variation1.phpt =================================================================== --- php/php-src/trunk/ext/ldap/tests/ldap_ctrl_paged_results_variation1.phpt 2011-05-19 17:38:03 UTC (rev 311263) +++ php/php-src/trunk/ext/ldap/tests/ldap_ctrl_paged_results_variation1.phpt 2011-05-19 17:41:21 UTC (rev 311264) @@ -1,56 +0,0 @@ ---TEST-- -ldap_ldap_ctrl_paged_results() test (fetching the first page) ---CREDITS-- -Jean-Sebastien Hedde <jean...@au-fil-du.net> ---SKIPIF-- -<?php -require_once('skipif.inc'); -require_once('skipifbindfailure.inc'); -?> ---FILE-- -<?php -include "connect.inc"; - -$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version); -insert_dummy_data($link); - -$dn = "dc=my-domain,dc=com"; -$filter = "(cn=*)"; -var_dump( - ldap_ctrl_paged_results($link, 1), - $result = ldap_search($link, $dn, $filter, array('cn')), - ldap_get_entries($link, $result) -); -?> -===DONE=== ---CLEAN-- -<?php -include "connect.inc"; - -$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version); -remove_dummy_data($link); -?> ---EXPECTF-- -bool(true) -resource(6) of type (ldap result) -array(2) { - ["count"]=> - int(1) - [0]=> - array(4) { - ["cn"]=> - array(2) { - ["count"]=> - int(1) - [0]=> - string(5) "userA" - } - [0]=> - string(2) "cn" - ["count"]=> - int(1) - ["dn"]=> - string(28) "cn=userA,dc=my-domain,dc=com" - } -} -===DONE=== Deleted: php/php-src/trunk/ext/ldap/tests/ldap_ctrl_paged_results_variation2.phpt =================================================================== --- php/php-src/trunk/ext/ldap/tests/ldap_ctrl_paged_results_variation2.phpt 2011-05-19 17:38:03 UTC (rev 311263) +++ php/php-src/trunk/ext/ldap/tests/ldap_ctrl_paged_results_variation2.phpt 2011-05-19 17:41:21 UTC (rev 311264) @@ -1,72 +0,0 @@ ---TEST-- -ldap_ldap_ctrl_paged_results() test (fetching the first page with a pagesize=2) ---CREDITS-- -Jean-Sebastien Hedde <jean...@au-fil-du.net> ---SKIPIF-- -<?php -require_once('skipif.inc'); -require_once('skipifbindfailure.inc'); -?> ---FILE-- -<?php -include "connect.inc"; - -$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version); -insert_dummy_data($link); - -$dn = "dc=my-domain,dc=com"; -$filter = "(cn=*)"; -var_dump( - ldap_ctrl_paged_results($link, 2), - $result = ldap_search($link, $dn, $filter, array('cn')), - ldap_get_entries($link, $result) -); -?> -===DONE=== ---CLEAN-- -<?php -include "connect.inc"; - -$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version); -remove_dummy_data($link); -?> ---EXPECTF-- -bool(true) -resource(6) of type (ldap result) -array(3) { - ["count"]=> - int(2) - [0]=> - array(4) { - ["cn"]=> - array(2) { - ["count"]=> - int(1) - [0]=> - string(5) "userA" - } - [0]=> - string(2) "cn" - ["count"]=> - int(1) - ["dn"]=> - string(28) "cn=userA,dc=my-domain,dc=com" - } - [1]=> - array(4) { - ["cn"]=> - array(2) { - ["count"]=> - int(1) - [0]=> - string(5) "userB" - } - [0]=> - string(2) "cn" - ["count"]=> - int(1) - ["dn"]=> - string(28) "cn=userB,dc=my-domain,dc=com" - } -} -===DONE=== Deleted: php/php-src/trunk/ext/ldap/tests/ldap_ctrl_paged_results_variation3.phpt =================================================================== --- php/php-src/trunk/ext/ldap/tests/ldap_ctrl_paged_results_variation3.phpt 2011-05-19 17:38:03 UTC (rev 311263) +++ php/php-src/trunk/ext/ldap/tests/ldap_ctrl_paged_results_variation3.phpt 2011-05-19 17:41:21 UTC (rev 311264) @@ -1,100 +0,0 @@ ---TEST-- -ldap_ldap_ctrl_paged_results() test (fetching the first page then the next final page) ---CREDITS-- -Jean-Sebastien Hedde <jean...@au-fil-du.net> ---SKIPIF-- -<?php -require_once('skipif.inc'); -require_once('skipifbindfailure.inc'); -?> ---FILE-- -<?php -include "connect.inc"; - -$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version); -insert_dummy_data($link); - -$dn = "dc=my-domain,dc=com"; -$filter = "(cn=*)"; -$cookie = ''; -var_dump( - ldap_ctrl_paged_results($link, 2, true, $cookie), - $result = ldap_search($link, $dn, $filter, array('cn')), - ldap_get_entries($link, $result), - ldap_ctrl_paged_results_resp($link, $result, $cookie), - ldap_ctrl_paged_results($link, 20, true, $cookie), - $result = ldap_search($link, $dn, $filter, array('cn')), - ldap_get_entries($link, $result) -); -?> -===DONE=== ---CLEAN-- -<?php -include "connect.inc"; - -$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version); -remove_dummy_data($link); -?> ---EXPECTF-- -bool(true) -resource(%d) of type (ldap result) -array(3) { - ["count"]=> - int(2) - [0]=> - array(4) { - ["cn"]=> - array(2) { - ["count"]=> - int(1) - [0]=> - string(5) "userA" - } - [0]=> - string(2) "cn" - ["count"]=> - int(1) - ["dn"]=> - string(28) "cn=userA,dc=my-domain,dc=com" - } - [1]=> - array(4) { - ["cn"]=> - array(2) { - ["count"]=> - int(1) - [0]=> - string(5) "userB" - } - [0]=> - string(2) "cn" - ["count"]=> - int(1) - ["dn"]=> - string(28) "cn=userB,dc=my-domain,dc=com" - } -} -bool(true) -bool(true) -resource(%d) of type (ldap result) -array(2) { - ["count"]=> - int(1) - [0]=> - array(4) { - ["cn"]=> - array(2) { - ["count"]=> - int(1) - [0]=> - string(5) "userC" - } - [0]=> - string(2) "cn" - ["count"]=> - int(1) - ["dn"]=> - string(37) "cn=userC,cn=userB,dc=my-domain,dc=com" - } -} -===DONE===
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php