From e3692c01053d4714292449d1170ef2d60ad575d7 Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 9 May 2022 04:26:00 +0000 Subject: [PATCH] Replaced check with hardwired path --- src/Content/Conversation.php | 7 ++++--- src/Model/Contact.php | 8 ++++---- src/Model/Photo.php | 12 ++++++++++++ src/Object/Post.php | 5 +++-- 4 files changed, 23 insertions(+), 9 deletions(-) diff --git a/src/Content/Conversation.php b/src/Content/Conversation.php index fdb1f51d89..a86c7f5081 100644 --- a/src/Content/Conversation.php +++ b/src/Content/Conversation.php @@ -37,6 +37,7 @@ use Friendica\Core\Theme; use Friendica\Database\DBA; use Friendica\Model\Contact; use Friendica\Model\Item as ItemModel; +use Friendica\Model\Photo; use Friendica\Model\Post; use Friendica\Model\Tag; use Friendica\Model\User; @@ -672,11 +673,11 @@ class Conversation $author_thumb = $item['author-avatar']; } - if (!Contact::isAvatarFile($owner_thumb)) { + if (empty($owner_thumb) || Photo::isPhotoURI($owner_thumb)) { $owner_thumb = Contact::getAvatarUrlForId($owner_avatar, Proxy::SIZE_THUMB, $owner_updated); } - - if (!Contact::isAvatarFile($author_thumb)) { + + if (empty($author_thumb) || Photo::isPhotoURI($author_thumb)) { $author_thumb = Contact::getAvatarUrlForId($author_avatar, Proxy::SIZE_THUMB, $author_updated); } diff --git a/src/Model/Contact.php b/src/Model/Contact.php index f16a2e9c8a..ca286ab587 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -1611,17 +1611,17 @@ class Contact if (DI::config()->get('system', 'avatar_cache')) { switch ($size) { case Proxy::SIZE_MICRO: - if (self::isAvatarFile($contact['micro'])) { + if (!empty($contact['micro']) && !Photo::isPhotoURI($contact['micro'])) { return $contact['micro']; } break; case Proxy::SIZE_THUMB: - if (self::isAvatarFile($contact['thumb'])) { + if (!empty($contact['thumb']) && !Photo::isPhotoURI($contact['thumb'])) { return $contact['thumb']; } break; case Proxy::SIZE_SMALL: - if (self::isAvatarFile($contact['photo'])) { + if (!empty($contact['photo']) && !Photo::isPhotoURI($contact['photo'])) { return $contact['photo']; } break; @@ -2187,7 +2187,7 @@ class Contact * @param string $avatar * @return boolean */ - public static function isAvatarFile(string $avatar): bool + private static function isAvatarFile(string $avatar): bool { return !empty(self::getAvatarFile($avatar)); } diff --git a/src/Model/Photo.php b/src/Model/Photo.php index 8583577890..6537c41d1f 100644 --- a/src/Model/Photo.php +++ b/src/Model/Photo.php @@ -710,6 +710,18 @@ class Photo return $image_uri; } + /** + * Checks if the given URL is a local photo. + * Since it is meant for time critical occasions, the check is done without any database requests. + * + * @param string $url + * @return boolean + */ + public static function isPhotoURI(string $url): bool + { + return !empty(self::ridFromURI($url)); + } + /** * Changes photo permissions that had been embedded in a post * diff --git a/src/Object/Post.php b/src/Object/Post.php index 0a7bea91bd..3c01028292 100644 --- a/src/Object/Post.php +++ b/src/Object/Post.php @@ -32,6 +32,7 @@ use Friendica\Core\Session; use Friendica\DI; use Friendica\Model\Contact; use Friendica\Model\Item; +use Friendica\Model\Photo; use Friendica\Model\Post as PostModel; use Friendica\Model\Tag; use Friendica\Model\User; @@ -463,11 +464,11 @@ class Post $author_thumb = $item['author-avatar']; } - if (!Contact::isAvatarFile($owner_thumb)) { + if (empty($owner_thumb) || Photo::isPhotoURI($owner_thumb)) { $owner_thumb = Contact::getAvatarUrlForId($owner_avatar, Proxy::SIZE_THUMB, $owner_updated); } - if (!Contact::isAvatarFile($author_thumb)) { + if (empty($author_thumb) || Photo::isPhotoURI($author_thumb)) { $author_thumb = Contact::getAvatarUrlForId($author_avatar, Proxy::SIZE_THUMB, $author_updated); }