Changeset b35a0f1 in github
- Timestamp:
- Oct 11, 2011 4:54:46 AM (20 months ago)
- Branches:
- master, HEAD, courier-fix, dev-browser-capabilities, pdo, release-0.7, release-0.8
- Children:
- ce53b67
- Parents:
- 52c2aa3
- File:
-
- 1 edited
-
program/include/rcube_ldap.php (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
program/include/rcube_ldap.php
ra314823 rb35a0f1 506 506 * 507 507 * @param string Group DN 508 * @param array Group entr y(if called recursively)508 * @param array Group entries (if called recursively) 509 509 * @return array Accumulated group members 510 510 */ 511 function list_group_members($dn, $ entries = null)511 function list_group_members($dn, $count = false, $entries = null) 512 512 { 513 513 $group_members = array(); … … 532 532 continue; 533 533 534 foreach ((array)$entry['objectclass'] as $ num => $objectclass)534 foreach ((array)$entry['objectclass'] as $objectclass) 535 535 { 536 536 switch (strtolower($objectclass)) { 537 537 case "groupofnames": 538 538 case "kolabgroupofnames": 539 $group_members = array_merge($group_members, $this->_list_group_members($dn, $entry, 'member' ));539 $group_members = array_merge($group_members, $this->_list_group_members($dn, $entry, 'member', $count)); 540 540 break; 541 541 case "groupofuniquenames": 542 542 case "kolabgroupofuniquenames": 543 $group_members = array_merge($group_members, $this->_list_group_members($dn, $entry, 'uniquemember' ));543 $group_members = array_merge($group_members, $this->_list_group_members($dn, $entry, 'uniquemember', $count)); 544 544 break; 545 545 case "groupofurls": 546 $group_members = array_merge($group_members, $this->_list_group_memberurl($dn, $entry ));546 $group_members = array_merge($group_members, $this->_list_group_memberurl($dn, $entry, $count)); 547 547 break; 548 548 } … … 561 561 * @return array Accumulated group members 562 562 */ 563 private function _list_group_members($dn, $entry, $attr )563 private function _list_group_members($dn, $entry, $attr, $count) 564 564 { 565 565 // Use the member attributes to return an array of member ldap objects … … 569 569 return $group_members; 570 570 571 // read these attributes for all members 572 $attrib = $count ? array('dn') : array_values($this->fieldmap); 573 $attrib[] = 'objectClass'; 574 $attrib[] = 'member'; 575 $attrib[] = 'uniqueMember'; 576 $attrib[] = 'memberURL'; 577 571 578 for ($i=0; $i < $entry[$attr]['count']; $i++) 572 579 { 573 580 $result = @ldap_read($this->conn, $entry[$attr][$i], '(objectclass=*)', 574 array_values($this->fieldmap), 0, (int)$this->prop['sizelimit'], (int)$this->prop['timelimit']);581 $attrib, 0, (int)$this->prop['sizelimit'], (int)$this->prop['timelimit']); 575 582 576 583 $members = @ldap_get_entries($this->conn, $result); … … 582 589 583 590 // for nested groups, call recursively 584 $nested_group_members = $this->list_group_members($entry[$attr][$i], $ members);591 $nested_group_members = $this->list_group_members($entry[$attr][$i], $count, $members); 585 592 586 593 unset($members['count']); … … 596 603 * @param string Group DN 597 604 * @param array Group entry 605 * @param boolean True if only used for counting 598 606 * @return array Accumulated group members 599 607 */ 600 private function _list_group_memberurl($dn, $entry )608 private function _list_group_memberurl($dn, $entry, $count) 601 609 { 602 610 $group_members = array(); … … 612 620 $func = $m[2] == 'sub' ? 'ldap_search' : ($m[2] == 'base' ? 'ldap_read' : 'ldap_list'); 613 621 622 $attrib = $count ? array('dn') : array_values($this->fieldmap); 614 623 if ($result = @$func($this->conn, $m[1], $filter, 615 array_values($this->fieldmap), 0, (int)$this->prop['sizelimit'], (int)$this->prop['timelimit']))624 $attrib, 0, (int)$this->prop['sizelimit'], (int)$this->prop['timelimit'])) 616 625 { 617 626 $this->_debug("S: ".ldap_count_entries($this->conn, $result)." record(s) for ".$m[1]); … … 628 637 for ($j = 0; $j < $entries['count']; $j++) 629 638 { 630 if ($nested_group_members = $this->list_group_members($entries[$j]['dn'] ))639 if ($nested_group_members = $this->list_group_members($entries[$j]['dn'], $count)) 631 640 $group_members = array_merge($group_members, $nested_group_members); 632 641 else … … 749 758 } 750 759 else if ($this->group_id && $this->group_data['dn']) { 751 $count = count($this->list_group_members($this->group_data['dn'] ));760 $count = count($this->list_group_members($this->group_data['dn'], true)); 752 761 } 753 762 else if ($this->conn) {
Note: See TracChangeset
for help on using the changeset viewer.
