mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-28 09:36:16 +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 */
|
/* 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;
|
Sockets.isUserOnline = isUserOnline;
|
||||||
function isUserOnline(uid) {
|
function isUserOnline(uid) {
|
||||||
return Sockets.getUserSockets(uid).length > 0;
|
return Sockets.getUserSockets(uid).length > 0;
|
||||||
|
|||||||
@@ -13,23 +13,9 @@ var async = require('async'),
|
|||||||
user = require('../user'),
|
user = require('../user'),
|
||||||
websockets = require('./index'),
|
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) {
|
SocketPosts.reply = function(socket, data, callback) {
|
||||||
|
|
||||||
@@ -42,7 +28,7 @@ SocketPosts.reply = function(socket, data, callback) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
data.uid = socket.uid;
|
data.uid = socket.uid;
|
||||||
data.req = reqFromSocket(socket);
|
data.req = websockets.reqFromSocket(socket);
|
||||||
|
|
||||||
topics.reply(data, function(err, postData) {
|
topics.reply(data, function(err, postData) {
|
||||||
if(err) {
|
if(err) {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ var topics = require('../topics'),
|
|||||||
categories = require('../categories'),
|
categories = require('../categories'),
|
||||||
threadTools = require('../threadTools'),
|
threadTools = require('../threadTools'),
|
||||||
categoryTools = require('../categoryTools'),
|
categoryTools = require('../categoryTools'),
|
||||||
index = require('./index'),
|
websockets = require('./index'),
|
||||||
user = require('../user'),
|
user = require('../user'),
|
||||||
db = require('./../database'),
|
db = require('./../database'),
|
||||||
meta = require('./../meta'),
|
meta = require('./../meta'),
|
||||||
@@ -25,20 +25,27 @@ SocketTopics.post = function(socket, data, callback) {
|
|||||||
return callback(new Error('[[error:not-logged-in]]'));
|
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) {
|
if(err) {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (result) {
|
if (result) {
|
||||||
|
|
||||||
index.server.sockets.in('category_' + data.category_id).emit('event:new_topic', result.topicData);
|
websockets.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);
|
websockets.server.sockets.in('recent_posts').emit('event:new_topic', result.topicData);
|
||||||
index.server.sockets.in('home').emit('event:new_topic', result.topicData);
|
websockets.server.sockets.in('home').emit('event:new_topic', result.topicData);
|
||||||
index.server.sockets.in('home').emit('event:new_post', {
|
websockets.server.sockets.in('home').emit('event:new_post', {
|
||||||
posts: result.postData
|
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
|
posts: result.postData
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -253,11 +260,11 @@ SocketTopics.move = function(socket, data, callback) {
|
|||||||
return next(err);
|
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
|
tid: tid
|
||||||
});
|
});
|
||||||
|
|
||||||
index.server.sockets.in('category_' + oldCid).emit('event:topic_moved', {
|
websockets.server.sockets.in('category_' + oldCid).emit('event:topic_moved', {
|
||||||
tid: tid
|
tid: tid
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -83,6 +83,16 @@ module.exports = function(Topics) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async.waterfall([
|
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) {
|
function(next) {
|
||||||
categoryTools.exists(cid, next);
|
categoryTools.exists(cid, next);
|
||||||
},
|
},
|
||||||
@@ -105,7 +115,7 @@ module.exports = function(Topics) {
|
|||||||
Topics.create({uid: uid, title: title, cid: cid, thumb: thumb}, next);
|
Topics.create({uid: uid, title: title, cid: cid, thumb: thumb}, next);
|
||||||
},
|
},
|
||||||
function(tid, 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) {
|
function(postData, next) {
|
||||||
threadTools.toggleFollow(postData.tid, uid);
|
threadTools.toggleFollow(postData.tid, uid);
|
||||||
|
|||||||
Reference in New Issue
Block a user