Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Müller <thomas.mueller@tmit.eu>2016-03-29 19:49:22 +0300
committerThomas Müller <thomas.mueller@tmit.eu>2016-03-29 19:49:22 +0300
commit6b7c694a425b21274d07243e895027a6d74bb1f6 (patch)
tree760c5d3dd58eaca6bb5b573c9bd9c30be874e0d9
parent605abf90881c5bb8c289200afc318c5561e3e28f (diff)
parentb456035aa7b82a005c278395cbc25c9024761c18 (diff)
Merge pull request #23582 from owncloud/avatar-save-failure-9
[9.0] dont die when we cant save the resized avatar, log instead
-rw-r--r--lib/private/avatar.php16
-rw-r--r--lib/private/avatarmanager.php11
-rw-r--r--lib/private/server.php3
-rw-r--r--tests/lib/avatartest.php2
4 files changed, 25 insertions, 7 deletions
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);
}
}
diff --git a/lib/private/server.php b/lib/private/server.php
index d68a361955f..509c1ea0e58 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/tests/lib/avatartest.php b/tests/lib/avatartest.php
index e7d78311085..b2b69ac1a6c 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() {