diff options
author | Morris Jobke <hey@morrisjobke.de> | 2018-02-27 20:40:42 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-02-27 20:40:42 +0300 |
commit | 6f4b6bea1c6efe167e7b0c60dd8e8c15b7a21ea4 (patch) | |
tree | 32ea3db318eeac652d8a3d48ceba6d190ae3078d /lib | |
parent | 7c6b7b40ae57b4e35a3c33abc80c029f5375d8f3 (diff) | |
parent | 16b0b3f418194fe1795a6d14f45f8cfe4c558076 (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.php | 24 |
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); + } + } } |