diff options
author | Arthur Schiwon <blizzz@arthur-schiwon.de> | 2018-10-25 23:41:12 +0200 |
---|---|---|
committer | Arthur Schiwon <blizzz@arthur-schiwon.de> | 2018-10-25 23:41:12 +0200 |
commit | bbe44108b5661d0c3935fa76e27abbc433fd458e (patch) | |
tree | 284cdd42a8f097448216296e8d96af5ff4d44ff8 /apps | |
parent | 6ad7f329385f73a731f69d9f00cf5b038f3eac04 (diff) | |
download | nextcloud-server-bbe44108b5661d0c3935fa76e27abbc433fd458e.tar.gz nextcloud-server-bbe44108b5661d0c3935fa76e27abbc433fd458e.zip |
only write when the displayname differs, but then announce it
refs #5212 and fixes #9112
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
Diffstat (limited to 'apps')
-rw-r--r-- | apps/user_ldap/lib/User/User.php | 11 | ||||
-rw-r--r-- | apps/user_ldap/tests/User/UserTest.php | 25 |
2 files changed, 34 insertions, 2 deletions
diff --git a/apps/user_ldap/lib/User/User.php b/apps/user_ldap/lib/User/User.php index 02764a72eca..4afc8032f73 100644 --- a/apps/user_ldap/lib/User/User.php +++ b/apps/user_ldap/lib/User/User.php @@ -414,14 +414,21 @@ class User { * * @param string $displayName * @param string $displayName2 - * @returns string the effective display name + * @return string the effective display name */ public function composeAndStoreDisplayName($displayName, $displayName2 = '') { $displayName2 = (string)$displayName2; if($displayName2 !== '') { $displayName .= ' (' . $displayName2 . ')'; } - $this->store('displayName', $displayName); + $oldName = $this->config->getUserValue($this->uid, 'user_ldap', 'displayName', ''); + if ($oldName !== $displayName) { + $this->store('displayName', $displayName); + $user = $this->userManager->get($this->getUsername()); + if ($user instanceof \OC\User\User) { + $user->triggerChange('displayName', $displayName); + } + } return $displayName; } diff --git a/apps/user_ldap/tests/User/UserTest.php b/apps/user_ldap/tests/User/UserTest.php index 837c72a3a31..63c90c6ac72 100644 --- a/apps/user_ldap/tests/User/UserTest.php +++ b/apps/user_ldap/tests/User/UserTest.php @@ -1010,11 +1010,36 @@ class UserTest extends \Test\TestCase { public function testComposeAndStoreDisplayName($part1, $part2, $expected) { $this->config->expects($this->once()) ->method('setUserValue'); + $this->config->expects($this->once()) + ->method('getUserValue'); + + $ncUserObj = $this->createMock(\OC\User\User::class); + $ncUserObj->expects($this->once()) + ->method('triggerChange') + ->with('displayName', $expected); + $this->userManager->expects($this->once()) + ->method('get') + ->willReturn($ncUserObj); $displayName = $this->user->composeAndStoreDisplayName($part1, $part2); $this->assertSame($expected, $displayName); } + public function testComposeAndStoreDisplayNameNoOverwrite() { + $displayName = 'Randall Flagg'; + $this->config->expects($this->never()) + ->method('setUserValue'); + $this->config->expects($this->once()) + ->method('getUserValue') + ->willReturn($displayName); + + $this->userManager->expects($this->never()) + ->method('get'); // Implicit: no triggerChange can be called + + $composedDisplayName = $this->user->composeAndStoreDisplayName($displayName); + $this->assertSame($composedDisplayName, $displayName); + } + public function testHandlePasswordExpiryWarningDefaultPolicy() { $this->connection->expects($this->any()) ->method('__get') |