/**
 * 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);
        }
    }
}
Example #2
0
/**
 * 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}&amp;dn={$encoded_dn}";
    $collapse_href = "collapse.php?server_id={$id}&amp;dn={$encoded_dn}";
    $edit_href = "edit.php?server_id={$id}&amp;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}&amp;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>';
}