v1.18.x
Julian Lam 8 years ago
parent eb9f6145d9
commit 2e1528942c

@ -5,6 +5,7 @@ var winston = require('winston');
var nconf = require('nconf'); var nconf = require('nconf');
var db = require('../database'); var db = require('../database');
var batch = require('../batch');
var meta = require('../meta'); var meta = require('../meta');
var user = require('../user'); var user = require('../user');
var topics = require('../topics'); var topics = require('../topics');
@ -70,33 +71,20 @@ Digest.execute = function (payload, callback) {
Digest.getSubscribers = function (interval, callback) { Digest.getSubscribers = function (interval, callback) {
async.waterfall([ async.waterfall([
function (next) { function (next) {
db.getSortedSetRange('digest:' + interval + ':uids', 0, -1, next); var subs = [];
},
function (subscribers, next) {
// If ACP default digest frequency is set, add all users who are not in any of the explicit subscription sorted sets
if (!meta.config.dailyDigestFreq || meta.configs.dailyDigestFreq === 'off') {
return setImmediate(next, null, subscribers);
}
var digestSets = ['digest:day:uids', 'digest:week:uids', 'digest:month:uids'];
db.getSortedSetsMembers(digestSets.concat('users:joindate'), function (err, sets) {
if (err) {
return next(err);
}
var allUids = sets.pop(); batch.processSortedSet('users:joindate', function (uids, next) {
// Append those uids from the joindate zset who are not in digest sets user.getMultipleUserSettings(uids, function (err, settings) {
allUids.forEach(function (uid) { settings.forEach(function (hash) {
var append = sets.every(function (set) { if (hash.dailyDigestFreq === interval) {
return set.indexOf(uid) === -1; subs.push(hash.uid);
}
}); });
if (append) { next();
subscribers.push(uid);
}
}); });
}, { interval: 1000 }, function () {
next(null, subscribers); next(null, subs);
}); });
}, },
function (subscribers, next) { function (subscribers, next) {

Loading…
Cancel
Save