forked from GNUsocial/gnu-social
[Avatar] Fix cache usage and other minor bugs
This commit is contained in:
parent
64c881173b
commit
4820a863a9
@ -63,9 +63,9 @@ class Avatar extends Component
|
||||
|
||||
public function onAvatarUpdate(int $actor_id): bool
|
||||
{
|
||||
Cache::delete("avatar-{$actor_id}");
|
||||
foreach (['full', 'big', 'medium', 'small'] as $size) {
|
||||
foreach ([Router::ABSOLUTE_PATH, Router::ABSOLUTE_URL] as $type) {
|
||||
Cache::delete("avatar-{$actor_id}-{$size}-{$type}");
|
||||
Cache::delete("avatar-url-{$actor_id}-{$size}-{$type}");
|
||||
Cache::delete("avatar-file-info-{$actor_id}-{$size}-{$type}");
|
||||
}
|
||||
@ -109,11 +109,11 @@ class Avatar extends Component
|
||||
* Returns the avatar file's hash, mimetype, title and path.
|
||||
* Ensures exactly one cached value exists
|
||||
*/
|
||||
public static function getAvatarFileInfo(int $actor_id, int $size = 0): array
|
||||
public static function getAvatarFileInfo(int $actor_id, string $size = 'full'): array
|
||||
{
|
||||
$res = Cache::get("avatar-file-info-{$actor_id}",
|
||||
$res = Cache::get("avatar-file-info-{$actor_id}-{$size}",
|
||||
function () use ($actor_id) {
|
||||
return DB::dql('select f.id, f.filename, a.filename title, f.mimetype ' .
|
||||
return DB::dql('select f.id, f.filename, a.title, f.mimetype ' .
|
||||
'from App\Entity\Attachment f ' .
|
||||
'join Component\Avatar\Entity\Avatar a with f.id = a.attachment_id ' .
|
||||
'where a.actor_id = :actor_id',
|
||||
|
@ -49,7 +49,7 @@ class Avatar extends Entity
|
||||
// @codeCoverageIgnoreStart
|
||||
private int $actor_id;
|
||||
private int $attachment_id;
|
||||
private ?string $filename;
|
||||
private ?string $title;
|
||||
private DateTimeInterface $created;
|
||||
private DateTimeInterface $modified;
|
||||
|
||||
@ -78,17 +78,17 @@ class Avatar extends Entity
|
||||
/**
|
||||
* @return null|string
|
||||
*/
|
||||
public function getFilename(): ?string
|
||||
public function getTitle(): ?string
|
||||
{
|
||||
return $this->filename;
|
||||
return $this->title;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param null|string $filename
|
||||
* @param null|string $title
|
||||
*/
|
||||
public function setFilename(?string $filename): void
|
||||
public function setTitle(?string $title): void
|
||||
{
|
||||
$this->filename = $filename;
|
||||
$this->title = $title;
|
||||
}
|
||||
|
||||
public function setCreated(DateTimeInterface $created): self
|
||||
@ -128,7 +128,7 @@ class Avatar extends Entity
|
||||
|
||||
public function getAttachment(): Attachment
|
||||
{
|
||||
$this->attachment = $this->attachment ?: DB::findOneBy('attachment', ['id' => $this->attachment_id]);
|
||||
$this->attachment = $this->attachment ?? DB::findOneBy('attachment', ['id' => $this->attachment_id]);
|
||||
return $this->attachment;
|
||||
}
|
||||
|
||||
@ -163,7 +163,7 @@ class Avatar extends Entity
|
||||
'fields' => [
|
||||
'actor_id' => ['type' => 'int', 'foreign key' => true, 'target' => 'Actor.id', 'multiplicity' => 'one to one', 'not null' => true, 'description' => 'foreign key to actor table'],
|
||||
'attachment_id' => ['type' => 'int', 'foreign key' => true, 'target' => 'Attachment.id', 'multiplicity' => 'one to one', 'not null' => true, 'description' => 'foreign key to attachment table'],
|
||||
'filename' => ['type' => 'varchar', 'length' => 191, 'description' => 'file name of resource when available'],
|
||||
'title' => ['type' => 'varchar', 'length' => 191, 'description' => 'file name of resource when available'],
|
||||
'created' => ['type' => 'datetime', 'not null' => true, 'description' => 'date this record was created', 'default' => 'CURRENT_TIMESTAMP'],
|
||||
'modified' => ['type' => 'timestamp', 'not null' => true, 'description' => 'date this record was modified', 'default' => 'CURRENT_TIMESTAMP'],
|
||||
],
|
||||
|
@ -89,17 +89,6 @@ class AttachmentThumbnail extends Entity
|
||||
return $this->mimetype;
|
||||
}
|
||||
|
||||
public function setWidth(int $width): self
|
||||
{
|
||||
$this->width = $width;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getWidth(): int
|
||||
{
|
||||
return $this->width;
|
||||
}
|
||||
|
||||
public function getSize(): int
|
||||
{
|
||||
return $this->size;
|
||||
@ -154,8 +143,7 @@ class AttachmentThumbnail extends Entity
|
||||
|
||||
/**
|
||||
* @param Attachment $attachment
|
||||
* @param int $width
|
||||
* @param int $height
|
||||
* @param ?string $size
|
||||
* @param bool $crop
|
||||
*
|
||||
* @throws ClientException
|
||||
@ -174,7 +162,7 @@ class AttachmentThumbnail extends Entity
|
||||
};
|
||||
try {
|
||||
return Cache::get('thumb-' . $attachment->getId() . "-{$size}",
|
||||
function () use ($crop, $attachment, $size_int) {
|
||||
function () use ($attachment, $size_int) {
|
||||
return DB::findOneBy('attachment_thumbnail', ['attachment_id' => $attachment->getId(), 'size' => $size_int]);
|
||||
});
|
||||
} catch (NotFoundException) {
|
||||
@ -250,11 +238,10 @@ class AttachmentThumbnail extends Entity
|
||||
* Values will scale _up_ to fit max values if cropping is enabled!
|
||||
* With cropping disabled, the max value of each axis will be respected.
|
||||
*
|
||||
* @param int $existing_width Original width
|
||||
* @param int $existing_height Original height
|
||||
* @param int $allowed_aspect_ratios
|
||||
* @param int $requested_size
|
||||
* @param bool $crop
|
||||
* @param int $existing_width Original width
|
||||
* @param int $existing_height Original height
|
||||
* @param string $requested_size
|
||||
* @param bool $crop
|
||||
*
|
||||
* @return array [predicted width, predicted height]
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user