From: Arthur Schiwon Date: Tue, 30 Apr 2013 17:51:28 +0000 (+0200) Subject: Fix retrieval of users with multiple backends X-Git-Tag: v5.0.6~21^2 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=c99b6670211771933e26430662b451272878c472;p=nextcloud-server.git Fix retrieval of users with multiple backends --- 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();