|
|
@ -30,21 +30,15 @@ module.exports = function (User) {
|
|
|
|
},
|
|
|
|
},
|
|
|
|
function (_reason, next) {
|
|
|
|
function (_reason, next) {
|
|
|
|
reason = _reason && _reason.length ? _reason[0] : '';
|
|
|
|
reason = _reason && _reason.length ? _reason[0] : '';
|
|
|
|
next();
|
|
|
|
next(null, {
|
|
|
|
|
|
|
|
uid: uid,
|
|
|
|
|
|
|
|
timestamp: timestamp,
|
|
|
|
|
|
|
|
expiry: parseInt(expiry, 10),
|
|
|
|
|
|
|
|
expiry_readable: new Date(parseInt(expiry, 10)).toString(),
|
|
|
|
|
|
|
|
reason: validator.escape(String(reason)),
|
|
|
|
|
|
|
|
});
|
|
|
|
},
|
|
|
|
},
|
|
|
|
], function (err) {
|
|
|
|
], callback);
|
|
|
|
if (err) {
|
|
|
|
|
|
|
|
return callback(err);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
callback(null, {
|
|
|
|
|
|
|
|
uid: uid,
|
|
|
|
|
|
|
|
timestamp: timestamp,
|
|
|
|
|
|
|
|
expiry: parseInt(expiry, 10),
|
|
|
|
|
|
|
|
expiry_readable: new Date(parseInt(expiry, 10)).toString(),
|
|
|
|
|
|
|
|
reason: validator.escape(String(reason)),
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
User.getModerationHistory = function (uid, callback) {
|
|
|
|
User.getModerationHistory = function (uid, callback) {
|
|
|
@ -59,48 +53,46 @@ module.exports = function (User) {
|
|
|
|
function (data, next) {
|
|
|
|
function (data, next) {
|
|
|
|
getFlagMetadata(data, next);
|
|
|
|
getFlagMetadata(data, next);
|
|
|
|
},
|
|
|
|
},
|
|
|
|
], function (err, data) {
|
|
|
|
function (data, next) {
|
|
|
|
if (err) {
|
|
|
|
formatBanData(data);
|
|
|
|
return callback(err);
|
|
|
|
next(null, data);
|
|
|
|
}
|
|
|
|
},
|
|
|
|
formatBanData(data);
|
|
|
|
], callback);
|
|
|
|
callback(null, data);
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
User.getHistory = function (set, callback) {
|
|
|
|
User.getHistory = function (set, callback) {
|
|
|
|
db.getSortedSetRevRangeWithScores(set, 0, -1, function (err, data) {
|
|
|
|
async.waterfall([
|
|
|
|
if (err) {
|
|
|
|
function (next) {
|
|
|
|
return callback(err);
|
|
|
|
db.getSortedSetRevRangeWithScores(set, 0, -1, next);
|
|
|
|
}
|
|
|
|
},
|
|
|
|
callback(null, data.map(function (set) {
|
|
|
|
function (data, next) {
|
|
|
|
set.timestamp = set.score;
|
|
|
|
next(null, data.map(function (set) {
|
|
|
|
set.timestampISO = utils.toISOString(set.score);
|
|
|
|
set.timestamp = set.score;
|
|
|
|
set.value = validator.escape(String(set.value.split(':')[0]));
|
|
|
|
set.timestampISO = utils.toISOString(set.score);
|
|
|
|
delete set.score;
|
|
|
|
set.value = validator.escape(String(set.value.split(':')[0]));
|
|
|
|
return set;
|
|
|
|
delete set.score;
|
|
|
|
}));
|
|
|
|
return set;
|
|
|
|
});
|
|
|
|
}));
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
], callback);
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
function getFlagMetadata(data, callback) {
|
|
|
|
function getFlagMetadata(data, callback) {
|
|
|
|
var pids = data.flags.map(function (flagObj) {
|
|
|
|
var pids = data.flags.map(function (flagObj) {
|
|
|
|
return parseInt(flagObj.value, 10);
|
|
|
|
return parseInt(flagObj.value, 10);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
async.waterfall([
|
|
|
|
|
|
|
|
function (next) {
|
|
|
|
|
|
|
|
posts.getPostsFields(pids, ['tid'], next);
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
function (postData, next) {
|
|
|
|
|
|
|
|
var tids = postData.map(function (post) {
|
|
|
|
|
|
|
|
return post.tid;
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
posts.getPostsFields(pids, ['tid'], function (err, postData) {
|
|
|
|
topics.getTopicsFields(tids, ['title'], next);
|
|
|
|
if (err) {
|
|
|
|
},
|
|
|
|
return callback(err);
|
|
|
|
function (topicData, next) {
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var tids = postData.map(function (post) {
|
|
|
|
|
|
|
|
return post.tid;
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
topics.getTopicsFields(tids, ['title'], function (err, topicData) {
|
|
|
|
|
|
|
|
if (err) {
|
|
|
|
|
|
|
|
return callback(err);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
data.flags = data.flags.map(function (flagObj, idx) {
|
|
|
|
data.flags = data.flags.map(function (flagObj, idx) {
|
|
|
|
flagObj.pid = flagObj.value;
|
|
|
|
flagObj.pid = flagObj.value;
|
|
|
|
flagObj.timestamp = flagObj.score;
|
|
|
|
flagObj.timestamp = flagObj.score;
|
|
|
@ -112,10 +104,9 @@ module.exports = function (User) {
|
|
|
|
|
|
|
|
|
|
|
|
return _.extend(flagObj, topicData[idx]);
|
|
|
|
return _.extend(flagObj, topicData[idx]);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
next(null, data);
|
|
|
|
callback(null, data);
|
|
|
|
},
|
|
|
|
});
|
|
|
|
], callback);
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function formatBanData(data) {
|
|
|
|
function formatBanData(data) {
|
|
|
|