From 7d93926ef7ea83415f8ac0b938022d1c8d736af9 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Sat, 20 Sep 2014 23:04:49 -0400 Subject: [PATCH] removed async.map --- src/database/mongo/sets.js | 3 +- src/groups.js | 61 +++++++++++++++++++++++++++++++------- src/privileges/helpers.js | 5 +--- 3 files changed, 54 insertions(+), 15 deletions(-) diff --git a/src/database/mongo/sets.js b/src/database/mongo/sets.js index ae9275db50..795a2b45bb 100644 --- a/src/database/mongo/sets.js +++ b/src/database/mongo/sets.js @@ -57,7 +57,7 @@ module.exports = function(db, module) { } bulk.execute(function(err) { - return callback(err); + callback(err); }); }; @@ -153,6 +153,7 @@ module.exports = function(db, module) { if (err) { return callback(err); } + var sets = {}; data.forEach(function(set) { sets[set._key] = set.members || []; diff --git a/src/groups.js b/src/groups.js index 49dd25e4a2..2a04cfd69d 100644 --- a/src/groups.js +++ b/src/groups.js @@ -1,15 +1,18 @@ 'use strict'; +var async = require('async'), + winston = require('winston'), + _ = require('underscore'), + user = require('./user'), + meta = require('./meta'), + db = require('./database'), + posts = require('./posts'), + utils = require('../public/src/utils'); + + (function(Groups) { - var async = require('async'), - winston = require('winston'), - user = require('./user'), - meta = require('./meta'), - db = require('./database'), - posts = require('./posts'), - utils = require('../public/src/utils'), - ephemeralGroups = ['guests'], + var ephemeralGroups = ['guests'], internals = { filterGroups: function(groups, options) { @@ -186,7 +189,45 @@ return callback(err); } - callback(null, isMembers.indexOf(true) !== -1) + callback(null, isMembers.indexOf(true) !== -1); + }); + }); + }; + + Groups.isMemberOfGroupsList = function(uid, groupListKeys, callback) { + var sets = groupListKeys.map(function(groupName) { + return 'group:' + groupName + ':members'; + }); + + db.getSetsMembers(sets, function(err, members) { + if (err) { + return callback(err); + } + + var uniqueGroups = _.unique(_.flatten(members)); + uniqueGroups = internals.removeEphemeralGroups(uniqueGroups); + + Groups.isMemberOfGroups(uid, uniqueGroups, function(err, isMembers) { + if (err) { + return callback(err); + } + + var map = {}; + + uniqueGroups.forEach(function(groupName, index) { + map[groupName] = isMembers[index]; + }); + + var result = members.map(function(groupNames) { + for (var i=0; i