thomascube
2011-06-09 c1db483cd5578704ffc49ec98686c0e061db9c50
Only select dn for count queries

1 files modified
12 ■■■■■ changed files
program/include/rcube_ldap.php 12 ●●●●● patch | view | raw | blame | history
program/include/rcube_ldap.php
@@ -860,7 +860,7 @@
    *
    * @access private
    */
    private function _exec_search($all = false)
    private function _exec_search($count = false)
    {
        if ($this->ready)
        {
@@ -870,14 +870,16 @@
            $this->_debug("C: Search [".$filter."]");
            // when using VLV, we need to issue listing command first in order to get the full count
            if (!$all && $function != 'ldap_read' && $this->prop['vlv']) {
                $this->_exec_search(true);
                $this->vlv_count = ldap_count_entries($this->conn, $this->ldap_result);
            if (!$count && $function != 'ldap_read' && $this->prop['vlv']) {
                if ($this->_exec_search(true))
                    $this->vlv_count = ldap_count_entries($this->conn, $this->ldap_result);
                $this->vlv_active = $this->_vlv_set_controls();
            }
            // only fetch dn for count (should keep the payload low)
            $attrs = $count ? array('dn') : array_values($this->fieldmap);
            if ($this->ldap_result = @$function($this->conn, $this->base_dn, $filter,
                array_values($this->fieldmap), 0, (int) $this->prop['sizelimit'], (int) $this->prop['timelimit']))
                $attrs, 0, (int)$this->prop['sizelimit'], (int)$this->prop['timelimit']))
            {
                $this->_debug("S: ".ldap_count_entries($this->conn, $this->ldap_result)." record(s)");
                return true;