File: entry_chooser.php

package info (click to toggle)
phpldapadmin 1.1.0.5-6%2Blenny2
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 5,008 kB
  • ctags: 3,949
  • sloc: php: 17,735; xml: 1,532; sh: 388; makefile: 46
file content (124 lines) | stat: -rw-r--r-- 4,668 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/entry_chooser.php,v 1.31.2.3 2008/01/13 05:37:00 wurley Exp $

/**
 * Display a selection (popup window) to pick a DN.
 *
 * @package phpLDAPadmin
 */

include './common.php';
include HTDOCDIR.'header.php';

$entry['container'] = get_request('container','GET');
$entry['element'] = get_request('form_element','GET');
$entry['rdn'] = get_request('rdn','GET');

echo '<body>';
echo '<div class="popup">';
printf('<h3 class="subtitle">%s</h3>',_('Entry Chooser'));
?>

<script type="text/javascript" language="javascript">
	function returnDN(dn) {
		opener.document.<?php echo $entry['element']; ?>.value = dn;
		close();
	}
</script>

<?php
echo '<table class="forminput" width=100% border=0>';
if ($entry['container']) {
	printf('<tr><td class="heading" colspan=3>%s:</td><td>%s</td></tr>',_('Server'),htmlspecialchars($ldapserver->name));
	printf('<tr><td class="heading" colspan=3>%s:</td><td>%s</td></tr>',_('Looking in'),htmlspecialchars($entry['container']));
	echo '<tr><td class="blank" colspan=4>&nbsp;</td></tr>';
}

/* Has the use already begun to descend into a specific server tree? */
if (isset($ldapserver) && ! is_null($entry['container'])) {

	if (! $ldapserver->haveAuthInfo())
		pla_error(_('Not enough information to login to server. Please check your configuration.'));

	$entry['children'] = $ldapserver->getContainerContents($entry['container'],0,'(objectClass=*)',$_SESSION[APPCONFIG]->GetValue('deref','tree'));
	sort($entry['children']);

	foreach ($ldapserver->getBaseDN() as $base_dn) {
		if (DEBUG_ENABLED)
			debug_log('Comparing BaseDN [%s] with container [%s]',64,__FILE__,__LINE__,__METHOD__,$base_dn,$entry['container']);

		if (! pla_compare_dns($entry['container'],$base_dn)) {
			$parent_container = false;
			$href['up'] = htmlspecialchars(sprintf('entry_chooser.php?form_element=%s&rdn=%s',$entry['element'],$entry['rdn']));
			break;

		} else {
			$parent_container = get_container($entry['container']);
			$href['up'] = htmlspecialchars(sprintf('entry_chooser.php?form_element=%s&rdn=%s&server_id=%s&container=%s',
				$entry['element'],$entry['rdn'],$ldapserver->server_id,rawurlencode($parent_container)));
		}
	}

	echo '<tr>';
	echo '<td class="blank">&nbsp;</td>';
	printf('<td class="icon"><a href="%s"><img src="images/up.png" alt="Up" /></a></td>',$href['up']);
	printf('<td colspan=2><a href="%s">%s</a></td>',$href['up'],_('Back Up...'));
	echo '</tr>';

	if (! count($entry['children']))
		printf('<td class="blank" colspan=2>&nbsp;</td><td colspan=2">(%s)</td>',_('no entries'));

	else
		foreach ($entry['children'] as $dn) {
			$href['return'] = sprintf("javascript:returnDN('%s%s')",($entry['rdn'] ? sprintf('%s,',$entry['rdn']) : ''),rawurlencode($dn));
			$href['expand'] = htmlspecialchars(sprintf('entry_chooser.php?server_id=%s&form_element=%s&rdn=%s&container=%s',
				$ldapserver->server_id,$entry['element'],$entry['rdn'],rawurlencode($dn)));

			echo '<tr>';
			echo '<td class="blank">&nbsp;</td>';
			printf('<td class="icon"><a href="%s"><img src="images/plus.png" alt="Plus" /></a></td>',$href['expand']);

			printf('<td colspan=2><a href="%s">%s</a></td>',$href['return'],htmlspecialchars($dn));
			echo '</tr>';
			echo "\n\n";
		}

/* draw the root of the selection tree (ie, list all the servers) */
} else {
	foreach ($_SESSION[APPCONFIG]->ldapservers->GetServerList() as $id) {

		$ldapserver = $_SESSION[APPCONFIG]->ldapservers->Instance($id);

		if ($ldapserver->isVisible()) {

			if (! $ldapserver->haveAuthInfo())
				continue;

			else {
				printf('<tr><td class="heading" colspan=3>%s:</td><td class="heading">%s</td></tr>',_('Server'),htmlspecialchars($ldapserver->name));
				foreach ($ldapserver->getBaseDN() as $dn) {
					if (! $dn) {
						printf('<tr><td class="blank">&nbsp;</td><td colspan=3>(%s)</td></tr>',_('Could not determine base DN'));

					} else {
						$href['return'] = sprintf("javascript:returnDN('%s%s')",($entry['rdn'] ? sprintf('%s,',$entry['rdn']) : ''),rawurlencode($dn));
						$href['expand'] = htmlspecialchars(sprintf('entry_chooser.php?server_id=%s&form_element=%s&rdn=%s&container=%s',
							$ldapserver->server_id,$entry['element'],$entry['rdn'],rawurlencode($dn)));

						echo '<tr>';
						echo '<td class="blank">&nbsp;</td>';
						printf('<td colspan=2 class="icon"><a href="%s"><img src="images/plus.png" alt="Plus" /></a></td>',$href['expand']);
						printf('<td colspan=2><a href="%s">%s</a></td>',$href['return'],htmlspecialchars($dn));
					}
				}

				echo '<tr><td class="blank" colspan=4>&nbsp;</td></tr>';
			}
		}
	}
}

echo '</table>';
echo '</div>';
echo '</body>';
?>