Merge pull request #8933 from annando/Ensure-that-cached-avatar-fields-are-set

Ensure that cached avatar fields are set
This commit is contained in:
Hypolite Petovan 2020-07-27 08:11:09 -04:00 committed by GitHub
commit 1314d9803c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 51 additions and 0 deletions

View file

@ -1787,6 +1787,54 @@ class Contact
self::updateAvatar($cid, $contact['avatar'], true); self::updateAvatar($cid, $contact['avatar'], true);
} }
/**
* Check the given contact array for avatar cache fields
*
* @param array $contact
* @return array contact array with avatar cache fields
*/
public static function checkAvatarCacheByArray(array $contact)
{
$update = false;
$contact_fields = [];
$fields = ['photo', 'thumb', 'micro'];
foreach ($fields as $field) {
if (isset($contact[$field])) {
$contact_fields[] = $field;
}
if (isset($contact[$field]) && empty($contact[$field])) {
$update = true;
}
}
if (!$update) {
return $contact;
}
if (!empty($contact['id']) && !empty($contact['avatar'])) {
self::updateAvatar($contact['id'], $contact['avatar'], true);
$new_contact = self::getById($contact['id'], $contact_fields);
if (DBA::isResult($new_contact)) {
// We only update the cache fields
$contact = array_merge($contact, $new_contact);
}
}
/// add the default avatars if the fields aren't filled
if (isset($contact['photo']) && empty($contact['photo'])) {
$contact['photo'] = DI::baseUrl() . '/images/person-300.jpg';
}
if (isset($contact['thumb']) && empty($contact['thumb'])) {
$contact['thumb'] = DI::baseUrl() . '/images/person-80.jpg';
}
if (isset($contact['micro']) && empty($contact['micro'])) {
$contact['micro'] = DI::baseUrl() . '/images/person-48.jpg';
}
return $contact;
}
/** /**
* Updates the avatar links in a contact only if needed * Updates the avatar links in a contact only if needed
* *

View file

@ -36,6 +36,7 @@ use Friendica\Core\Worker;
use Friendica\Database\DBA; use Friendica\Database\DBA;
use Friendica\DI; use Friendica\DI;
use Friendica\Model; use Friendica\Model;
use Friendica\Model\Contact as ModelContact;
use Friendica\Module\Security\Login; use Friendica\Module\Security\Login;
use Friendica\Network\HTTPException\BadRequestException; use Friendica\Network\HTTPException\BadRequestException;
use Friendica\Network\HTTPException\NotFoundException; use Friendica\Network\HTTPException\NotFoundException;
@ -278,6 +279,8 @@ class Contact extends BaseModule
if ($contact['network'] == Protocol::PHANTOM) { if ($contact['network'] == Protocol::PHANTOM) {
$contact = false; $contact = false;
} }
$contact = ModelContact::checkAvatarCacheByArray($contact);
} }
if (DBA::isResult($contact)) { if (DBA::isResult($contact)) {