/** * @param VCard $vCard * @param IUser $user * @return bool */ public function updateCard(VCard $vCard, IUser $user) { $uid = $user->getUID(); $displayName = $user->getDisplayName(); $displayName = empty($displayName) ? $uid : $displayName; $emailAddress = $user->getEMailAddress(); $cloudId = $user->getCloudId(); $image = $user->getAvatarImage(-1); $updated = false; if ($this->propertyNeedsUpdate($vCard, 'FN', $displayName)) { $vCard->FN = new Text($vCard, 'FN', $displayName); unset($vCard->N); $vCard->add(new Text($vCard, 'N', $this->splitFullName($displayName))); $updated = true; } if ($this->propertyNeedsUpdate($vCard, 'EMAIL', $emailAddress)) { $vCard->EMAIL = new Text($vCard, 'EMAIL', $emailAddress); $updated = true; } if ($this->propertyNeedsUpdate($vCard, 'CLOUD', $cloudId)) { $vCard->CLOUD = new Text($vCard, 'CLOUD', $cloudId); $updated = true; } if ($this->propertyNeedsUpdate($vCard, 'PHOTO', $image)) { $vCard->add('PHOTO', $image->data(), ['ENCODING' => 'b', 'TYPE' => $image->mimeType()]); $updated = true; } if (empty($emailAddress) && !is_null($vCard->EMAIL)) { unset($vCard->EMAIL); $updated = true; } if (empty($cloudId) && !is_null($vCard->CLOUD)) { unset($vCard->CLOUD); $updated = true; } if (empty($image) && !is_null($vCard->PHOTO)) { unset($vCard->PHOTO); $updated = true; } return $updated; }
/** * @param IUser $user * @return null|IImage */ private function getAvatarImage(IUser $user) { try { $image = $user->getAvatarImage(-1); return $image; } catch (\Exception $ex) { return null; } }