124 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			124 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
| <?php
 | |
| /**
 | |
|  * Display a selection (popup window) to pick a DN.
 | |
|  *
 | |
|  * @package phpLDAPadmin
 | |
|  * @subpackage Page
 | |
|  */
 | |
| 
 | |
| /**
 | |
|  */
 | |
| 
 | |
| include './common.php';
 | |
| 
 | |
| $www['page'] = new page();
 | |
| 
 | |
| $request = array();
 | |
| $request['container'] = get_request('container','GET');
 | |
| $request['form'] = get_request('form','GET');
 | |
| $request['element'] = get_request('element','GET');
 | |
| $request['rdn'] = get_request('rdn','GET');
 | |
| 
 | |
| echo '<div class="popup">';
 | |
| printf('<h3 class="subtitle">%s</h3>',_('Entry Chooser'));
 | |
| 
 | |
| echo '<script type="text/javascript">';
 | |
| echo '	function returnDN(dn) {';
 | |
| printf("	eval ('o = opener.document.getElementById(\"%s\").%s;');",$request['form'],$request['element']);
 | |
| echo '		o.value = dn;';
 | |
| echo '		close();';
 | |
| echo '	}';
 | |
| echo '</script>';
 | |
| 
 | |
| echo '<table class="forminput" width="100%" border="0">';
 | |
| if ($request['container']) {
 | |
| 	printf('<tr><td class="heading" colspan="3">%s:</td><td>%s</td></tr>',_('Server'),$app['server']->getName());
 | |
| 	printf('<tr><td class="heading" colspan="3">%s:</td><td>%s</td></tr>',_('Looking in'),$request['container']);
 | |
| 	echo '<tr><td class="blank" colspan="4"> </td></tr>';
 | |
| }
 | |
| 
 | |
| # Has the user already begun to descend into a specific server tree?
 | |
| if (isset($app['server']) && ! is_null($request['container'])) {
 | |
| 
 | |
| 	$request['children'] = $app['server']->getContainerContents($request['container'],null,0,'(objectClass=*)',$_SESSION[APPCONFIG]->getValue('deref','tree'));
 | |
| 	sort($request['children']);
 | |
| 
 | |
| 	foreach ($app['server']->getBaseDN() as $base) {
 | |
| 		if (DEBUG_ENABLED)
 | |
| 			debug_log('Comparing BaseDN [%s] with container [%s]',64,0,__FILE__,__LINE__,__METHOD__,$base,$request['container']);
 | |
| 
 | |
| 		if (! pla_compare_dns($request['container'],$base)) {
 | |
| 			$parent_container = false;
 | |
| 			$href['up'] = sprintf('entry_chooser.php?form=%s&element=%s&rdn=%s',$request['form'],$request['element'],rawurlencode($request['rdn']));
 | |
| 			break;
 | |
| 
 | |
| 		} else {
 | |
| 			$parent_container = $app['server']->getContainer($request['container']);
 | |
| 			$href['up'] = sprintf('entry_chooser.php?form=%s&element=%s&rdn=%s&server_id=%s&container=%s',
 | |
| 				$request['form'],$request['element'],$request['rdn'],$app['server']->getIndex(),rawurlencode($parent_container));
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	echo '<tr>';
 | |
| 	echo '<td class="blank"> </td>';
 | |
| 	printf('<td class="icon"><a href="%s"><img src="%s/up.png" alt="Up" /></a></td>',$href['up'],IMGDIR);
 | |
| 	printf('<td colspan="2"><a href="%s">%s...</a></td>',$href['up'],_('Back Up'));
 | |
| 	echo '</tr>';
 | |
| 
 | |
| 	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);
 | |
| 
 | |
| 			printf('<td colspan="2"><a href="%s">%s</a></td>',$href['return'],$dn);
 | |
| 			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) {
 | |
| 					printf('<tr><td class="blank"> </td><td colspan="3">(%s)</td></tr>',_('Could not determine base DN'));
 | |
| 
 | |
| 				} else {
 | |
| 					$href['return'] = sprintf("javascript:returnDN('%s%s')",($request['rdn'] ? sprintf('%s,',$request['rdn']) : ''),rawurlencode($dn));
 | |
| 					$href['expand'] = htmlspecialchars(sprintf('entry_chooser.php?server_id=%s&form=%s&element=%s&rdn=%s&container=%s',
 | |
| 							$server->getIndex(),$request['form'],$request['element'],$request['rdn'],rawurlencode($dn)));
 | |
| 
 | |
| 					echo '<tr>';
 | |
| 					echo '<td class="blank"> </td>';
 | |
| 					printf('<td colspan="2" class="icon"><a href="%s"><img src="%s/plus.png" alt="Plus" /></a></td>',$href['expand'],IMGDIR);
 | |
| 					printf('<td colspan="2"><a href="%s">%s</a></td>',$href['return'],$dn);
 | |
| 				}
 | |
| 			}
 | |
| 
 | |
| 			echo '<tr><td class="blank" colspan="4"> </td></tr>';
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| 
 | |
| echo '</table>';
 | |
| echo '</div>';
 | |
| 
 | |
| # Capture the output and put into the body of the page.
 | |
| $www['body'] = new block();
 | |
| $www['body']->SetBody(ob_get_contents());
 | |
| $www['page']->block_add('body',$www['body']);
 | |
| ob_end_clean();
 | |
| 
 | |
| # Render the popup.
 | |
| $www['page']->display(array('CONTROL'=>false,'FOOT'=>false,'HEAD'=>false,'TREE'=>false));
 | |
| ?>
 |