mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-27 17:16:14 +01:00
added reqFromSocket to topic posting
new filter topic.post
This commit is contained in:
@@ -225,6 +225,22 @@ Sockets.getUserSockets = function(uid) {
|
||||
|
||||
/* Helpers */
|
||||
|
||||
Sockets.reqFromSocket = function(socket) {
|
||||
var headers = socket.handshake.headers,
|
||||
host = headers.host,
|
||||
referer = headers.referer;
|
||||
|
||||
return {
|
||||
ip: headers['x-forwarded-for'] || (socket.handshake.address || {}).address,
|
||||
host: host,
|
||||
protocol: headers.secure ? 'https' : 'http',
|
||||
secure: !!headers.secure,
|
||||
url: referer,
|
||||
path: referer.substr(referer.indexOf(host) + host.length),
|
||||
headers: headers
|
||||
};
|
||||
};
|
||||
|
||||
Sockets.isUserOnline = isUserOnline;
|
||||
function isUserOnline(uid) {
|
||||
return Sockets.getUserSockets(uid).length > 0;
|
||||
|
||||
@@ -13,23 +13,9 @@ var async = require('async'),
|
||||
user = require('../user'),
|
||||
websockets = require('./index'),
|
||||
|
||||
SocketPosts = {},
|
||||
SocketPosts = {};
|
||||
|
||||
reqFromSocket = function(socket) {
|
||||
var headers = socket.handshake.headers,
|
||||
host = headers.host,
|
||||
referer = headers.referer;
|
||||
|
||||
return {
|
||||
ip: headers['x-forwarded-for'] || (socket.handshake.address || {}).address,
|
||||
host: host,
|
||||
protocol: headers.secure ? 'https' : 'http',
|
||||
secure: !!headers.secure,
|
||||
url: referer,
|
||||
path: referer.substr(referer.indexOf(host) + host.length),
|
||||
headers: headers
|
||||
};
|
||||
};
|
||||
|
||||
SocketPosts.reply = function(socket, data, callback) {
|
||||
|
||||
@@ -42,7 +28,7 @@ SocketPosts.reply = function(socket, data, callback) {
|
||||
}
|
||||
|
||||
data.uid = socket.uid;
|
||||
data.req = reqFromSocket(socket);
|
||||
data.req = websockets.reqFromSocket(socket);
|
||||
|
||||
topics.reply(data, function(err, postData) {
|
||||
if(err) {
|
||||
|
||||
@@ -5,7 +5,7 @@ var topics = require('../topics'),
|
||||
categories = require('../categories'),
|
||||
threadTools = require('../threadTools'),
|
||||
categoryTools = require('../categoryTools'),
|
||||
index = require('./index'),
|
||||
websockets = require('./index'),
|
||||
user = require('../user'),
|
||||
db = require('./../database'),
|
||||
meta = require('./../meta'),
|
||||
@@ -25,20 +25,27 @@ SocketTopics.post = function(socket, data, callback) {
|
||||
return callback(new Error('[[error:not-logged-in]]'));
|
||||
}
|
||||
|
||||
topics.post({uid: socket.uid, title: data.title, content: data.content, cid: data.category_id, thumb: data.topic_thumb}, function(err, result) {
|
||||
topics.post({
|
||||
uid: socket.uid,
|
||||
title: data.title,
|
||||
content: data.content,
|
||||
cid: data.category_id,
|
||||
thumb: data.topic_thumb,
|
||||
req: websockets.reqFromSocket(socket)
|
||||
}, function(err, result) {
|
||||
if(err) {
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
if (result) {
|
||||
|
||||
index.server.sockets.in('category_' + data.category_id).emit('event:new_topic', result.topicData);
|
||||
index.server.sockets.in('recent_posts').emit('event:new_topic', result.topicData);
|
||||
index.server.sockets.in('home').emit('event:new_topic', result.topicData);
|
||||
index.server.sockets.in('home').emit('event:new_post', {
|
||||
websockets.server.sockets.in('category_' + data.category_id).emit('event:new_topic', result.topicData);
|
||||
websockets.server.sockets.in('recent_posts').emit('event:new_topic', result.topicData);
|
||||
websockets.server.sockets.in('home').emit('event:new_topic', result.topicData);
|
||||
websockets.server.sockets.in('home').emit('event:new_post', {
|
||||
posts: result.postData
|
||||
});
|
||||
index.server.sockets.in('user/' + socket.uid).emit('event:new_post', {
|
||||
websockets.server.sockets.in('user/' + socket.uid).emit('event:new_post', {
|
||||
posts: result.postData
|
||||
});
|
||||
|
||||
@@ -253,11 +260,11 @@ SocketTopics.move = function(socket, data, callback) {
|
||||
return next(err);
|
||||
}
|
||||
|
||||
index.server.sockets.in('topic_' + tid).emit('event:topic_moved', {
|
||||
websockets.server.sockets.in('topic_' + tid).emit('event:topic_moved', {
|
||||
tid: tid
|
||||
});
|
||||
|
||||
index.server.sockets.in('category_' + oldCid).emit('event:topic_moved', {
|
||||
websockets.server.sockets.in('category_' + oldCid).emit('event:topic_moved', {
|
||||
tid: tid
|
||||
});
|
||||
|
||||
|
||||
@@ -83,6 +83,16 @@ module.exports = function(Topics) {
|
||||
}
|
||||
|
||||
async.waterfall([
|
||||
function(next) {
|
||||
plugins.fireHook('filter:topic.post', data, function(err, filteredData) {
|
||||
if (err) {
|
||||
return next(err);
|
||||
}
|
||||
|
||||
content = filteredData.content || data.content;
|
||||
next();
|
||||
});
|
||||
},
|
||||
function(next) {
|
||||
categoryTools.exists(cid, next);
|
||||
},
|
||||
@@ -105,7 +115,7 @@ module.exports = function(Topics) {
|
||||
Topics.create({uid: uid, title: title, cid: cid, thumb: thumb}, next);
|
||||
},
|
||||
function(tid, next) {
|
||||
Topics.reply({uid:uid, tid:tid, content:content}, next);
|
||||
Topics.reply({uid:uid, tid:tid, content:content, req: data.req}, next);
|
||||
},
|
||||
function(postData, next) {
|
||||
threadTools.toggleFollow(postData.tid, uid);
|
||||
|
||||
Reference in New Issue
Block a user