diff --git a/src/notifications.js b/src/notifications.js index 3004a68fc7..58ccf2e8fa 100644 --- a/src/notifications.js +++ b/src/notifications.js @@ -160,9 +160,7 @@ Notifications.push = function (notification, uids, callback) { uids = [uids]; } - uids = uids.filter(function (uid, index, array) { - return parseInt(uid, 10) && array.indexOf(uid) === index; - }); + uids = _.uniq(uids); if (!uids.length) { return callback(); diff --git a/src/privileges/categories.js b/src/privileges/categories.js index 604c2c5ac7..f01971b591 100644 --- a/src/privileges/categories.js +++ b/src/privileges/categories.js @@ -273,9 +273,7 @@ module.exports = function (privileges) { return callback(null, []); } - uids = uids.filter(function (uid, index, array) { - return array.indexOf(uid) === index; - }); + uids = _.uniq(uids); async.waterfall([ function (next) { @@ -286,14 +284,14 @@ module.exports = function (privileges) { isModerators: function (next) { user.isModerator(uids, cid, next); }, - isAdmin: function (next) { + isAdmins: function (next) { user.isAdministrator(uids, next); }, }, next); }, function (results, next) { uids = uids.filter(function (uid, index) { - return results.allowedTo[index] || results.isModerators[index] || results.isAdmin[index]; + return results.allowedTo[index] || results.isModerators[index] || results.isAdmins[index]; }); next(null, uids); }, diff --git a/src/privileges/topics.js b/src/privileges/topics.js index ac602cc25a..84e34954e5 100644 --- a/src/privileges/topics.js +++ b/src/privileges/topics.js @@ -82,11 +82,9 @@ module.exports = function (privileges) { }, function (_topicsData, next) { topicsData = _topicsData; - cids = topicsData.map(function (topic) { + cids = _.uniq(topicsData.map(function (topic) { return topic.cid; - }).filter(function (cid, index, array) { - return cid && array.indexOf(cid) === index; - }); + })); privileges.categories.getBase(privilege, cids, uid, next); }, @@ -121,15 +119,14 @@ module.exports = function (privileges) { return callback(null, []); } - uids = uids.filter(function (uid, index, array) { - return array.indexOf(uid) === index; - }); - + uids = _.uniq(uids); + var topicData; async.waterfall([ function (next) { topics.getTopicFields(tid, ['tid', 'cid', 'deleted'], next); }, - function (topicData, next) { + function (_topicData, next) { + topicData = _topicData; async.parallel({ disabled: function (next) { categories.getCategoryField(topicData.cid, 'disabled', next); @@ -143,18 +140,15 @@ module.exports = function (privileges) { isAdmins: function (next) { user.isAdministrator(uids, next); }, - }, function (err, results) { - if (err) { - return next(err); - } - - uids = uids.filter(function (uid, index) { - return parseInt(results.disabled, 10) !== 1 && - ((results.allowedTo[index] && parseInt(topicData.deleted, 10) !== 1) || results.isAdmins[index] || results.isModerators[index]); - }); - - next(null, uids); + }, next); + }, + function (results, next) { + uids = uids.filter(function (uid, index) { + return parseInt(results.disabled, 10) !== 1 && + ((results.allowedTo[index] && parseInt(topicData.deleted, 10) !== 1) || results.isAdmins[index] || results.isModerators[index]); }); + + next(null, uids); }, ], callback); };