Ensure that cached avatar fields are set
This commit is contained in:
parent
18617f6c48
commit
6ab82eaa49
2 changed files with 51 additions and 0 deletions
|
@ -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 checkAvatarCacheArray(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
|
||||||
*
|
*
|
||||||
|
|
|
@ -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::checkAvatarCacheArray($contact);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (DBA::isResult($contact)) {
|
if (DBA::isResult($contact)) {
|
||||||
|
|
Loading…
Reference in a new issue