瀏覽代碼

[Avatar] Fix cache usage and other minor bugs

remotes/upstream/experimental
父節點
當前提交
4820a863a9
簽署人: someonewithpc <hugo@hsal.es> GPG Key ID: 7D0C7EAFC9D835A0
共有 3 個文件被更改,包括 18 次插入31 次删除
  1. +4
    -4
      components/Avatar/Avatar.php
  2. +8
    -8
      components/Avatar/Entity/Avatar.php
  3. +6
    -19
      src/Entity/AttachmentThumbnail.php

+ 4
- 4
components/Avatar/Avatar.php 查看文件

@@ -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',


+ 8
- 8
components/Avatar/Entity/Avatar.php 查看文件

@@ -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'],
],


+ 6
- 19
src/Entity/AttachmentThumbnail.php 查看文件

@@ -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…
取消
儲存