From 201c4b35da7179e529a296c163c2d91ad07a5396 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Tue, 10 Mar 2015 15:04:17 -0400 Subject: [PATCH] pagination data if query is empty get all uids --- src/controllers/users.js | 7 +++++-- src/user/search.js | 20 ++++++++++++-------- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/src/controllers/users.js b/src/controllers/users.js index 81001d0f3a..a4cb36259b 100644 --- a/src/controllers/users.js +++ b/src/controllers/users.js @@ -5,6 +5,7 @@ var usersController = {}; var async = require('async'), user = require('../user'), meta = require('../meta'), + pagination = require('../pagination'), plugins = require('../plugins'), db = require('../database'); @@ -67,11 +68,13 @@ usersController.getUsers = function(set, count, req, res, next) { if (err) { return next(err); } + var pageCount = Math.ceil(data.count / (parseInt(meta.config.userSearchResultsPerPage, 10) || 20)); var userData = { search_display: 'hidden', loadmore_display: data.count > count ? 'block' : 'hide', users: data.users, - show_anon: 'hide' + show_anon: 'hide', + pagination: pagination.create(1, pageCount) }; res.render('users', userData); @@ -94,7 +97,7 @@ function getUsersAndCount(set, uid, count, callback) { return user && parseInt(user.uid, 10); }); - callback(null, {users: results.users, count: results.count}); + callback(null, results); }); } diff --git a/src/user/search.js b/src/user/search.js index bc5efa7f77..fc5b11681e 100644 --- a/src/user/search.js +++ b/src/user/search.js @@ -22,19 +22,14 @@ module.exports = function(User) { } var startTime = process.hrtime(); - var keys = searchBy.map(function(searchBy) { - return searchBy + ':uid'; - }); - - var filterBy = Array.isArray(data.filterBy) ? data.filterBy : []; var searchResult = {}; async.waterfall([ function(next) { - findUids(query, keys, startsWith, next); + findUids(query, searchBy, startsWith, next); }, function(uids, next) { - + var filterBy = Array.isArray(data.filterBy) ? data.filterBy : []; filterAndSortUids(uids, filterBy, data.sortBy, next); }, function(uids, next) { @@ -61,6 +56,7 @@ module.exports = function(User) { var resultsPerPage = parseInt(meta.config.userSearchResultsPerPage, 10) || 20; var start = Math.max(0, page - 1) * resultsPerPage; var end = start + resultsPerPage; + var pageCount = Math.ceil(data.length / resultsPerPage); var currentPage = Math.max(1, Math.ceil((start + 1) / resultsPerPage)); @@ -70,7 +66,15 @@ module.exports = function(User) { }; }; - function findUids(query, keys, startsWith, callback) { + function findUids(query, searchBy, startsWith, callback) { + if (!query) { + return db.getSortedSetRevRange('users:joindate', 0, -1, callback); + } + + var keys = searchBy.map(function(searchBy) { + return searchBy + ':uid'; + }); + db.getObjects(keys, function(err, hashes) { if (err || !hashes) { return callback(err, []);