diff options
author | Robin Appelman <icewind@owncloud.com> | 2016-03-11 13:44:35 +0100 |
---|---|---|
committer | Robin Appelman <icewind@owncloud.com> | 2016-03-11 13:44:35 +0100 |
commit | 54e750ba7845d0333cdb0fdccdb54f1432b2c161 (patch) | |
tree | 9b2056424ea8a75e06581e95abdbca90da60829c /lib | |
parent | 750ec93394b76a3af4d45b32fd3b4dd788d431cf (diff) | |
download | nextcloud-server-54e750ba7845d0333cdb0fdccdb54f1432b2c161.tar.gz nextcloud-server-54e750ba7845d0333cdb0fdccdb54f1432b2c161.zip |
dont die when we cant save the resized avatar, log instead
Diffstat (limited to 'lib')
-rw-r--r-- | lib/private/Server.php | 3 | ||||
-rw-r--r-- | lib/private/avatar.php | 16 | ||||
-rw-r--r-- | lib/private/avatarmanager.php | 11 |
3 files changed, 24 insertions, 6 deletions
diff --git a/lib/private/Server.php b/lib/private/Server.php index 81187cdd715..70c16dd41a4 100644 --- a/lib/private/Server.php +++ b/lib/private/Server.php @@ -312,7 +312,8 @@ class Server extends ServerContainer implements IServerContainer { return new AvatarManager( $c->getUserManager(), $c->getRootFolder(), - $c->getL10N('lib') + $c->getL10N('lib'), + $c->getLogger() ); }); $this->registerService('Logger', function (Server $c) { diff --git a/lib/private/avatar.php b/lib/private/avatar.php index 8ed920c9b18..4b9d3d82404 100644 --- a/lib/private/avatar.php +++ b/lib/private/avatar.php @@ -31,10 +31,12 @@ use OC\User\User; use OCP\Files\Folder; use OCP\Files\File; use OCP\Files\NotFoundException; +use OCP\Files\NotPermittedException; use OCP\IAvatar; use OCP\IImage; use OCP\IL10N; use OC_Image; +use OCP\ILogger; /** * This class gets and sets users avatars. @@ -47,6 +49,8 @@ class Avatar implements IAvatar { private $l; /** @var User */ private $user; + /** @var ILogger */ + private $logger; /** * constructor @@ -54,11 +58,13 @@ class Avatar implements IAvatar { * @param Folder $folder The folder where the avatars are * @param IL10N $l * @param User $user + * @param ILogger $logger */ - public function __construct (Folder $folder, IL10N $l, $user) { + public function __construct (Folder $folder, IL10N $l, $user, ILogger $logger) { $this->folder = $folder; $this->l = $l; $this->user = $user; + $this->logger = $logger; } /** @@ -164,8 +170,12 @@ class Avatar implements IAvatar { if ($size !== -1) { $avatar->resize($size); } - $file = $this->folder->newFile($path); - $file->putContent($avatar->data()); + try { + $file = $this->folder->newFile($path); + $file->putContent($avatar->data()); + } catch (NotPermittedException $e) { + $this->logger->error('Failed to save avatar for ' . $this->user->getUID()); + } } return $file; diff --git a/lib/private/avatarmanager.php b/lib/private/avatarmanager.php index 3b619cda574..62f4faf436c 100644 --- a/lib/private/avatarmanager.php +++ b/lib/private/avatarmanager.php @@ -28,6 +28,7 @@ namespace OC; use OCP\Files\Folder; use OCP\Files\NotFoundException; use OCP\IAvatarManager; +use OCP\ILogger; use OCP\IUserManager; use OCP\Files\IRootFolder; use OCP\IL10N; @@ -46,20 +47,26 @@ class AvatarManager implements IAvatarManager { /** @var IL10N */ private $l; + /** @var ILogger */ + private $logger; + /** * AvatarManager constructor. * * @param IUserManager $userManager * @param IRootFolder $rootFolder * @param IL10N $l + * @param ILogger $logger */ public function __construct( IUserManager $userManager, IRootFolder $rootFolder, - IL10N $l) { + IL10N $l, + ILogger $logger) { $this->userManager = $userManager; $this->rootFolder = $rootFolder; $this->l = $l; + $this->logger = $logger; } /** @@ -85,6 +92,6 @@ class AvatarManager implements IAvatarManager { /** @var Folder $folder */ $folder = $this->rootFolder->get($dir); - return new Avatar($folder, $this->l, $user); + return new Avatar($folder, $this->l, $user, $this->logger); } } |