v1.18.x
barisusakli 11 years ago
parent 9efc341772
commit c7744d7a64

@ -115,19 +115,23 @@ var async = require('async'),
Notifications.get(nid, null, function(notif_data) { Notifications.get(nid, null, function(notif_data) {
async.each(uids, function(uid, next) { async.each(uids, function(uid, next) {
if (parseInt(uid, 10) > 0) { if (!parseInt(uid, 10)) {
next();
}
checkReplace(notif_data.uniqueId, uid, notif_data, function(err, replace) { checkReplace(notif_data.uniqueId, uid, notif_data, function(err, replace) {
if (replace) { if (replace) {
db.sortedSetAdd('uid:' + uid + ':notifications:unread', notif_data.datetime, nid); db.sortedSetAdd('uid:' + uid + ':notifications:unread', notif_data.datetime, nid);
websockets.in('uid_' + uid).emit('event:new_notification', notif_data); websockets.in('uid_' + uid).emit('event:new_notification', notif_data);
} }
next();
});
}, function(err) {
if (callback) { if (callback) {
callback(true); callback(true);
} }
}); });
}
});
}); });
}; };

@ -39,10 +39,10 @@ User.banUsers = function(socket, uids, callback) {
return callback(new Error('[[error:invalid-data]]')); return callback(new Error('[[error:invalid-data]]'));
} }
async.each(uids, banUser, callback); async.each(uids, User.banUser, callback);
}; };
function banUser(uid, callback) { User.banUser = function(uid, callback) {
user.isAdministrator(uid, function(err, isAdmin) { user.isAdministrator(uid, function(err, isAdmin) {
if (err || isAdmin) { if (err || isAdmin) {
return callback(err || new Error('[[error:cant-ban-other-admins]]')); return callback(err || new Error('[[error:cant-ban-other-admins]]'));
@ -63,7 +63,7 @@ function banUser(uid, callback) {
callback(); callback();
}); });
}); });
} };
User.unbanUsers = function(socket, uids, callback) { User.unbanUsers = function(socket, uids, callback) {
if(!Array.isArray(uids)) { if(!Array.isArray(uids)) {

@ -3,6 +3,7 @@
var async = require('async'), var async = require('async'),
nconf = require('nconf'), nconf = require('nconf'),
db = require('../database'),
posts = require('../posts'), posts = require('../posts'),
meta = require('../meta'), meta = require('../meta'),
topics = require('../topics'), topics = require('../topics'),
@ -262,7 +263,8 @@ SocketPosts.flag = function(socket, pid, callback) {
} }
var message = '', var message = '',
path = ''; path = '',
post;
async.waterfall([ async.waterfall([
function(next) { function(next) {
@ -270,10 +272,11 @@ SocketPosts.flag = function(socket, pid, callback) {
}, },
function(username, next) { function(username, next) {
message = '[[notifications:user_flagged_post, ' + username + ']]'; message = '[[notifications:user_flagged_post, ' + username + ']]';
posts.getPostField(pid, 'tid', next); posts.getPostFields(pid, ['tid', 'uid'], next);
}, },
function(tid, next) { function(postData, next) {
topics.getTopicField(tid, 'slug', next); post = postData;
topics.getTopicField(postData.tid, 'slug', next);
}, },
function(topicSlug, next) { function(topicSlug, next) {
path = nconf.get('relative_path') + '/topic/' + topicSlug + '#' + pid; path = nconf.get('relative_path') + '/topic/' + topicSlug + '#' + pid;
@ -287,7 +290,30 @@ SocketPosts.flag = function(socket, pid, callback) {
from: socket.uid from: socket.uid
}, function(nid) { }, function(nid) {
notifications.push(nid, adminGroup.members, function() { notifications.push(nid, adminGroup.members, function() {
next(null); next();
});
});
},
function(next) {
if (!parseInt(post.uid, 10)) {
return next();
}
db.setAdd('uid:' + post.uid + ':flagged_by', socket.uid, function(err) {
if (err) {
return next(err);
}
db.setCount('uid:' + post.uid + ':flagged_by', function(err, count) {
if (err) {
return next(err);
}
if (count >= (meta.config.flagsForBan || 3)) {
var adminUser = require('./admin/user');
adminUser.banUser(post.uid, next);
return;
}
next();
}); });
}); });
} }

@ -50,6 +50,7 @@ module.exports = function(User) {
}; };
User.unban = function(uid, callback) { User.unban = function(uid, callback) {
db.delete('uid:' + uid + ':flagged_by');
User.setUserField(uid, 'banned', 0, callback); User.setUserField(uid, 'banned', 0, callback);
}; };
}; };

Loading…
Cancel
Save