added reqFromSocket to topic posting

new filter topic.post
v1.18.x
barisusakli 11 years ago
parent efdb511c2c
commit cd3bb77a7f

@ -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 = {},
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 = {};
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);

Loading…
Cancel
Save