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
path: root/lib
diff options
context:
space:
mode:
authorMorris Jobke <hey@morrisjobke.de>2018-02-27 20:40:42 +0300
committerGitHub <noreply@github.com>2018-02-27 20:40:42 +0300
commit6f4b6bea1c6efe167e7b0c60dd8e8c15b7a21ea4 (patch)
tree32ea3db318eeac652d8a3d48ceba6d190ae3078d /lib
parent7c6b7b40ae57b4e35a3c33abc80c029f5375d8f3 (diff)
parent16b0b3f418194fe1795a6d14f45f8cfe4c558076 (diff)
Merge pull request #8130 from nextcloud/fix-own-avatar-not-updated-when-display-name-is-changed
[stable12] Fix own avatar not updated when display name is changed
Diffstat (limited to 'lib')
-rw-r--r--lib/private/AvatarManager.php24
1 files changed, 24 insertions, 0 deletions
diff --git a/lib/private/AvatarManager.php b/lib/private/AvatarManager.php
index b8c6c2a1eb6..da3ac62097d 100644
--- a/lib/private/AvatarManager.php
+++ b/lib/private/AvatarManager.php
@@ -75,6 +75,12 @@ class AvatarManager implements IAvatarManager {
$this->l = $l;
$this->logger = $logger;
$this->config = $config;
+
+ $this->userManager->listen('\OC\User', 'changeUser', function ($user, $feature, $value, $oldValue) {
+ if ($feature === 'displayName') {
+ $this->updateAvatarVersionOnDisplayNameChange($user);
+ }
+ });
}
/**
@@ -102,4 +108,22 @@ class AvatarManager implements IAvatarManager {
return new Avatar($folder, $this->l, $user, $this->logger, $this->config);
}
+
+ /**
+ * Increases the avatar version if needed.
+ *
+ * When a user has no avatar set the avatar is generated in the client based
+ * on the display name, so in that case a display name change acts like an
+ * avatar change and its version has to be increased.
+ *
+ * @param \OC\User\User $user the user whose display name has changed
+ */
+ private function updateAvatarVersionOnDisplayNameChange(\OC\User\User $user) {
+ $avatar = $this->getAvatar($user->getUID());
+
+ if (!$avatar->exists()) {
+ $this->config->setUserValue($user->getUID(), 'avatar', 'version',
+ (int)$this->config->getUserValue($user->getUID(), 'avatar', 'version', 0) + 1);
+ }
+ }
}