Ensure non-NULL values in $data array in Contact::updateAvatar

- Throw Exception instead of returning false if contact doesn't exist
- Address https://github.com/friendica/friendica/issues/7998#issuecomment-596271239
This commit is contained in:
Hypolite Petovan 2020-03-09 11:12:33 -04:00
parent 2702732308
commit 89534b5be3

View file

@ -1913,17 +1913,23 @@ class Contact
*
* @return array Returns array of the different avatar sizes
* @throws HTTPException\InternalServerErrorException
* @throws HTTPException\NotFoundException
* @throws \ImagickException
*/
public static function updateAvatar($avatar, $uid, $cid, $force = false)
{
$contact = DBA::selectFirst('contact', ['avatar', 'photo', 'thumb', 'micro', 'nurl'], ['id' => $cid, 'self' => false]);
if (!DBA::isResult($contact)) {
return false;
} else {
$data = [$contact["photo"], $contact["thumb"], $contact["micro"]];
Logger::error('Contact not found', ['cid' => $cid]);
throw new HTTPException\NotFoundException('Contact not found');
}
$data = [
$contact['photo'] ?? '',
$contact['thumb'] ?? '',
$contact['micro'] ?? '',
];
foreach ($data as $image_uri) {
$image_rid = Photo::ridFromURI($image_uri);
if ($image_rid && !Photo::exists(['resource-id' => $image_rid, 'uid' => $uid])) {