/** * Recursively descend on the given dn and draw the tree in html * * @param dn $dn Current dn. * @param object $LDAPServer LDAPServer object * @param int $level Level to start drawing (defaults to 0) */ function draw_tree_html($dn, $ldapserver, $level = 0) { global $config; $tree = get_cached_item($ldapserver->server_id, 'tree'); $encoded_dn = rawurlencode($dn); $expand_href = sprintf('expand.php?server_id=%s&dn=%s', $ldapserver->server_id, $encoded_dn); $collapse_href = sprintf('collapse.php?server_id=%s&dn=%s', $ldapserver->server_id, $encoded_dn); $edit_href = sprintf('template_engine.php?server_id=%s&dn=%s', $ldapserver->server_id, $encoded_dn); $img_src = sprintf('images/%s', $tree['browser'][$dn]['icon']); $rdn = get_rdn($dn); echo '<tr>'; for ($i = 0; $i <= $level; $i++) { echo '<td class="spacer"></td>'; } # Shall we draw the "mass-delete" checkbox? if ($ldapserver->isMassDeleteEnabled()) { printf('<td><input type="checkbox" name="mass_delete[%s]" /></td>', htmlspecialchars($dn)); } # Is this node expanded? (deciding whether to draw "+" or "-") if (isset($tree['browser'][$dn]['open']) && $tree['browser'][$dn]['open']) { $child_count = number_format(count($tree['browser'][$dn]['children'])); if (!$child_count && !$ldapserver->isShowCreateEnabled()) { echo '<td class="expander"><nobr><img src="images/minus.png" alt="-" /></nobr></td>'; } else { printf('<td class="expander"><nobr><a href="%s"><img src="images/minus.png" alt="-" /></a></nobr></td>', $collapse_href); } } else { $size_limit = $config->GetValue('search', 'size_limit'); if ($ldapserver->isLowBandwidth()) { $child_count = null; } else { $child_count = count($ldapserver->getContainerContents($dn, $size_limit + 1, '(objectClass=*)', $config->GetValue('deref', 'tree'))); if ($child_count > $size_limit) { $child_count = $size_limit . '+'; } } if (!$child_count && !$ldapserver->isShowCreateEnabled()) { echo '<td class="expander"><nobr><img src="images/minus.png" alt="-" /></nobr></td>'; } else { printf('<td class="expander"><nobr><a href="%s"><img src="images/plus.png" alt="+" /></a></nobr></td>', $expand_href); } } printf('<td class="icon"><a href="%s" target="right_frame" name="%s_%s"><img src="%s" alt="img" /></a></td>', $edit_href, $ldapserver->server_id, $encoded_dn, $img_src); printf('<td class="rdn" colspan="%s"><nobr>', 97 - $level); printf('<a href="%s" target="right_frame">%s</a>', $edit_href, draw_formatted_dn($ldapserver, $dn)); if ($child_count) { printf(' <span class="count">(%s)</span>', $child_count); } echo '</nobr></td></tr>'; if (isset($tree['browser'][$dn]['open']) && $tree['browser'][$dn]['open']) { /* Draw the "create new" link at the top of the tree list if there are more than 10 entries in the listing for this node. */ if (count($tree['browser'][$dn]['children']) > 10 && $ldapserver->isShowCreateEnabled()) { draw_create_link($ldapserver->server_id, $rdn, $level, $encoded_dn); } foreach ($tree['browser'][$dn]['children'] as $dn) { draw_tree_html($dn, $ldapserver, $level + 1); } # Always draw the "create new" link at the bottom of the listing if ($ldapserver->isShowCreateEnabled()) { draw_create_link($ldapserver->server_id, $rdn, $level, $encoded_dn); } } }
/** * Recursively descend on the given dn and draw the tree in html */ function draw_tree_html($dn, $server_id, $level = 0) { global $servers, $tree, $tree_icons, $lang; $id = $server_id; $encoded_dn = rawurlencode($dn); $expand_href = "expand.php?server_id={$id}&dn={$encoded_dn}"; $collapse_href = "collapse.php?server_id={$id}&dn={$encoded_dn}"; $edit_href = "edit.php?server_id={$id}&dn={$encoded_dn}"; // should never happen, but just in case if (!isset($tree_icons[$server_id][$dn])) { $tree_icons[$server_id][$dn] = get_icon($server_id, $dn); } $img_src = 'images/' . $tree_icons[$server_id][$dn]; $rdn = pla_explode_dn($dn); $rdn = $rdn[0]; echo '<tr>'; for ($i = 0; $i <= $level; $i++) { echo '<td class="spacer"></td>' . "\n"; } // is this node expanded? (deciding whether to draw "+" or "-") if (isset($tree[$server_id][$dn])) { ?> <td class="expander"> <nobr> <a href="<?php echo $collapse_href; ?> "><img src="images/minus.png" alt="plus" /></a> </nobr> </td> <?php $object_count = ' <span class="count">(' . count($tree[$server_id][$dn]) . ')</span>'; } else { ?> <td class="expander"> <nobr> <a href="<?php echo $expand_href; ?> "><img src="images/plus.png" alt="minus" /></a> </nobr> </td> <?php $object_count = ''; } ?> <td class="icon"> <a href="<?php echo $edit_href; ?> " target="right_frame" name="<?php echo $server_id; ?> _<?php echo $encoded_dn; ?> "><img src="<?php echo $img_src; ?> " /></a> </td> <td class="rdn" colspan="<?php echo 97 - $level; ?> "> <nobr> <a href="<?php echo $edit_href; ?> " target="right_frame"><?php echo htmlspecialchars(utf8_decode($rdn)); ?> </a> <?php echo $object_count; ?> </nobr> </td> </tr> <?php if (isset($tree[$server_id][$dn]) && is_array($tree[$server_id][$dn])) { foreach ($tree[$server_id][$dn] as $dn) { draw_tree_html($dn, $server_id, $level + 1); } // print the "Create New object" link. $create_href = "create_form.php?server_id={$server_id}&container={$encoded_dn}"; echo '<tr>'; for ($i = 0; $i <= $level; $i++) { echo '<td class="spacer"></td>'; } echo '<td class="spacer"></td>'; echo '<td class="icon"><a href="' . $create_href . '" target="right_frame"><img src="images/star.png" /></a></td>'; echo '<td class="create" colspan="' . (97 - $level) . '"><a href="' . $create_href . '" target="right_frame" title="' . $lang['create_new_entry_in'] . ' ' . $rdn . '">' . $lang['create_new'] . '</a></td></tr>'; } echo '</tr>'; }