예제 #1
0
/**
 * 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);
        }
    }
}
예제 #2
0
 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);
     }
 }
예제 #3
0
    if (!count($request['children'])) {
        printf('<td class="blank" colspan="2">&nbsp;</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">&nbsp;</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) {