diff options
author | Thomas Müller <thomas.mueller@tmit.eu> | 2016-01-21 00:07:46 +0100 |
---|---|---|
committer | Thomas Müller <thomas.mueller@tmit.eu> | 2016-01-21 00:07:46 +0100 |
commit | 2f7dcf1a2c7fb133c8ab7827a412dec2e205ac79 (patch) | |
tree | b0a88f6fdbe34111c10909740e133f758267d984 /lib | |
parent | 647d8ea5decad8140f9c280ae90039aa71c4eb93 (diff) | |
parent | 77069f5582ad42207ee9a9620cba5720390d9e79 (diff) | |
download | nextcloud-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.php | 4 | ||||
-rw-r--r-- | lib/private/user/manager.php | 1 | ||||
-rw-r--r-- | lib/private/user/user.php | 26 | ||||
-rw-r--r-- | lib/public/iuser.php | 9 |
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); } |