diff options
Diffstat (limited to 'program/lib/Net/LDAP3')
-rw-r--r-- | program/lib/Net/LDAP3/Result.php | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/program/lib/Net/LDAP3/Result.php b/program/lib/Net/LDAP3/Result.php new file mode 100644 index 000000000..728b30442 --- /dev/null +++ b/program/lib/Net/LDAP3/Result.php @@ -0,0 +1,139 @@ +<?php + +/* + +-----------------------------------------------------------------------+ + | Net/LDAP3/Result.php | + | | + | Based on code created by the Roundcube Webmail team. | + | | + | Copyright (C) 2006-2014, The Roundcube Dev Team | + | Copyright (C) 2012-2014, Kolab Systems AG | + | | + | Licensed under the GNU General Public License version 3 or | + | any later version with exceptions for plugins. | + | See the README file for a full license statement. | + | | + | PURPOSE: | + | Provide advanced functionality for accessing LDAP directories | + | | + +-----------------------------------------------------------------------+ + | Authors: Thomas Bruederli <roundcube@gmail.com> | + | Jeroen van Meeuwen <vanmeeuwen@kolabsys.com> | + +-----------------------------------------------------------------------+ +*/ + +/** + * Model class representing an LDAP search result + * + * @package LDAP + */ +class Net_LDAP3_Result implements Iterator +{ + protected $conn; + protected $base_dn; + protected $filter; + protected $scope; + + private $count; + private $current; + private $iteratorkey = 0; + + /** + * Default constructor + * + * @param resource $conn LDAP link identifier + * @param string $base_dn Base DN used to get this result + * @param string $filter Filter query used to get this result + * @param string $scope Scope of the result + * @param resource $result LDAP result entry identifier + */ + function __construct($conn, $base_dn, $filter, $scope, $result) + { + $this->conn = $conn; + $this->base_dn = $base_dn; + $this->filter = $filter; + $this->scope = $scope; + $this->result = $result; + } + + public function get($property, $default = null) + { + if (isset($this->$property)) { + return $this->$property; + } else { + return $default; + } + } + + public function set($property, $value) + { + $this->$property = $value; + } + + /** + * + */ + public function sort($attr) + { + return ldap_sort($this->conn, $this->result, $attr); + } + + /** + * + */ + public function count() + { + if (!isset($this->count)) + $this->count = ldap_count_entries($this->conn, $this->result); + + return $this->count; + } + + /** + * + */ + public function entries($normalize = false) + { + $entries = ldap_get_entries($this->conn, $this->result); + + if ($normalize) { + return Net_LDAP3::normalize_result($entries); + } + + return $entries; + } + + + /*** Implement PHP 5 Iterator interface to make foreach work ***/ + + function current() + { + $attrib = ldap_get_attributes($this->conn, $this->current); + $attrib['dn'] = ldap_get_dn($this->conn, $this->current); + + return $attrib; + } + + function key() + { + return $this->iteratorkey; + } + + function rewind() + { + $this->iteratorkey = 0; + $this->current = ldap_first_entry($this->conn, $this->result); + } + + function next() + { + $this->iteratorkey++; + $this->current = ldap_next_entry($this->conn, $this->current); + } + + function valid() + { + return (bool)$this->current; + } + +} |