pagination data

if query is empty get all uids
v1.18.x
barisusakli 10 years ago
parent e8167a80a0
commit 201c4b35da

@ -5,6 +5,7 @@ var usersController = {};
var async = require('async'), var async = require('async'),
user = require('../user'), user = require('../user'),
meta = require('../meta'), meta = require('../meta'),
pagination = require('../pagination'),
plugins = require('../plugins'), plugins = require('../plugins'),
db = require('../database'); db = require('../database');
@ -67,11 +68,13 @@ usersController.getUsers = function(set, count, req, res, next) {
if (err) { if (err) {
return next(err); return next(err);
} }
var pageCount = Math.ceil(data.count / (parseInt(meta.config.userSearchResultsPerPage, 10) || 20));
var userData = { var userData = {
search_display: 'hidden', search_display: 'hidden',
loadmore_display: data.count > count ? 'block' : 'hide', loadmore_display: data.count > count ? 'block' : 'hide',
users: data.users, users: data.users,
show_anon: 'hide' show_anon: 'hide',
pagination: pagination.create(1, pageCount)
}; };
res.render('users', userData); res.render('users', userData);
@ -94,7 +97,7 @@ function getUsersAndCount(set, uid, count, callback) {
return user && parseInt(user.uid, 10); return user && parseInt(user.uid, 10);
}); });
callback(null, {users: results.users, count: results.count}); callback(null, results);
}); });
} }

@ -22,19 +22,14 @@ module.exports = function(User) {
} }
var startTime = process.hrtime(); var startTime = process.hrtime();
var keys = searchBy.map(function(searchBy) {
return searchBy + ':uid';
});
var filterBy = Array.isArray(data.filterBy) ? data.filterBy : [];
var searchResult = {}; var searchResult = {};
async.waterfall([ async.waterfall([
function(next) { function(next) {
findUids(query, keys, startsWith, next); findUids(query, searchBy, startsWith, next);
}, },
function(uids, next) { function(uids, next) {
var filterBy = Array.isArray(data.filterBy) ? data.filterBy : [];
filterAndSortUids(uids, filterBy, data.sortBy, next); filterAndSortUids(uids, filterBy, data.sortBy, next);
}, },
function(uids, next) { function(uids, next) {
@ -61,6 +56,7 @@ module.exports = function(User) {
var resultsPerPage = parseInt(meta.config.userSearchResultsPerPage, 10) || 20; var resultsPerPage = parseInt(meta.config.userSearchResultsPerPage, 10) || 20;
var start = Math.max(0, page - 1) * resultsPerPage; var start = Math.max(0, page - 1) * resultsPerPage;
var end = start + resultsPerPage; var end = start + resultsPerPage;
var pageCount = Math.ceil(data.length / resultsPerPage); var pageCount = Math.ceil(data.length / resultsPerPage);
var currentPage = Math.max(1, Math.ceil((start + 1) / 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) { db.getObjects(keys, function(err, hashes) {
if (err || !hashes) { if (err || !hashes) {
return callback(err, []); return callback(err, []);

Loading…
Cancel
Save