Browse Source

Add ico as avatar

Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
tags/v16.0.0alpha1
Daniel Kesselberg 5 years ago
parent
commit
4dbef1210c
No account linked to committer's email address
1 changed files with 32 additions and 32 deletions
  1. 32
    32
      apps/dav/lib/CardDAV/PhotoCache.php

+ 32
- 32
apps/dav/lib/CardDAV/PhotoCache.php View File

@@ -35,6 +35,14 @@ use Sabre\VObject\Reader;

class PhotoCache {

/** @var array */
protected const ALLOWED_CONTENT_TYPES = [
'image/png' => 'png',
'image/jpeg' => 'jpg',
'image/gif' => 'gif',
'application/octet-stream' => 'ico',
];

/** @var IAppData */
protected $appData;

@@ -90,27 +98,26 @@ class PhotoCache {
/**
* @param ISimpleFolder $folder
* @param Card $card
* @throws NotPermittedException
*/
private function init(ISimpleFolder $folder, Card $card) {
private function init(ISimpleFolder $folder, Card $card): void {
$data = $this->getPhoto($card);

if ($data === false) {
if ($data === false || !isset($data['Content-Type'])) {
$folder->newFile('nophoto');
} else {
switch ($data['Content-Type']) {
case 'image/png':
$ext = 'png';
break;
case 'image/jpeg':
$ext = 'jpg';
break;
case 'image/gif':
$ext = 'gif';
break;
}
$file = $folder->newFile('photo.' . $ext);
$file->putContent($data['body']);
return;
}

$contentType = $data['Content-Type'];
$extension = self::ALLOWED_CONTENT_TYPES[$contentType] ?? null;

if ($extension === null) {
$folder->newFile('nophoto');
return;
}

$file = $folder->newFile('photo.' . $extension);
$file->putContent($data['body']);
}

private function hasPhoto(ISimpleFolder $folder) {
@@ -147,7 +154,7 @@ class PhotoCache {
if ($size !== -1) {
$photo->resize($size);
}
try {
$file = $folder->newFile($path);
$file->putContent($photo->data());
@@ -180,15 +187,14 @@ class PhotoCache {
* @return string
* @throws NotFoundException
*/
private function getExtension(ISimpleFolder $folder) {
if ($folder->fileExists('photo.jpg')) {
return 'jpg';
} elseif ($folder->fileExists('photo.png')) {
return 'png';
} elseif ($folder->fileExists('photo.gif')) {
return 'gif';
private function getExtension(ISimpleFolder $folder): string {
foreach (self::ALLOWED_CONTENT_TYPES as $extension) {
if ($folder->fileExists('photo.' . $extension)) {
return $extension;
}
}
throw new NotFoundException;

throw new NotFoundException('Avatar not found');
}

private function getPhoto(Card $node) {
@@ -218,13 +224,7 @@ class PhotoCache {
$type = $this->getBinaryType($photo);
}

$allowedContentTypes = [
'image/png',
'image/jpeg',
'image/gif',
];

if (!in_array($type, $allowedContentTypes, true)) {
if (empty($type) || !isset(self::ALLOWED_CONTENT_TYPES[$type])) {
$type = 'application/octet-stream';
}


Loading…
Cancel
Save