diff options
author | josh4trunks <joshruehlig@gmail.com> | 2014-06-01 23:14:37 -0700 |
---|---|---|
committer | josh4trunks <joshruehlig@gmail.com> | 2014-06-01 23:14:37 -0700 |
commit | d0548b92c05e715dbcc7775be1be1d39b9981b6c (patch) | |
tree | de7fdefc5b80b4199ab3568137d2d97189fe6ee3 /core/avatar | |
parent | d39216c5e76b32c496ff39c19bddfbc4fa4247ac (diff) | |
download | nextcloud-server-d0548b92c05e715dbcc7775be1be1d39b9981b6c.tar.gz nextcloud-server-d0548b92c05e715dbcc7775be1be1d39b9981b6c.zip |
Automatically Rotate Avatar based on exif data
This commit..
* doesn't check if a local or uploaded file is square to give a user the option to crop square images
* caches uploaded images to an initial temporary file (needed to fix orientation)
* fixes orientation based on exif data
* works for encrypted local images as well
Diffstat (limited to 'core/avatar')
-rw-r--r-- | core/avatar/controller.php | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/core/avatar/controller.php b/core/avatar/controller.php index 06efbec3f3c..03eb9da1dc5 100644 --- a/core/avatar/controller.php +++ b/core/avatar/controller.php @@ -46,7 +46,12 @@ class Controller { if (isset($_POST['path'])) { $path = stripslashes($_POST['path']); $view = new \OC\Files\View('/'.$user.'/files'); - $newAvatar = $view->file_get_contents($path); + $fileInfo = $view->getFileInfo($path); + if($fileInfo['encrypted'] === true) { + $fileName = $view->toTmpFile($path); + } else { + $fileName = $view->getLocalFile($path); + } } elseif (!empty($_FILES)) { $files = $_FILES['files']; if ( @@ -54,7 +59,9 @@ class Controller { is_uploaded_file($files['tmp_name'][0]) && !\OC\Files\Filesystem::isFileBlacklisted($files['tmp_name'][0]) ) { - $newAvatar = file_get_contents($files['tmp_name'][0]); + \OC\Cache::set('avatar_upload', file_get_contents($files['tmp_name'][0]), 7200); + $view = new \OC\Files\View('/'.$user.'/cache'); + $fileName = $view->getLocalFile('avatar_upload'); unlink($files['tmp_name'][0]); } } else { @@ -64,11 +71,9 @@ class Controller { } try { - $avatar = new \OC_Avatar($user); - $avatar->set($newAvatar); - \OC_JSON::success(); - } catch (\OC\NotSquareException $e) { - $image = new \OC_Image($newAvatar); + $image = new \OC_Image(); + $image->loadFromFile($fileName); + $image->fixOrientation(); if ($image->valid()) { \OC\Cache::set('tmpavatar', $image->data(), 7200); |