summaryrefslogtreecommitdiff
path: root/lib/plugins/usermanager/admin.php
diff options
context:
space:
mode:
authormatthiasgrimm <matthiasgrimm@users.sourceforge.net>2006-02-02 20:20:30 +0100
committermatthiasgrimm <matthiasgrimm@users.sourceforge.net>2006-02-02 20:20:30 +0100
commit073766c66404356265fcdce574c0febcfdeb882b (patch)
tree100a604d6617d6b672c649ad3ee519b257ee1668 /lib/plugins/usermanager/admin.php
parent42250238dbb9a2a919a008d3b03dfa8b2fe8454f (diff)
downloadrpg-073766c66404356265fcdce574c0febcfdeb882b.tar.gz
rpg-073766c66404356265fcdce574c0febcfdeb882b.tar.bz2
change only changed data
This patch changed the modifyUser function of the user manager so that it only forward data fields to the backend that the user really changed. Unchanged or empty fields will be skipped. darcs-hash:20060202192030-7ef76-a221f16cafd24eef632b6554ada90aee8b500b8b.gz
Diffstat (limited to 'lib/plugins/usermanager/admin.php')
-rw-r--r--lib/plugins/usermanager/admin.php37
1 files changed, 22 insertions, 15 deletions
diff --git a/lib/plugins/usermanager/admin.php b/lib/plugins/usermanager/admin.php
index 8ba4472ac..f0af93b48 100644
--- a/lib/plugins/usermanager/admin.php
+++ b/lib/plugins/usermanager/admin.php
@@ -340,28 +340,35 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
function _modifyUser(){
if (!$this->_auth->canDo('UserMod')) return false;
- list($user,$pass,$name,$mail,$grps) = $this->_retrieveUser();
- if (empty($user)) return false;
+ /* get currently valid user data */
+ $olduser = cleanID(preg_replace('/.*:/','',$_REQUEST['userid_old']));
+ $oldinfo = $this->_auth->getUserData($olduser);
+
+ /* get new user data subject to change */
+ list($newuser,$newpass,$newname,$newmail,$newgrps) = $this->_retrieveUser();
+ if (empty($newuser)) return false;
$changes = array();
- $user_old = cleanID(preg_replace('/.*:/','',$_REQUEST['userid_old']));
- if ($user != $user_old) {
- // check $user doesn't already exist
- if ($this->_auth->getUserData($user)) {
- msg(sprintf($this->lang['update_exists'],$user),-1);
- $this->_edit_user = $user = $user_old;
+ if ($newuser != $olduser) {
+ /* check if $newuser already exist */
+ if ($this->_auth->getUserData($newuser)) {
+ msg(sprintf($this->lang['update_exists'],$newuser),-1);
+ $this->_edit_user = $olduser;
} else {
- $changes['user'] = $user;
- $user = $user_old;
+ $changes['user'] = $newuser;
}
}
- if (!empty($pass)) $changes['pass'] = $pass;
- if (!empty($name)) $changes['name'] = $name;
- if (!empty($mail)) $changes['mail'] = $mail;
- if (!empty($grps)) $changes['grps'] = $grps;
+ if (!empty($newpass))
+ $changes['pass'] = $newpass;
+ if (!empty($newname) && $newname != $oldinfo['name'])
+ $changes['name'] = $newname;
+ if (!empty($newmail) && $newmail != $oldinfo['mail'])
+ $changes['mail'] = $newmail;
+ if (!empty($newgrps) && $newgrps != $oldinfo['grps'])
+ $changes['grps'] = $newgrps;
- if ($this->_auth->modifyUser($user, $changes)) {
+ if ($this->_auth->modifyUser($olduser, $changes)) {
msg($this->lang['update_ok'],1);
} else {
msg($this->lang['update_fail'],-1);