Skip to content

Commit

Permalink
Merge pull request #42899 from nextcloud/backport/42860/stable28
Browse files Browse the repository at this point in the history
[stable28] Update ContactsStore: Avoid exceptions on empties
  • Loading branch information
blizzz committed Jan 18, 2024
2 parents 0f3af00 + 2a386f8 commit c16744c
Showing 1 changed file with 7 additions and 6 deletions.
13 changes: 7 additions & 6 deletions lib/private/Contacts/ContactsMenu/ContactsStore.php
Original file line number Diff line number Diff line change
Expand Up @@ -334,38 +334,39 @@ public function findOne(IUser $user, int $shareType, string $shareWith): ?IEntry
private function contactArrayToEntry(array $contact): Entry {
$entry = new Entry();

if (isset($contact['UID'])) {
if (!empty($contact['UID'])) {
$uid = $contact['UID'];
$entry->setId($uid);
$entry->setProperty('isUser', false);
// overloaded usage so leaving as-is for now
if (isset($contact['isLocalSystemBook'])) {
$avatar = $this->urlGenerator->linkToRouteAbsolute('core.avatar.getAvatar', ['userId' => $uid, 'size' => 64]);
$entry->setProperty('isUser', true);
} elseif (isset($contact['FN'])) {
} elseif (!empty($contact['FN'])) {
$avatar = $this->urlGenerator->linkToRouteAbsolute('core.GuestAvatar.getAvatar', ['guestName' => $contact['FN'], 'size' => 64]);
} else {
$avatar = $this->urlGenerator->linkToRouteAbsolute('core.GuestAvatar.getAvatar', ['guestName' => $uid, 'size' => 64]);
}
$entry->setAvatar($avatar);
}

if (isset($contact['FN'])) {
if (!empty($contact['FN'])) {
$entry->setFullName($contact['FN']);
}

$avatarPrefix = "VALUE=uri:";
if (isset($contact['PHOTO']) && str_starts_with($contact['PHOTO'], $avatarPrefix)) {
if (!empty($contact['PHOTO']) && str_starts_with($contact['PHOTO'], $avatarPrefix)) {
$entry->setAvatar(substr($contact['PHOTO'], strlen($avatarPrefix)));
}

if (isset($contact['EMAIL'])) {
if (!empty($contact['EMAIL'])) {
foreach ($contact['EMAIL'] as $email) {
$entry->addEMailAddress($email);
}
}

// Provide profile parameters for core/src/OC/contactsmenu/contact.handlebars template
if (isset($contact['UID']) && isset($contact['FN'])) {
if (!empty($contact['UID']) && !empty($contact['FN'])) {
$targetUserId = $contact['UID'];
$targetUser = $this->userManager->get($targetUserId);
if (!empty($targetUser)) {
Expand Down

0 comments on commit c16744c

Please sign in to comment.