/** * Print an HTML block for a group, respecting permissions. * * @param LdapConnector $ldap * @param array $group The group result from an LDAP search. * @return void * @since 8/31/09 */ function printGroupHtml(LdapConnector $ldap, array $group) { $showControls = !empty($group['managedby'][0]) && $group['managedby'][0] == $_SESSION['user_dn']; $levels = dnToLevels($group['dn']); print "\n\t<fieldset class='group'>\n\t\t<legend>" . implode(' / ', $levels) . "</legend>"; print "\n\t<div class='manager'>"; print "\n\t<h2>Group Manager: </h2>"; if (isset($group['managedby'][0])) { print dnToName($group['managedby'][0]); } else { print "<em>No manager set</em>"; } if ($showControls) { print " <button class='change_manager'>Change</button>"; print "\n\t\t<form class='change_manager_form' action='" . getUrl('change_manager') . "' method='post' style='display: none'>"; print "\n\t\t<input type='hidden' name='group_id' value='" . base64_encode($group['dn']) . "'/>"; print "\n\t\t<input type='hidden' name='new_manager' value=''/>"; print "\n\t\t\t<input type='text' class='new_manager_search' size='50'/>"; print "\n\t\t<input type='submit' class='set_new_manager_button' value='Set As Manager'/>"; print "\n\t\t</form>"; } print "\n\t</div>"; print "\n\t<div class='members'>"; print "\n\t<h2>Group Members: </h2>"; print "\n\t\t<ul>"; if (isset($group['member']) && is_array($group['member'])) { sort($group['member']); foreach ($group['member'] as $memberDN) { $members = $ldap->read('(objectclass=*)', $memberDN, array('givenName', 'sn', 'mail', 'cn', 'objectclass')); $member = $members[0]; print "\n\t\t<li>" . result_to_name($member); if ($showControls) { print "\n\t\t\t<input type='hidden' class='group_id' value='" . base64_encode($group['dn']) . "'/>"; print "\n\t\t\t<input type='hidden' class='member_id' value='" . base64_encode($memberDN) . "'/>"; print "<button class='remove_button'>Remove</button>"; } print "</li>"; } } print "\n\t\t</ul>"; if ($showControls) { print "\n\t\t<div class='add_member_controls'>"; print "\n\t\t<input type='text' class='new_member' size='50'/>"; print "\n\t\t\t<input type='hidden' class='group_id' value='" . base64_encode($group['dn']) . "'/>"; print "\n\t\t<button class='add_button'>Add</button>"; print "\n\t\t</div>"; print "\n\t\t<div class='delete_controls'>"; print "\n\t\t\t<input type='hidden' class='group_id' value='" . base64_encode($group['dn']) . "'/>"; print "\n\t\t<button class='delete_button'>Delete Group</button>"; print "\n\t\t</div>"; } print "\n\t</div>"; print "\n\t</fieldset>"; }
$sortKeys = array(); foreach ($groups as $group) { $sortKeys[] = implode(' / ', dnToLevels($group['dn'])); } array_multisort($sortKeys, $groups); // PRint the groups foreach ($groups as $group) { printGroupHtml($ldap, $group); } ?> </div> <form action="<?php echo getUrl('create_group'); ?> " method="post" id="create_group_form"> <p>Create a new group in <select name="container_dn" id="new_group_container_dn"> <?php foreach ($ldapConfig['WritableGroupContainers'] as $dn) { print "\n\t\t\t<option value=\"" . base64_encode($dn) . "\">" . implode(" / ", dnToLevels($dn)) . "</option>"; } ?> </select> named <input type="text" name="new_group_name" id='new_group_name'/> <input type="submit" value="Create"/> </p> </form>
<div id='groups'> <?php $groups = array(); foreach ($ldapConfig['WritableGroupContainers'] as $baseDN) { $query = '(objectClass=group)'; $groups = array_merge($groups, $ldap->search($query, $baseDN, array('cn', 'managedby', 'member'))); } $groups = array_values($groups); // Sort the groups $sortKeys = array(); foreach ($groups as $group) { $sortKeys[] = implode(' / ', dnToLevels($group['dn'])); } array_multisort($sortKeys, $groups); // Print the groups foreach ($groups as $group) { printGroupHtml($ldap, $group); } ?> </div>