aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMorris Jobke <hey@morrisjobke.de>2019-04-11 11:18:41 +0200
committerGitHub <noreply@github.com>2019-04-11 11:18:41 +0200
commit757a841d14a7a8286f2d88acfc82c22c5551e5f9 (patch)
tree64f41ec8e8dcc86783d1ca7ad8786b895373474f
parentef06c3f1d27a2ee3f754f2f6db578c0cc3822c25 (diff)
parentf420647add0f5ffc917301335d82d951a1df502e (diff)
downloadnextcloud-server-757a841d14a7a8286f2d88acfc82c22c5551e5f9.tar.gz
nextcloud-server-757a841d14a7a8286f2d88acfc82c22c5551e5f9.zip
Merge pull request #15052 from nextcloud/fix/noid/pass-oldvalue
Pass old value to user triggerChange hook & do not update unchanged attributes
-rw-r--r--apps/user_ldap/lib/User/User.php2
-rw-r--r--lib/private/User/User.php20
-rw-r--r--tests/lib/User/UserTest.php20
3 files changed, 15 insertions, 27 deletions
diff --git a/apps/user_ldap/lib/User/User.php b/apps/user_ldap/lib/User/User.php
index d68d8b35d14..5c89950e080 100644
--- a/apps/user_ldap/lib/User/User.php
+++ b/apps/user_ldap/lib/User/User.php
@@ -436,7 +436,7 @@ class User {
if (!empty($oldName) && $user instanceof \OC\User\User) {
// if it was empty, it would be a new record, not a change emitting the trigger could
// potentially cause a UniqueConstraintViolationException, depending on some factors.
- $user->triggerChange('displayName', $displayName);
+ $user->triggerChange('displayName', $displayName, $oldName);
}
}
return $displayName;
diff --git a/lib/private/User/User.php b/lib/private/User/User.php
index 17fa022b1b7..48c913db2a9 100644
--- a/lib/private/User/User.php
+++ b/lib/private/User/User.php
@@ -145,9 +145,8 @@ class User implements IUser {
$this->triggerChange('displayName', $displayName);
}
return $result !== false;
- } else {
- return false;
}
+ return false;
}
/**
@@ -159,12 +158,12 @@ class User implements IUser {
*/
public function setEMailAddress($mailAddress) {
$oldMailAddress = $this->getEMailAddress();
- if($mailAddress === '') {
- $this->config->deleteUserValue($this->uid, 'settings', 'email');
- } else {
- $this->config->setUserValue($this->uid, 'settings', 'email', $mailAddress);
- }
if($oldMailAddress !== $mailAddress) {
+ if($mailAddress === '') {
+ $this->config->deleteUserValue($this->uid, 'settings', 'email');
+ } else {
+ $this->config->setUserValue($this->uid, 'settings', 'email', $mailAddress);
+ }
$this->triggerChange('eMailAddress', $mailAddress, $oldMailAddress);
}
}
@@ -365,7 +364,8 @@ class User implements IUser {
$oldStatus = $this->isEnabled();
$this->enabled = $enabled;
if ($oldStatus !== $this->enabled) {
- $this->triggerChange('enabled', $enabled);
+ // TODO: First change the value, then trigger the event as done for all other properties.
+ $this->triggerChange('enabled', $enabled, $oldStatus);
$this->config->setUserValue($this->uid, 'core', 'enabled', $enabled ? 'true' : 'false');
}
}
@@ -407,9 +407,9 @@ class User implements IUser {
$quota = OC_Helper::computerFileSize($quota);
$quota = OC_Helper::humanFileSize($quota);
}
- $this->config->setUserValue($this->uid, 'files', 'quota', $quota);
if($quota !== $oldQuota) {
- $this->triggerChange('quota', $quota);
+ $this->config->setUserValue($this->uid, 'files', 'quota', $quota);
+ $this->triggerChange('quota', $quota, $oldQuota);
}
}
diff --git a/tests/lib/User/UserTest.php b/tests/lib/User/UserTest.php
index 16fde814b85..a800e790370 100644
--- a/tests/lib/User/UserTest.php
+++ b/tests/lib/User/UserTest.php
@@ -676,14 +676,8 @@ class UserTest extends TestCase {
$config->expects($this->any())
->method('getUserValue')
->willReturn('foo@bar.com');
- $config->expects($this->once())
- ->method('setUserValue')
- ->with(
- 'foo',
- 'settings',
- 'email',
- 'foo@bar.com'
- );
+ $config->expects($this->never())
+ ->method('setUserValue');
$user = new User('foo', $backend, $this->dispatcher, $emitter, $config);
$user->setEMailAddress('foo@bar.com');
@@ -741,14 +735,8 @@ class UserTest extends TestCase {
$config->expects($this->any())
->method('getUserValue')
->willReturn('23 TB');
- $config->expects($this->once())
- ->method('setUserValue')
- ->with(
- 'foo',
- 'files',
- 'quota',
- '23 TB'
- );
+ $config->expects($this->never())
+ ->method('setUserValue');
$user = new User('foo', $backend, $this->dispatcher, $emitter, $config);
$user->setQuota('23 TB');