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();
							 | 
						||
| 
								 | 
							
								?>
							 |