<?php // $Header: /cvsroot/phpldapadmin/phpldapadmin/entry_chooser.php,v 1.26 2005/08/24 15:14:39 wurley Exp $ /** * Display a selection (popup window) to pick a DN. * * @package phpLDAPadmin */ /** */ require './common.php'; $container = isset($_GET['container']) ? rawurldecode($_GET['container']) : false; $return_form_element = isset($_GET['form_element']) ? htmlspecialchars($_GET['form_element']) : null; $rdn = isset($_GET['rdn']) ? htmlspecialchars($_GET['rdn']) : null; include "./header.php"; printf('<h3 class="subtitle">%s</h3>',$lang['entry_chooser_title']); flush(); ?> <script language="javascript"> function returnDN( dn ) { opener.document.<?php echo $return_form_element; ?>.value = dn; close(); } </script> <?php if ($container) { printf('%s<b>%s</b>',$lang['server_colon_pare'],htmlspecialchars($ldapserver->name)); print '<br />'; printf('%s<b>%s</b>',$lang['look_in'],htmlspecialchars($container)); print '<br />'; } /* Has the use already begun to descend into a specific server tree? */ if (isset($ldapserver) && $container !== false) { if (! $ldapserver->haveAuthInfo()) pla_error($lang['not_enough_login_info']); $dn_list = get_container_contents($ldapserver,$container,0,'(objectClass=*)',$config->GetValue('deref','tree')); sort($dn_list); foreach ($ldapserver->getBaseDN() as $base_dn) { debug_log(sprintf('%s: Comparing BaseDN [%s] with container [%s]','entry_chooser.php',$base_dn,$container),9); if (! pla_compare_dns($container,$base_dn)) { $parent_container = false; $up_href = sprintf('entry_chooser.php?form_element=%s&rdn=%s',$return_form_element,$rdn); break; } else { $parent_container = get_container($container); $up_href = sprintf('entry_chooser.php?form_element=%s&rdn=%s&server_id=%s&container=%s', $return_form_element,$rdn,$ldapserver->server_id,rawurlencode($parent_container)); } } print ' '; printf('<a href="%s" style="text-decoration:none"><img src="images/up.png"> %s</a>',$up_href,$lang['back_up_p']); print '<br />'; if (! count($dn_list)) printf(' (%s)<br />',$lang['no_entries']); else foreach ($dn_list as $dn) { $href = sprintf("javascript:returnDN('%s%s')",($rdn ? "$rdn," : ''),$dn); print ' '; printf('<a href="entry_chooser.php?server_id=%s&form_element=%s&rdn=%s&container=%s"><img src="images/plus.png" /></a>', $ldapserver->server_id,$return_form_element,$rdn,rawurlencode($dn)); printf('<a href="%s">%s</a>',$href,htmlspecialchars($dn)); print '<br />'; } /* draw the root of the selection tree (ie, list all the servers) */ } else { foreach ($ldapservers->GetServerList() as $id) { $ldapserver = $ldapservers->Instance($id); if ($ldapserver->isVisible()) { if (! $ldapserver->haveAuthInfo()) continue; else { printf('<b>%s</b>',htmlspecialchars($ldapserver->name)); print '<br />'; foreach ($ldapserver->getBaseDN() as $dn) { if (! $dn) { printf('<small> (%s)</small><br />',$lang['could_not_det_base_dn']); } else { $href = sprintf("javascript:returnDN('%s%s')",($rdn ? "$rdn," : ''),$dn); print ' '; printf('<a href="entry_chooser.php?server_id=%s&form_element=%s&rdn=%s&container=%s"><img src="images/plus.png" /></a> ', $ldapserver->server_id,$return_form_element,$rdn,rawurlencode($dn)); printf('<a href="%s">%s</a>',$href,htmlspecialchars($dn)); print '<br />'; } } } } } } ?>