/** * 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); } } }
protected function get_formatted_dn($entry, $level) { if (DEBUG_ENABLED && (($fargs = func_get_args()) || ($fargs = 'NOARGS'))) { debug_log('Entered (%%)', 33, 0, __FILE__, __LINE__, __METHOD__, $fargs); } if ($level < 0) { return pretty_print_dn($entry->getDN()); } else { return draw_formatted_dn($this->getServer(), $entry); } }
if (!count($request['children'])) { printf('<td class="blank" colspan="2"> </td><td colspan="2">(%s)</td>', _('no entries')); } else { foreach ($request['children'] as $dn) { $href['return'] = sprintf("javascript:returnDN('%s%s')", $request['rdn'] ? sprintf('%s,', $request['rdn']) : '', str_replace('\\', '\\\\', $dn)); $href['expand'] = sprintf('entry_chooser.php?server_id=%s&form=%s&element=%s&rdn=%s&container=%s', $app['server']->getIndex(), $request['form'], $request['element'], $request['rdn'], rawurlencode($dn)); echo '<tr>'; echo '<td class="blank"> </td>'; printf('<td class="icon"><a href="%s"><img src="%s/plus.png" alt="Plus" /></a></td>', $href['expand'], IMGDIR); $entry = $tree->getEntry($dn); if (is_null($entry)) { $tree->addEntry($dn); $entry = $tree->getEntry($dn); } if ($entry) { $item = draw_formatted_dn($app['server'], $entry); } else { $item = $dn; } printf('<td colspan="2"><a href="%s">%s</a></td>', $href['return'], $item); echo '</tr>'; echo "\n\n"; } } # Draw the root of the selection tree (ie, list all the servers) } else { foreach ($_SESSION[APPCONFIG]->getServerList() as $index => $server) { if ($server->isLoggedIn(null)) { printf('<tr><td class="heading" colspan="3">%s:</td><td class="heading">%s</td></tr>', _('Server'), $server->getName()); foreach ($server->getBaseDN() as $dn) { if (!$dn) {