summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/dav/lib/CardDAV/ImageExportPlugin.php1
-rw-r--r--apps/dav/lib/CardDAV/PhotoCache.php13
2 files changed, 10 insertions, 4 deletions
diff --git a/apps/dav/lib/CardDAV/ImageExportPlugin.php b/apps/dav/lib/CardDAV/ImageExportPlugin.php
index cac8e795747..7aa95922f1a 100644
--- a/apps/dav/lib/CardDAV/ImageExportPlugin.php
+++ b/apps/dav/lib/CardDAV/ImageExportPlugin.php
@@ -108,6 +108,7 @@ class ImageExportPlugin extends ServerPlugin {
$response->setBody($file->getContent());
} catch (NotFoundException $e) {
+ var_dump($e);
$response->setStatus(404);
}
diff --git a/apps/dav/lib/CardDAV/PhotoCache.php b/apps/dav/lib/CardDAV/PhotoCache.php
index 0029af7bff7..2f3cc66f1de 100644
--- a/apps/dav/lib/CardDAV/PhotoCache.php
+++ b/apps/dav/lib/CardDAV/PhotoCache.php
@@ -30,6 +30,7 @@ use OCP\Files\SimpleFS\ISimpleFile;
use OCP\Files\SimpleFS\ISimpleFolder;
use Sabre\CardDAV\Card;
use Sabre\VObject\Property\Binary;
+use Sabre\VObject\Property\Uri;
use Sabre\VObject\Reader;
class PhotoCache {
@@ -193,12 +194,13 @@ class PhotoCache {
}
$photo = $vObject->PHOTO;
- $type = $this->getType($photo);
-
$val = $photo->getValue();
+
+ // handle data URI. e.g PHOTO;VALUE=URI:data:image/jpeg;base64,/9j/4AAQSkZJRgABAQE
if ($photo->getValueType() === 'URI') {
$parsed = \Sabre\URI\parse($val);
- //only allow data://
+
+ // only allow data://
if ($parsed['scheme'] !== 'data') {
return false;
}
@@ -206,6 +208,9 @@ class PhotoCache {
list($type,) = explode(';', $parsed['path']);
}
$val = file_get_contents($val);
+ } else {
+ // get type if binary data
+ $type = $this->getBinaryType($photo);
}
$allowedContentTypes = [
@@ -240,7 +245,7 @@ class PhotoCache {
* @param Binary $photo
* @return string
*/
- private function getType(Binary $photo) {
+ private function getBinaryType(Binary $photo) {
$params = $photo->parameters();
if (isset($params['TYPE']) || isset($params['MEDIATYPE'])) {
/** @var Parameter $typeParam */