From 54e750ba7845d0333cdb0fdccdb54f1432b2c161 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Fri, 11 Mar 2016 13:44:35 +0100 Subject: [PATCH] dont die when we cant save the resized avatar, log instead --- lib/private/Server.php | 3 ++- lib/private/avatar.php | 16 +++++++++++++--- lib/private/avatarmanager.php | 11 +++++++++-- tests/lib/avatartest.php | 2 +- 4 files changed, 25 insertions(+), 7 deletions(-) diff --git a/lib/private/Server.php b/lib/private/Server.php index 81187cdd71..70c16dd41a 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 8ed920c9b1..4b9d3d8240 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 3b619cda57..62f4faf436 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); } } diff --git a/tests/lib/avatartest.php b/tests/lib/avatartest.php index e7d7831108..b2b69ac1a6 100644 --- a/tests/lib/avatartest.php +++ b/tests/lib/avatartest.php @@ -27,7 +27,7 @@ class AvatarTest extends \Test\TestCase { $l = $this->getMock('\OCP\IL10N'); $l->method('t')->will($this->returnArgument(0)); $this->user = $this->getMockBuilder('\OC\User\User')->disableOriginalConstructor()->getMock(); - $this->avatar = new \OC\Avatar($this->folder, $l, $this->user); + $this->avatar = new \OC\Avatar($this->folder, $l, $this->user, $this->getMock('\OCP\ILogger')); } public function testGetNoAvatar() {