--- Ldap.php 2010-06-28 16:50:42.000000000 +0200 +++ LdapPatched.php 2010-06-28 20:00:07.000000000 +0200 @@ -999,8 +999,13 @@ /** * Zend_Ldap_Collection */ - require_once 'Zend/Ldap/Collection.php'; - return new Zend_Ldap_Collection($iterator); + $collection = $this->_createCollection($iterator); + if (!$collection instanceof Zend_Ldap_Collection) { + $collectionClass = get_class($collection); + require_once 'Zend/Ldap/Exception.php'; + throw new Zend_Ldap_Exception(null, + "Class '$collectionClass' must subclass 'Zend_Ldap_Collection'"); + } } else { $collectionClass = (string)$collectionClass; if (!class_exists($collectionClass)) { @@ -1023,6 +1028,11 @@ } } + protected function _createCollection (Zend_ldap_Collection_Iterator_Default $iterator) { + require_once 'Zend/Ldap/Collection.php'; + return new Zend_Ldap_Collection($iterator); + } + /** * Count items found by given filter. *