78 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
| <?php
 | |
| /**
 | |
|  * This script will display the contents of the jpegPhoto attribute to the browser.
 | |
|  * A server ID and DN must be provided in the GET attributes.
 | |
|  * Optionally an attr name, 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',false,'jpegphoto'));
 | |
| $request['index'] = get_request('index','GET',false,0);
 | |
| $request['type'] = get_request('type','GET',false,'image/jpeg');
 | |
| $request['filename'] = get_request('filename','GET',false,sprintf('%s.jpg',get_rdn($request['dn'],true)));
 | |
| $request['location'] = get_request('location','GET',false,'ldap');
 | |
| 
 | |
| switch ($request['location']) {
 | |
| 	case 'session':
 | |
| 		if (isset($_SESSION['tmp'][$request['attr']][$request['index']])) {
 | |
| 			$jpeg_data = $_SESSION['tmp'];
 | |
| 			unset($_SESSION['tmp'][$request['attr']][$request['index']]);
 | |
| 		}
 | |
| 
 | |
| 		break;
 | |
| 
 | |
| 	case 'ldap':
 | |
| 	default:
 | |
| 		$jpeg_data = $app['server']->getDNAttrValues($request['dn'],null,LDAP_DEREF_NEVER,array($request['attr']));
 | |
| 
 | |
| 		break;
 | |
| }
 | |
| 
 | |
| if (! isset($jpeg_data[$request['attr']][$request['index']])) {
 | |
| 	if (function_exists('imagecreate')) {
 | |
| 		$im = imagecreate(160,30);
 | |
| 		if (is_resource($im)) {
 | |
| 			header('Content-type: image/png');
 | |
| 
 | |
| 			# Set the background
 | |
| 			imagecolorallocatealpha($im,0xFC,0xFC,0xFE,127);
 | |
| 			$text_color = imagecolorallocate($im,0,0,0);
 | |
| 			imagestring($im,4,3,5,_('Image not available'),$text_color);
 | |
| 			imagepng($im);
 | |
| 			imagedestroy($im);
 | |
| 
 | |
| 			die();
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	# 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 image available'),
 | |
| 		'body'=>sprintf(_('Could not fetch jpeg data from LDAP server for attribute [%s].'),$request['attr']),
 | |
| 		'type'=>'warn'));
 | |
| 
 | |
| 	die();
 | |
| }
 | |
| 
 | |
| if (! is_array($jpeg_data[$request['attr']]))
 | |
| 	$jpeg_data[$request['attr']] = array($jpeg_data[$request['attr']]);
 | |
| 
 | |
| $obStatus = ob_get_status();
 | |
| if (isset($obStatus['type']) && $obStatus['type'] && $obStatus['status'])
 | |
| 	ob_end_clean();
 | |
| 
 | |
| header(sprintf('Content-type: %s',$request['type']));
 | |
| header(sprintf('Content-disposition: inline; filename="%s"',$request['filename']));
 | |
| echo $jpeg_data[$request['attr']][$request['index']];
 | |
| die();
 | |
| ?>
 |