php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Return to Bug #42060
Patch paged-ldap-5.3 revision 2011-04-28 23:00 UTC by bryant dot david at gmail dot com
Patch api-rename.patch revision 2010-11-04 21:16 UTC by jeanseb at au-fil-du dot net
Patch php-trunk_ldap-pagination.patch revision 2010-11-04 20:47 UTC by jeanseb at au-fil-du dot net
revision 2010-11-03 21:50 UTC by jeanseb at au-fil-du dot net
revision 2010-05-21 15:27 UTC by jeanseb at au-fil-du dot net
Patch ext-ldap-review.patch revision 2010-08-04 15:54 UTC by jeanseb at au-fil-du dot net

Patch php-trunk_ldap-pagination.patch for *General Issues Bug #42060

Patch version 2010-11-04 20:47 UTC

Return to Bug #42060 | Download this patch
This patch renders other patches obsolete

Obsolete patches:

Patch Revisions: 2010-11-04 20:47 UTC | 2010-11-03 21:50 UTC | 2010-05-21 15:27 UTC

Developer: jeanseb@au-fil-du.net


 Index: ext/ldap/ldap.c
 Index: ldap.c
  ===================================================================
 --- ext/ldap/ldap.c	(révision 40035)
 +++ ext/ldap/ldap.c	(révision 40105)
 --- ldap.c	(révision 299434)
 +++ ldap.c	(copie de travail)
  @@ -19,6 +19,10 @@
      |          Jani Taskinen  <sniper@iki.fi>                              |
      |          Stig Venaas    <venaas@uninett.no>                          |
      |          Doug Goldstein <cardoe@cardoe.com>                          |


  +   |          Rémy Saissy <remy.saissy@gmail.com>                         |
      | PHP 4.0 updates:  Zeev Suraski <zeev@zend.com>                       |
      +----------------------------------------------------------------------+
    */
 @@ -2047,6 +2051,192 @@
  }
 @@ -2185,6 +2189,193 @@
   /* }}} */
   #endif
 +
  
  +#ifdef LDAP_CONTROL_PAGEDRESULTS
  +/* {{{ proto bool ldap_control_paged_results(resource link, int pagesize [, bool iscritical [, string cookie]])
  +   Inject paged results control*/
  +PHP_FUNCTION(ldap_control_paged_results) 
  +{
  +	long pagesize;
  +	zend_bool iscritical;
 +	zval *link, *cookie;
 +	zval *link;
  +	struct berval lcookie = { 0, NULL };
  +	ldap_linkdata *ld;
  +	LDAP *ldap;
  +	BerElement *ber = NULL;
  +	LDAPControl	ctrl, *ctrlsp[2];
  +	int rc, myargcount = ZEND_NUM_ARGS();
 +    char *cookie = NULL;
 +    int cookielen;
  +
 +	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|bz", &link, &pagesize, &iscritical, &cookie,) != SUCCESS) {
  +		return;
  +	}
  +
  +	if (Z_TYPE_PP(&link) == IS_NULL) {
Line 53 (now 54), was 11 lines, now 10 lines

  +	ctrl.ldctl_iscritical = 0;
  +
  +	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 = cookielen;
  +			/* fallthru */
  +		case 3:
  +			ctrl.ldctl_iscritical = (int)iscritical;
  +			/* fallthru */


  +	RETURN_TRUE;
  +}
  +/* }}} */
  +#endif
  #endif /* (LDAP_API_VERSION > 2000) || HAVE_NSLDAP || HAVE_ORALDAP_10 */
 +
  /* {{{ arginfo */
  ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_connect, 0, 0, 0)
  	ZEND_ARG_INFO(0, hostname)
 @@ -2364,6 +2555,22 @@
  	ZEND_ARG_INFO(0, sortfilter)
  ZEND_END_ARG_INFO()
   
  #if defined(LDAP_API_FEATURE_X_OPENLDAP) && defined(HAVE_3ARG_SETREBINDPROC)
 @@ -2414,6 +2604,21 @@
  	ZEND_ARG_INFO(1, referrals)
  ZEND_END_ARG_INFO()
  #endif
 +
 +#ifdef LDAP_CONTROL_PAGEDRESULTS
  +ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_control_paged_results, 0, 0, 2)
  +	ZEND_ARG_INFO(0, link)
  +	ZEND_ARG_INFO(0, pagesize)
  +	ZEND_ARG_INFO(0, iscritical)
