use Friendica\Model\Post;
use Friendica\Model\Profile;
use Friendica\Model\Storage\ExternalResource;
-use Friendica\Model\Storage\ReferenceStorageException;
-use Friendica\Model\Storage\StorageException;
use Friendica\Model\Storage\SystemResource;
-use Friendica\Network\HTTPException\InternalServerErrorException;
-use Friendica\Network\HTTPException\NotFoundException;
-use Friendica\Util\Proxy;
+use Friendica\Model\User;
+use Friendica\Network\HTTPException;
use Friendica\Object\Image;
use Friendica\Util\Images;
use Friendica\Util\Network;
+use Friendica\Util\Proxy;
/**
* Photo Module
$customsize = 0;
$square_resize = true;
- $photo = false;
$scale = null;
$stamp = microtime(true);
- if (!empty($parameters['customsize'])) {
- $customsize = intval($parameters['customsize']);
- $uid = MPhoto::stripExtension($parameters['name']);
- $photo = self::getAvatar($uid, $parameters['type'], $customsize);
- $square_resize = !in_array($parameters['type'], ['media', 'preview']);
- } elseif (!empty($parameters['type'])) {
- $uid = MPhoto::stripExtension($parameters['name']);
- $photo = self::getAvatar($uid, $parameters['type'], Proxy::PIXEL_SMALL);
- } elseif (!empty($parameters['name'])) {
- $photoid = MPhoto::stripExtension($parameters['name']);
+ // User avatar
+ if (!empty($parameters['type'])) {
+ if (!empty($parameters['customsize'])) {
+ $customsize = intval($parameters['customsize']);
+ $square_resize = !in_array($parameters['type'], ['media', 'preview']);
+ }
+
+ if (!empty($parameters['nickname_ext'])) {
+ $nickname = pathinfo($parameters['nickname_ext'], PATHINFO_FILENAME);
+ $user = User::getByNickname($nickname, ['uid']);
+ if (empty($user)) {
+ throw new HTTPException\NotFoundException();
+ }
+
+ $uid = $user['uid'];
+ }
+
+ // User Id Fallback, to remove after version 2021.12
+ if (!empty($parameters['uid_ext'])) {
+ $uid = intval(pathinfo($parameters['uid_ext'], PATHINFO_FILENAME));
+ }
+
+ // Please refactor this for the love of everything that's good
+ if (!empty($parameters['id'])) {
+ $uid = $parameters['id'];
+ }
+
+ $photo = self::getAvatar($uid, $parameters['type'], $customsize ?: Proxy::PIXEL_SMALL);
+ } else {
+ $photoid = pathinfo($parameters['name'], PATHINFO_FILENAME);
$scale = 0;
if (substr($photoid, -2, 1) == "-") {
$scale = intval(substr($photoid, -1, 1));
}
$photo = MPhoto::getPhoto($photoid, $scale);
if ($photo === false) {
- throw new \Friendica\Network\HTTPException\NotFoundException(DI::l10n()->t('The Photo with id %s is not available.', $photoid));
+ throw new HTTPException\NotFoundException(DI::l10n()->t('The Photo with id %s is not available.', $photoid));
}
- } else {
- throw new \Friendica\Network\HTTPException\BadRequestException();
}
+
$fetch = microtime(true) - $stamp;
if ($photo === false) {
- throw new \Friendica\Network\HTTPException\NotFoundException();
+ throw new HTTPException\NotFoundException();
}
$cacheable = ($photo["allow_cid"] . $photo["allow_gid"] . $photo["deny_cid"] . $photo["deny_gid"] === "") && (isset($photo["cacheable"]) ? $photo["cacheable"] : true);
$imgdata = MPhoto::getImageDataForPhoto($photo);
if (empty($imgdata)) {
- throw new NotFoundException();
+ throw new HTTPException\NotFoundException();
}
// The mimetype for an external or system resource can only be known reliably after it had been fetched
} else {
$error = DI::l10n()->t('Invalid photo with id %s.', $photo['id']);
}
- throw new \Friendica\Network\HTTPException\InternalServerErrorException($error);
+ throw new HTTPException\InternalServerErrorException($error);
}
// if customsize is set and image is not a gif, resize it
exit();
}
- private static function getAvatar($uid, $type="avatar", $customsize)
+ private static function getAvatar(int $uid, $type, $customsize)
{
switch($type) {
case "preview":