summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorThomas Müller <thomas.mueller@tmit.eu>2016-01-21 00:07:46 +0100
committerThomas Müller <thomas.mueller@tmit.eu>2016-01-21 00:07:46 +0100
commit2f7dcf1a2c7fb133c8ab7827a412dec2e205ac79 (patch)
treeb0a88f6fdbe34111c10909740e133f758267d984 /lib
parent647d8ea5decad8140f9c280ae90039aa71c4eb93 (diff)
parent77069f5582ad42207ee9a9620cba5720390d9e79 (diff)
downloadnextcloud-server-2f7dcf1a2c7fb133c8ab7827a412dec2e205ac79.tar.gz
nextcloud-server-2f7dcf1a2c7fb133c8ab7827a412dec2e205ac79.zip
Merge pull request #21782 from owncloud/update-system-addressbook-on-user-change-2
Introduce IUser::setEMailAddress and add hook mechanism
Diffstat (limited to 'lib')
-rw-r--r--lib/private/server.php4
-rw-r--r--lib/private/user/manager.php1
-rw-r--r--lib/private/user/user.php26
-rw-r--r--lib/public/iuser.php9
4 files changed, 39 insertions, 1 deletions
diff --git a/lib/private/server.php b/lib/private/server.php
index 642267e8568..db36fbc1433 100644
--- a/lib/private/server.php
+++ b/lib/private/server.php
@@ -229,6 +229,10 @@ class Server extends ServerContainer implements IServerContainer {
$userSession->listen('\OC\User', 'logout', function () {
\OC_Hook::emit('OC_User', 'logout', array());
});
+ $userSession->listen('\OC\User', 'changeUser', function ($user) {
+ /** @var $user \OC\User\User */
+ \OC_Hook::emit('OC_User', 'changeUser', array('run' => true, 'user' => $user));
+ });
return $userSession;
});
$this->registerService('NavigationManager', function ($c) {
diff --git a/lib/private/user/manager.php b/lib/private/user/manager.php
index 2aafe98cef2..b547f981616 100644
--- a/lib/private/user/manager.php
+++ b/lib/private/user/manager.php
@@ -44,6 +44,7 @@ use OCP\IConfig;
* - postDelete(\OC\User\User $user)
* - preCreateUser(string $uid, string $password)
* - postCreateUser(\OC\User\User $user, string $password)
+ * - change(\OC\User\User $user)
*
* @package OC\User
*/
diff --git a/lib/private/user/user.php b/lib/private/user/user.php
index c2a6acc7664..5b8bb6947a5 100644
--- a/lib/private/user/user.php
+++ b/lib/private/user/user.php
@@ -137,8 +137,13 @@ class User implements IUser {
public function setDisplayName($displayName) {
$displayName = trim($displayName);
if ($this->backend->implementsActions(\OC_User_Backend::SET_DISPLAYNAME) && !empty($displayName)) {
- $this->displayName = $displayName;
$result = $this->backend->setDisplayName($this->uid, $displayName);
+ if ($result) {
+ $this->displayName = $displayName;
+ if ($this->emitter) {
+ $this->emitter->emit('\OC\User', 'changeUser', array($this));
+ }
+ }
return $result !== false;
} else {
return false;
@@ -146,6 +151,24 @@ class User implements IUser {
}
/**
+ * set the email address of the user
+ *
+ * @param string|null $mailAddress
+ * @return void
+ * @since 9.0.0
+ */
+ public function setEMailAddress($mailAddress) {
+ if($mailAddress === '') {
+ $this->config->deleteUserValue($this->uid, 'settings', 'email');
+ } else {
+ $this->config->setUserValue($this->uid, 'settings', 'email', $mailAddress);
+ }
+ if ($this->emitter) {
+ $this->emitter->emit('\OC\User', 'changeUser', array($this));
+ }
+ }
+
+ /**
* returns the timestamp of the user's last login or 0 if the user did never
* login
*
@@ -365,4 +388,5 @@ class User implements IUser {
return $url;
}
+
}
diff --git a/lib/public/iuser.php b/lib/public/iuser.php
index 06921a1ee23..454d45eae76 100644
--- a/lib/public/iuser.php
+++ b/lib/public/iuser.php
@@ -169,4 +169,13 @@ interface IUser {
* @since 9.0.0
*/
public function getCloudId();
+
+ /**
+ * set the email address of the user
+ *
+ * @param string|null $mailAddress
+ * @return void
+ * @since 9.0.0
+ */
+ public function setEMailAddress($mailAddress);
}