Line 223 (now 224), was 100 lines, now 28 lines

  +	ZEND_ARG_INFO(0, result)
  +	ZEND_ARG_INFO(1, cookie)
  +	ZEND_ARG_INFO(1, estimated)
  +ZEND_END_ARG_INFO();
 +#endif
  +
  #if (LDAP_API_VERSION > 2000) || HAVE_NSLDAP || HAVE_ORALDAP_10
  ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_rename, 0, 0, 5)
  	ZEND_ARG_INFO(0, link_identifier)
 @@ -2506,6 +2713,10 @@
  	PHP_FE(ldap_8859_to_t61,							arginfo_ldap_8859_to_t61)
   #endif
   
  #if defined(LDAP_API_FEATURE_X_OPENLDAP) && defined(HAVE_3ARG_SETREBINDPROC)
 @@ -2489,14 +2694,22 @@
  #ifdef HAVE_LDAP_PARSE_REFERENCE
  	PHP_FE(ldap_parse_reference,						arginfo_ldap_parse_reference)
  #endif
 +
  #ifdef HAVE_LDAP_PARSE_RESULT
  	PHP_FE(ldap_parse_result,							arginfo_ldap_parse_result)
  #endif
 +
  #ifdef HAVE_LDAP_START_TLS_S
  	PHP_FE(ldap_start_tls,								arginfo_ldap_resource)
  #endif
 +
  +#ifdef LDAP_CONTROL_PAGEDRESULTS
 +	PHP_FE(ldap_control_paged_results,							arginfo_ldap_control_paged_results)
 +	PHP_FE(ldap_control_paged_results_response,						arginfo_ldap_control_paged_results_response)
  #endif
  
 +	PHP_FE(ldap_control_paged_results,					arginfo_ldap_control_paged_results)
 +	PHP_FE(ldap_control_paged_results_response,			arginfo_ldap_control_paged_results_response)
  +#endif
 +
  #if defined(LDAP_API_FEATURE_X_OPENLDAP) && defined(HAVE_3ARG_SETREBINDPROC)
  	PHP_FE(ldap_set_rebind_proc,						arginfo_ldap_set_rebind_proc)
  #endif
 Index: ext/ldap/tests/ldap_control_paged_results_variation1.phpt
 ===================================================================
 --- ext/ldap/tests/ldap_control_paged_results_variation1.phpt	(révision 0)
 +++ ext/ldap/tests/ldap_control_paged_results_variation1.phpt	(révision 40105)
 @@ -0,0 +1,56 @@
 +--TEST--
 +ldap_ldap_control_paged_results() test (fetching the first page)
 +--CREDITS--
 +Jean-Sebastien Hedde <jeanseb@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===
 Index: ext/ldap/tests/ldap_control_paged_results_variation2.phpt
  	{NULL, NULL, NULL}
  };
  /* }}} */
 Index: tests/ldap_control_paged_results_variation2.phpt
  ===================================================================
 --- ext/ldap/tests/ldap_control_paged_results_variation2.phpt	(révision 0)
 +++ ext/ldap/tests/ldap_control_paged_results_variation2.phpt	(révision 40105)
 --- tests/ldap_control_paged_results_variation2.phpt	(révision 0)
 +++ tests/ldap_control_paged_results_variation2.phpt	(révision 0)
  @@ -0,0 +1,72 @@
  +--TEST--
  +ldap_ldap_control_paged_results() test (fetching the first page with a pagesize=2)
  +--CREDITS--


  +    string(28) "cn=userB,dc=my-domain,dc=com"
  +  }
  +}
  +===DONE===
 Index: ext/ldap/tests/ldap_control_paged_results_variation3.phpt
 Index: tests/ldap_control_paged_results_variation3.phpt
  ===================================================================
 --- ext/ldap/tests/ldap_control_paged_results_variation3.phpt	(révision 0)
 +++ ext/ldap/tests/ldap_control_paged_results_variation3.phpt	(révision 40105)
 --- tests/ldap_control_paged_results_variation3.phpt	(révision 0)
 +++ tests/ldap_control_paged_results_variation3.phpt	(révision 0)
  @@ -0,0 +1,100 @@
  +--TEST--
  +ldap_ldap_control_paged_results() test (fetching the first page then the next final page)
  +--CREDITS--


  +    ["count"]=>
  +    int(1)
  +    ["dn"]=>
  +    string(37) "cn=userC,cn=userB,dc=my-domain,dc=com"
 +  }
 +}
 +===DONE===
 Index: tests/ldap_control_paged_results_variation1.phpt
 ===================================================================
 --- tests/ldap_control_paged_results_variation1.phpt	(révision 0)
 +++ tests/ldap_control_paged_results_variation1.phpt	(révision 0)
 @@ -0,0 +1,56 @@
 +--TEST--
 +ldap_ldap_control_paged_results() test (fetching the first page)
 +--CREDITS--
 +Jean-Sebastien Hedde <jeanseb@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===
 
PHP Copyright © 2001-2014 The PHP Group
All rights reserved.
Last updated: Mon Apr 21 10:02:10 2014 UTC