diff -r 000000000000 -r 4eba9c11703f web/Zend/Ldap/Collection.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/Zend/Ldap/Collection.php Mon Dec 13 18:29:26 2010 +0100 @@ -0,0 +1,239 @@ +_iterator = $iterator; + } + + public function __destruct() + { + $this->close(); + } + + /** + * Closes the current result set + * + * @return boolean + */ + public function close() + { + return $this->_iterator->close(); + } + + /** + * Get all entries as an array + * + * @return array + */ + public function toArray() + { + $data = array(); + foreach ($this as $item) { + $data[] = $item; + } + return $data; + } + + /** + * Get first entry + * + * @return array + */ + public function getFirst() + { + if ($this->count() > 0) { + $this->rewind(); + return $this->current(); + } else { + return null; + } + } + + /** + * Returns the underlying iterator + * + * @return Zend_Ldap_Collection_Iterator_Default + */ + public function getInnerIterator() + { + return $this->_iterator; + } + + /** + * Returns the number of items in current result + * Implements Countable + * + * @return int + */ + public function count() + { + return $this->_iterator->count(); + } + + /** + * Return the current result item + * Implements Iterator + * + * @return array|null + * @throws Zend_Ldap_Exception + */ + public function current() + { + if ($this->count() > 0) { + if ($this->_current < 0) { + $this->rewind(); + } + if (!array_key_exists($this->_current, $this->_cache)) { + $current = $this->_iterator->current(); + if ($current === null) { + return null; + } + $this->_cache[$this->_current] = $this->_createEntry($current); + } + return $this->_cache[$this->_current]; + } else { + return null; + } + } + + /** + * Creates the data structure for the given entry data + * + * @param array $data + * @return array + */ + protected function _createEntry(array $data) + { + return $data; + } + + /** + * Return the current result item DN + * + * @return string|null + */ + public function dn() + { + if ($this->count() > 0) { + if ($this->_current < 0) { + $this->rewind(); + } + return $this->_iterator->key(); + } else { + return null; + } + } + + /** + * Return the current result item key + * Implements Iterator + * + * @return int|null + */ + public function key() + { + if ($this->count() > 0) { + if ($this->_current < 0) { + $this->rewind(); + } + return $this->_current; + } else { + return null; + } + } + + /** + * Move forward to next result item + * Implements Iterator + * + * @throws Zend_Ldap_Exception + */ + public function next() + { + $this->_iterator->next(); + $this->_current++; + } + + /** + * Rewind the Iterator to the first result item + * Implements Iterator + * + * @throws Zend_Ldap_Exception + */ + public function rewind() + { + $this->_iterator->rewind(); + $this->_current = 0; + } + + /** + * Check if there is a current result item + * after calls to rewind() or next() + * Implements Iterator + * + * @return boolean + */ + public function valid() + { + if (isset($this->_cache[$this->_current])) { + return true; + } else { + return $this->_iterator->valid(); + } + } +} \ No newline at end of file