summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMichael Große <grosse@cosmocode.de>2015-03-12 15:06:26 +0100
committerMichael Große <grosse@cosmocode.de>2015-03-12 15:06:26 +0100
commit462e9e37f38d6de9ec19ad1476b64bac3b851fc1 (patch)
tree4ffed496320f3a9305e3d39f88c2a026c493c8db /lib
parentc52f6cd2bf68bccfbc665f376f68c93861a99837 (diff)
downloadrpg-462e9e37f38d6de9ec19ad1476b64bac3b851fc1.tar.gz
rpg-462e9e37f38d6de9ec19ad1476b64bac3b851fc1.tar.bz2
Disable the ``last`` button when filtering groups
Since we cannot effectively filter for groups and have to work with incremental prefetching, the ``last`` button is mostly broken/buggy. Hence it is disabled in this usecase.
Diffstat (limited to 'lib')
-rw-r--r--lib/plugins/authad/auth.php8
-rw-r--r--lib/plugins/usermanager/admin.php12
2 files changed, 20 insertions, 0 deletions
diff --git a/lib/plugins/authad/auth.php b/lib/plugins/authad/auth.php
index 2710d6a17..4022cd68f 100644
--- a/lib/plugins/authad/auth.php
+++ b/lib/plugins/authad/auth.php
@@ -387,12 +387,16 @@ class auth_plugin_authad extends DokuWiki_Auth_Plugin {
if (isset($filter['grps'])) {
$this->users = array_fill_keys($result, false);
$usermanager = plugin_load("admin", "usermanager", false);
+ $usermanager->setLastdisabled(true);
if (!isset($this->_grpsusers[$this->_filterToString($filter)])){
$this->_fillGroupUserArray($filter,$usermanager->getStart() + 3*$usermanager->getPagesize());
} elseif (count($this->_grpsusers[$this->_filterToString($filter)]) < getStart() + 3*$usermanager->getPagesize()) {
$this->_fillGroupUserArray($filter,$usermanager->getStart() + 3*$usermanager->getPagesize() - count($this->_grpsusers[$this->_filterToString($filter)]));
}
$result = $this->_grpsusers[$this->_filterToString($filter)];
+ } else {
+ $usermanager = plugin_load("admin", "usermanager", false);
+ $usermanager->setLastdisabled(false);
}
}
@@ -470,6 +474,8 @@ class auth_plugin_authad extends DokuWiki_Auth_Plugin {
$result = array();
if (!isset($filter['grps'])) {
+ $usermanager = plugin_load("admin", "usermanager", false);
+ $usermanager->setLastdisabled(false);
foreach($this->users as $user => &$info) {
if($i++ < $start) {
continue;
@@ -483,6 +489,8 @@ class auth_plugin_authad extends DokuWiki_Auth_Plugin {
}
}
} else {
+ $usermanager = plugin_load("admin", "usermanager", false);
+ $usermanager->setLastdisabled(true);
if (!isset($this->_grpsusers[$this->_filterToString($filter)]) || count($this->_grpsusers[$this->_filterToString($filter)]) < ($start+$limit)) {
$this->_fillGroupUserArray($filter,$start+$limit - count($this->_grpsusers[$this->_filterToString($filter)]) +1);
}
diff --git a/lib/plugins/usermanager/admin.php b/lib/plugins/usermanager/admin.php
index b1f5c4023..cc4c4ae47 100644
--- a/lib/plugins/usermanager/admin.php
+++ b/lib/plugins/usermanager/admin.php
@@ -31,6 +31,7 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
protected $_edit_userdata = array();
protected $_disabled = ''; // if disabled set to explanatory string
protected $_import_failures = array();
+ protected $_lastdisabled = false; // set to true if last user is unknown and last button is hence buggy
/**
* Constructor
@@ -96,6 +97,13 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
}
/**
+ * @param boolean $lastdisabled
+ */
+ public function setLastdisabled($lastdisabled) {
+ $this->_lastdisabled = $lastdisabled;
+ }
+
+ /**
* Handle user request
*
* @return bool
@@ -850,6 +858,10 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
$buttons['last'] = $buttons['next'] = (($this->_start + $this->_pagesize) >= $this->_user_total) ? $disabled : '';
}
+ if ($this->_lastdisabled) {
+ $buttons['last'] = $disabled;
+ }
+
return $buttons;
}