phpLDAPadmin и картинки в безе LDAP

Материал из Lblss.ru
Перейти к: навигация, поиск

Установил phpLDAPadmin RELEASE-1.2.0.4 с целью добавления фотографий сотрудников. Однако, с картинками работать там оказалось несколько проблемно. Немного покопавшись в коде, сделал парочку изменений.

Изменения

Файл lib/ds_ldap.php - в функции isAttrBinary примерно в районе 2222 строки добавляем нужные типы атрибутов. Это позволит вместо Textarea для многострочного кода вывести элементы управления для удаления или загрузки бинарного содержимого. Добавляем три строки:

...
strcasecmp($attr_name,'jpegPhoto') == 0 ||
strcasecmp($attr_name,'thumbnailPhoto') == 0 ||  /* added for pictures */
strcasecmp($attr_name,'thumbnailLogo') == 0 ||   /* added for pictures */
strcasecmp($attr_name,'photo') == 0 ||           /* added for pictures */
$syntax == '1.3.6.1.4.1.1466.115.121.1.10' ||
...

Файл lib/PageRender.php - в функции drawFormReadWriteValueBinaryAttribute добавляем отображение картинок. Вообще, и без этого работает, но всё же удобней, когда видно данные не в байтах или символах, а картинку, как она есть :-)

	protected function drawFormReadWriteValueBinaryAttribute($attribute,$i) {
		if (DEBUGTMP) printf('<font size=-2>%s</font><br />',__METHOD__);
 
		if ($attribute->getValue($i)) {
			$this->draw('FormReadOnlyValue',$attribute,$i);
 
			if (! $attribute->isReadOnly() && $_SESSION[APPCONFIG]->isCommandAvailable('script','delete_attr'))
				printf('<a href="javascript:deleteAttribute(\'%s\',\'%s\',\'%s\');" style="color:red;"><img src="%s/trash.png" alt="Trash" /> %s</a>',
					$attribute->getName(),$attribute->getFriendlyName(),$i,IMGDIR,_('delete attribute'));
 
                                // Added for picture output
                                if ($attribute->getName() == 'thumbnailphoto' || 
                                    $attribute->getName() == 'photo' || 
                                    $attribute->getName() == 'thumbnailLogo' || 
                                    $attribute->getName() == 'jpegphoto')
                                        printf('<br /><br /><img src="data:image/png;base64,%s" alt="Картинка" />',
                                            base64_encode($attribute->getValue($i)));
                                // End of Added for picture output
		} else {
....

Замечания

Так как в основном использую Firefox, где картинка показывается нормально, сразу не обратил внимания. В IE видно только половину картинки. Может быть, когда-нибудь разберусь и поправлю.

Персональные инструменты