50 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
		
		
			
		
	
	
			50 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
|  | <?php | ||
|  | /** | ||
|  |  * Download a binary value attribute to the user. | ||
|  |  * A server ID, DN and Attribute must be provided in the GET attributes. | ||
|  |  * Optionally an index, type and filename can be supplied. | ||
|  |  * | ||
|  |  * @package phpLDAPadmin | ||
|  |  * @subpackage Page | ||
|  |  */ | ||
|  | 
 | ||
|  | /** | ||
|  |  */ | ||
|  | 
 | ||
|  | require './common.php'; | ||
|  | 
 | ||
|  | $request = array(); | ||
|  | $request['dn'] = get_request('dn','GET'); | ||
|  | $request['attr'] = strtolower(get_request('attr','GET',true)); | ||
|  | $request['index'] = get_request('index','GET',false,0); | ||
|  | $request['type'] = get_request('type','GET',false,'octet-stream'); | ||
|  | $request['filename'] = get_request('filename','GET',false,sprintf('%s:%s.bin',get_rdn($request['dn'],true),$request['attr'])); | ||
|  | 
 | ||
|  | if (! $app['server']->dnExists($request['dn'])) | ||
|  | 	error(sprintf(_('The entry (%s) does not exist.'),$request['dn']),'error','index.php'); | ||
|  | 
 | ||
|  | $search = $app['server']->getDNAttrValues($request['dn'],null,LDAP_DEREF_NEVER,array($request['attr'])); | ||
|  | 
 | ||
|  | # Dump the binary data to the browser
 | ||
|  | $obStatus = ob_get_status(); | ||
|  | if (isset($obStatus['type']) && $obStatus['type'] && $obStatus['status'])  | ||
|  | 	ob_end_clean(); | ||
|  | 
 | ||
|  | if (! isset($search[$request['attr']][$request['index']])) { | ||
|  | 	# We cant display an error, but we can set a system message, which will be display on the next page render.
 | ||
|  | 	system_message(array( | ||
|  | 		'title'=>_('No binary data available'), | ||
|  | 		'body'=>sprintf(_('Could not fetch binary data from LDAP server for attribute [%s].'),$request['attr']), | ||
|  | 		'type'=>'warn')); | ||
|  | 
 | ||
|  | 	die(); | ||
|  | } | ||
|  | 
 | ||
|  | header(sprintf('Content-type: %s',$request['type'])); | ||
|  | header(sprintf('Content-disposition: attachment; filename="%s"',$request['filename'])); | ||
|  | header(sprintf('Expires: Mon, 26 Jul 1997 05:00:00 GMT',gmdate('r'))); | ||
|  | header(sprintf('Last-Modified: %s',gmdate('r'))); | ||
|  | echo $search[$request['attr']][$request['index']]; | ||
|  | die(); | ||
|  | ?>
 |