From c99b6670211771933e26430662b451272878c472 Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Tue, 30 Apr 2013 19:51:28 +0200 Subject: [PATCH] Fix retrieval of users with multiple backends --- settings/ajax/userlist.php | 9 +++++++-- settings/js/users.js | 12 +++++++++--- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/settings/ajax/userlist.php b/settings/ajax/userlist.php index 87b42395749..4abf54b8987 100644 --- a/settings/ajax/userlist.php +++ b/settings/ajax/userlist.php @@ -27,9 +27,14 @@ if (isset($_GET['offset'])) { } else { $offset = 0; } +if (isset($_GET['limit'])) { + $limit = $_GET['limit']; +} else { + $limit = 10; +} $users = array(); if (OC_User::isAdminUser(OC_User::getUser())) { - $batch = OC_User::getDisplayNames('', 10, $offset); + $batch = OC_User::getDisplayNames('', $limit, $offset); foreach ($batch as $user => $displayname) { $users[] = array( 'name' => $user, @@ -40,7 +45,7 @@ if (OC_User::isAdminUser(OC_User::getUser())) { } } else { $groups = OC_SubAdmin::getSubAdminsGroups(OC_User::getUser()); - $batch = OC_Group::usersInGroups($groups, '', 10, $offset); + $batch = OC_Group::usersInGroups($groups, '', $limit, $offset); foreach ($batch as $user) { $users[] = array( 'name' => $user, diff --git a/settings/js/users.js b/settings/js/users.js index 5f9710053c9..a33fcea3223 100644 --- a/settings/js/users.js +++ b/settings/js/users.js @@ -19,6 +19,10 @@ function setQuota (uid, quota, ready) { var UserList = { useUndo: true, availableGroups: [], + offset: 30, //The first 30 users are there. No prob, if less in total. + //hardcoded in settings/users.php + + usersToLoad: 10, //So many users will be loaded when user scrolls down /** * @brief Initiate user deletion process in UI @@ -192,14 +196,17 @@ var UserList = { return; } UserList.updating = true; - $.get(OC.Router.generate('settings_ajax_userlist', { offset: UserList.offset }), function (result) { + $.get(OC.Router.generate('settings_ajax_userlist', { offset: UserList.offset, limit: UserList.usersToLoad }), function (result) { if (result.status === 'success') { + //The offset does not mirror the amount of users available, + //because it is backend-dependent. For correct retrieval, + //always the limit(requested amount of users) needs to be added. + UserList.offset += UserList.usersToLoad; $.each(result.data, function (index, user) { if($('tr[data-uid="' + user.name + '"]').length > 0) { return true; } var tr = UserList.add(user.name, user.displayname, user.groups, user.subadmin, user.quota, false); - UserList.offset++; if (index == 9) { $(tr).bind('inview', function (event, isInView, visiblePartX, visiblePartY) { $(this).unbind(event); @@ -315,7 +322,6 @@ $(document).ready(function () { UserList.doSort(); UserList.availableGroups = $('#content table').attr('data-groups').split(', '); - UserList.offset = $('tbody tr').length; $('tbody tr:last').bind('inview', function (event, isInView, visiblePartX, visiblePartY) { OC.Router.registerLoadedCallback(function () { UserList.update(); -- 2.39.5