move render code to modules

This commit is contained in:
Roland Gruber 2022-08-20 20:43:05 +02:00
parent 876ae6c409
commit 76935df161
4 changed files with 57 additions and 25 deletions

View file

@ -1595,7 +1595,7 @@ class moduleCache {
* @return int random number * @return int random number
*/ */
function getRandomNumber() { function getRandomNumber() {
return abs(hexdec(bin2hex(openssl_random_pseudo_bytes(5)))); return abs(hexdec(bin2hex(openssl_random_pseudo_bytes(6))));
} }
/** /**

View file

@ -4628,6 +4628,34 @@ class inetOrgPerson extends baseModule implements passwordService,AccountStatusP
return $group; return $group;
}; };
} }
elseif ($attributeName === 'jpegphoto') {
return function(array $entry, string $attribute): ?htmlElement {
if (isset($entry[$attribute][0]) && ($entry[$attribute][0] !== '')) {
if (strlen($entry[$attribute][0]) < 100) {
// looks like we have read broken binary data, reread photo
$result = @ldap_read($_SESSION['ldap']->server(), $entry['dn'], $attribute . "=*", array($attribute), 0, 0, 0, LDAP_DEREF_NEVER);
if ($result) {
$tempEntry = @ldap_first_entry($_SESSION['ldap']->server(), $result);
if ($tempEntry) {
$binData = ldap_get_values_len($_SESSION['ldap']->server(), $tempEntry, $attribute);
$entry[$attribute] = $binData;
}
}
}
$imgNumber = getRandomNumber();
$jpeg_filename = 'jpg' . $imgNumber . '.jpg';
$outjpeg = @fopen(dirname(__FILE__) . '/../../tmp/' . $jpeg_filename, "wb");
fwrite($outjpeg, $entry[$attribute][0]);
fclose ($outjpeg);
$photoFile = '../../tmp/' . $jpeg_filename;
$image = new htmlImage($photoFile);
$image->enableLightbox();
$image->setCSSClasses(array('thumbnail'));
return $image;
}
return null;
};
}
return null; return null;
} }

View file

@ -4536,6 +4536,34 @@ class windowsUser extends baseModule implements passwordService,AccountStatusPro
return $group; return $group;
}; };
} }
elseif ($attributeName === 'jpegphoto') {
return function(array $entry, string $attribute): ?htmlElement {
if (isset($entry[$attribute][0]) && ($entry[$attribute][0] !== '')) {
if (strlen($entry[$attribute][0]) < 100) {
// looks like we have read broken binary data, reread photo
$result = @ldap_read($_SESSION['ldap']->server(), $entry['dn'], $attribute . "=*", array($attribute), 0, 0, 0, LDAP_DEREF_NEVER);
if ($result) {
$tempEntry = @ldap_first_entry($_SESSION['ldap']->server(), $result);
if ($tempEntry) {
$binData = ldap_get_values_len($_SESSION['ldap']->server(), $tempEntry, $attribute);
$entry[$attribute] = $binData;
}
}
}
$imgNumber = getRandomNumber();
$jpeg_filename = 'jpg' . $imgNumber . '.jpg';
$outjpeg = @fopen(dirname(__FILE__) . '/../../tmp/' . $jpeg_filename, "wb");
fwrite($outjpeg, $entry[$attribute][0]);
fclose ($outjpeg);
$photoFile = '../../tmp/' . $jpeg_filename;
$image = new htmlImage($photoFile);
$image->enableLightbox();
$image->setCSSClasses(array('thumbnail'));
return $image;
}
return null;
};
}
return null; return null;
} }

View file

@ -506,30 +506,6 @@ class lamUserList extends lamList {
return parent::getTableCellContent($entry, $attribute); return parent::getTableCellContent($entry, $attribute);
} }
} }
// show user photos
elseif (($attribute == "jpegphoto") && (!empty($entry[$attribute][0]))) {
if (strlen($entry[$attribute][0]) < 100) {
// looks like we have read broken binary data, reread photo
$result = @ldap_read($_SESSION['ldap']->server(), $entry['dn'], $attribute . "=*", array($attribute), 0, 0, 0, LDAP_DEREF_NEVER);
if ($result) {
$tempEntry = @ldap_first_entry($_SESSION['ldap']->server(), $result);
if ($tempEntry) {
$binData = ldap_get_values_len($_SESSION['ldap']->server(), $tempEntry, $attribute);
$entry[$attribute] = $binData;
}
}
}
$imgNumber = getRandomNumber();
$jpeg_filename = 'jpg' . $imgNumber . '.jpg';
$outjpeg = @fopen(dirname(__FILE__) . '/../../tmp/' . $jpeg_filename, "wb");
fwrite($outjpeg, $entry[$attribute][0]);
fclose ($outjpeg);
$photoFile = '../../tmp/' . $jpeg_filename;
$image = new htmlImage($photoFile);
$image->enableLightbox();
$image->setCSSClasses(array('thumbnail'));
return $image;
}
// account status // account status
elseif ($attribute == self::ATTR_ACCOUNT_STATUS) { elseif ($attribute == self::ATTR_ACCOUNT_STATUS) {
return $this->getAccountStatus($entry); return $this->getAccountStatus($entry);