/** * Print out a hierarchy of groups * * @param LdapConnector $ldap * @param string $currentDn * @param array $open * @return void * @access public * @since 8/31/09 */ function printHierarchy(LdapConnector $ldap, $currentDn, array $open, $tabs = "\n\t\t") { print $tabs . "<li class='group'>"; print "<a name='" . base64_encode($currentDn) . "'></a>"; print "<a href='"; if (in_array($currentDn, $open)) { $parentKey = array_search($currentDn, $open) + 1; if (isset($open[$parentKey])) { print getUrl('list_all', array('current' => base64_encode($open[$parentKey]))) . '#' . base64_encode($currentDn); } else { print getUrl('list_all'); } } else { print getUrl('list_all', array('current' => base64_encode($currentDn))) . '#' . base64_encode($currentDn); } print "'>" . dnToName($currentDn) . "</a>"; if (in_array($currentDn, $open)) { // If this is an OU, print out its children $children = $ldap->getList('(|(objectClass=group)(objectClass=organizationalUnit))', $currentDn, array('dn')); if (count($children)) { print $tabs . "<ul>"; foreach ($children as $child) { printHierarchy($ldap, $child['dn'], $open, $tabs . "\t"); } print $tabs . "</ul>"; } else { $groups = $ldap->read('(objectClass=group)', $currentDn, array('managedby', 'member')); if (count($groups) == 1 && isset($groups[0]['member'])) { if (isset($groups[0]['managedby'][0])) { print $tabs . "<ul class='manager'>"; print $tabs . "\t<li>Group Manager: " . dnToName($groups[0]['managedby'][0]) . "</li>"; print $tabs . "</ul>"; } print $tabs . "<ul class='members'>"; sort($groups[0]['member']); foreach ($groups[0]['member'] as $member) { print $tabs . "\t<li>" . dnToName($member) . "</li>"; } print $tabs . "</ul>"; } } } print $tabs . "</li>"; }
<ul id='group_tree'> <?php if (isset($_GET['current']) && $_GET['current']) { $current = base64_decode_fix($_GET['current'], true); } if (!isset($current) || !$current) { $current = $ldapConfig['BaseDN']; } $levels = ldap_explode_dn($current, 0); unset($levels['count']); $open = array(); while (count($levels) > 1) { $open[] = implode(',', $levels); array_shift($levels); } printHierarchy($ldap, $ldapConfig['BaseDN'], $open); ?> </ul>