fixed issue where Groups.getUserGroups called getGroupsData on all groups, resulting in a very unscalable method if called on forum with thousands of groups

v1.18.x
Julian Lam 10 years ago
parent 8bc5330e89
commit 8aac4bdfa1

@ -981,13 +981,13 @@ var async = require('async'),
return groupName !== 'registered-users' && groupName.indexOf(':privileges:') === -1; return groupName !== 'registered-users' && groupName.indexOf(':privileges:') === -1;
}); });
Groups.getGroupsData(groupNames, function(err, groupData) { Groups.getMultipleGroupFields(groupNames, ['name', 'hidden'], function(err, groupData) {
if (err) { if (err) {
return callback(err); return callback(err);
} }
groupData = groupData.filter(function(group) { groupData = groupData.filter(function(group) {
return group && !group.hidden; return group && !parseInt(group.hidden, 10);
}); });
var groupSets = groupData.map(function(group) { var groupSets = groupData.map(function(group) {
@ -1003,11 +1003,11 @@ var async = require('async'),
var memberOf = []; var memberOf = [];
isMembers.forEach(function(isMember, index) { isMembers.forEach(function(isMember, index) {
if (isMember) { if (isMember) {
memberOf.push(groupData[index]); memberOf.push(groupData[index].name);
} }
}); });
next(null, memberOf); Groups.getGroupsData(memberOf, next);
}); });
}, callback); }, callback);
}); });

Loading…
Cancel
Save