diff --git a/lib/plugins/usermanager/admin.php b/lib/plugins/usermanager/admin.php index 496565a934cb53f3415a89afd3033215cef9ec4c..5fd0bab6873f1065859472dd34600bae3d9925e1 100644 --- a/lib/plugins/usermanager/admin.php +++ b/lib/plugins/usermanager/admin.php @@ -27,7 +27,8 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin { var $_start = 0; // index of first user to be displayed var $_last = 0; // index of the last user to be displayed var $_pagesize = 20; // number of users to list on one page - var $_user_edit = null; // set to user selected for editing + var $_edit_user = ''; // set to user selected for editing + var $_edit_userdata = array(); var $_disabled = ''; // if disabled set to explanatory string /** @@ -112,7 +113,7 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin { case "add" : $this->_addUser(); break; case "delete" : $this->_deleteUser(); break; case "modify" : $this->_modifyUser(); break; - case "edit" : $this->_edit_user = $param; break; // no extra handling required - only html + case "edit" : $this->_editUser($param); break; case "search" : $this->_setFilter($param); $this->_start = 0; break; @@ -227,7 +228,7 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin { print $this->locale_xhtml('add'); ptln(" <div class=\"level2\">"); - $this->_htmlUserForm('add',null,4); + $this->_htmlUserForm('add',null,array(),4); ptln(" </div>"); ptln("</div>"); @@ -238,7 +239,7 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin { print $this->locale_xhtml('edit'); ptln(" <div class=\"level2\">"); - $this->_htmlUserForm('modify',$this->_edit_user,4); + $this->_htmlUserForm('modify',$this->_edit_user,$this->_edit_userdata,4); ptln(" </div>"); ptln("</div>"); @@ -250,13 +251,13 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin { /** * @todo disable fields which the backend can't change */ - function _htmlUserForm($cmd,$user=null,$indent=0) { + function _htmlUserForm($cmd,$user='',$userdata=array(),$indent=0) { + + $name = $mail = $groups = ''; if ($user) { - extract($this->_auth->getUserData($user)); - $groups = join(',',$grps); - } else { - $user = $name = $mail = $groups = ''; + extract($userdata); + if (!empty($grps)) $groups = join(',',$grps); } ptln("<form action=\"".wl($ID)."\" method=\"post\">",$indent); @@ -343,6 +344,29 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin { $part2 = str_replace('%d', (count($selected)-$count), $this->lang['delete_fail']); msg("$part1, $part2",-1); } + + return true; + } + + /** + * Edit user (a user has been selected for editing) + */ + function _editUser($param) { + if (!$this->_auth->canDo('UserMod')) return false; + + $user = cleanID(preg_replace('/.*:/','',$param)); + $userdata = $this->_auth->getUserData($user); + + // no user found? + if (!$userdata) { + msg($this->lang['edit_usermissing'],-1); + return false; + } + + $this->_edit_user = $user; + $this->_edit_userdata = $userdata; + + return true; } /** @@ -385,11 +409,13 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin { if (!empty($newgrps) && $this->_auth->canDo('modGroups') && $newgrps != $oldinfo['grps']) $changes['grps'] = $newgrps; - if ($this->_auth->modifyUser($olduser, $changes)) { + if ($this->_auth->modifyUser($olduser, $changes)) { msg($this->lang['update_ok'],1); } else { msg($this->lang['update_fail'],-1); } + + return true; } /* diff --git a/lib/plugins/usermanager/lang/en/lang.php b/lib/plugins/usermanager/lang/en/lang.php index fbbd70e3a22d1c88dedef3e890d3c8d4667cb295..2511898e96ca394670d6aafb86625548899e8f08 100644 --- a/lib/plugins/usermanager/lang/en/lang.php +++ b/lib/plugins/usermanager/lang/en/lang.php @@ -45,3 +45,6 @@ $lang['prev'] = 'previous'; $lang['next'] = 'next'; $lang['last'] = 'last'; +// added after 2006-03-09 release +$lang['edit_usermissing'] = 'Selected user not found, the specified user name may have been deleted or changed elsewhere.'; +