You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

102 lines
2.1 KiB
JavaScript

11 years ago
"use strict";
var usersController = {};
var async = require('async'),
user = require('./../user'),
db = require('./../database');
usersController.getOnlineUsers = function(req, res, next) {
var websockets = require('../socket.io');
11 years ago
user.getUsersFromSet('users:online', 0, 49, function (err, users) {
if(err) {
return next(err);
}
var uid = req.user ? req.user.uid : 0;
user.isAdministrator(uid, function (err, isAdministrator) {
if(err) {
return next(err);
}
if (!isAdministrator) {
11 years ago
users = users.filter(function(user) {
return user.status !== 'offline';
});
}
var anonymousUserCount = websockets.getOnlineAnonCount();
db.sortedSetCard('users:online', function(err, count) {
11 years ago
if (err) {
return next(err);
}
var userData = {
search_display: 'none',
loadmore_display: count > 50 ? 'block' : 'hide',
users: users,
anonymousUserCount: anonymousUserCount,
show_anon: anonymousUserCount?'':'hide'
};
res.render('users', userData);
});
});
});
};
usersController.getUsersSortedByPosts = function(req, res, next) {
getUsers('users:postcount', res, next);
};
usersController.getUsersSortedByReputation = function(req, res, next) {
getUsers('users:reputation', res, next);
};
usersController.getUsersSortedByJoinDate = function(req, res, next) {
getUsers('users:joindate', res, next);
};
function getUsers(set, res, next) {
11 years ago
user.getUsersFromSet(set, 0, 49, function (err, data) {
if (err) {
return next(err);
}
data = data.filter(function(user) {
return user && parseInt(user.uid, 10);
});
11 years ago
db.sortedSetCard(set, function(err, count) {
if (err) {
return next(err);
}
var userData = {
search_display: 'none',
loadmore_display: count > 50 ? 'block' : 'hide',
users: data,
show_anon: 'hide'
};
res.render('users', userData);
});
});
}
usersController.getUsersForSearch = function(req, res, next) {
var data = {
search_display: 'block',
loadmore_display: 'none',
users: [],
show_anon: 'hide'
};
res.render('users', data);
};
module.exports = usersController;