fix acp high presence topics

v1.18.x
barisusakli 10 years ago
parent 96364935e9
commit cdd5bb5a6e

@ -93,8 +93,7 @@ SocketMeta.rooms.getAll = function(socket, data, callback) {
topics: {}
};
var scores = {},
topTenTopics = [],
var topTenTopics = [],
tid;
for (var room in roomClients) {
@ -104,34 +103,29 @@ SocketMeta.rooms.getAll = function(socket, data, callback) {
var length = roomClients[room].length;
socketData.users.topics += length;
if (scores[length]) {
scores[length].push(tid[1]);
} else {
scores[length] = [tid[1]];
}
topTenTopics.push({tid: tid[1], count: length});
} else if (room.match(/^category/)) {
socketData.users.category += roomClients[room].length;
}
}
}
var scoreKeys = Object.keys(scores),
mostActive = scoreKeys.sort();
topTenTopics = topTenTopics.sort(function(a, b) {
return b.count - a.count;
}).slice(0, 10);
while(topTenTopics.length < 10 && mostActive.length > 0) {
topTenTopics = topTenTopics.concat(scores[mostActive.pop()]);
}
topTenTopics = topTenTopics.slice(0, 10);
var topTenTids = topTenTopics.map(function(topic) {
return topic.tid;
});
topics.getTopicsFields(topTenTopics, ['title'], function(err, titles) {
topics.getTopicsFields(topTenTids, ['title'], function(err, titles) {
if (err) {
return callback(err);
}
topTenTopics.forEach(function(tid, id) {
socketData.topics[tid] = {
value: Array.isArray(roomClients['topic_' + tid]) ? roomClients['topic_' + tid].length : 0,
title: validator.escape(titles[id].title)
topTenTopics.forEach(function(topic, index) {
socketData.topics[topic.tid] = {
value: topic.count || 0,
title: validator.escape(titles[index].title)
};
});
@ -140,6 +134,4 @@ SocketMeta.rooms.getAll = function(socket, data, callback) {
};
/* Exports */
module.exports = SocketMeta;

Loading…
Cancel
Save