'use strict'; var nconf = require('nconf'), async = require('async'), topics = require('../topics'), categories = require('../categories'), privileges = require('../privileges'), plugins = require('../plugins'), notifications = require('../notifications'), threadTools = require('../threadTools'), websockets = require('./index'), user = require('../user'), db = require('../database'), meta = require('../meta'), utils = require('../../public/src/utils'), SocketPosts = require('./posts'), SocketTopics = {}; SocketTopics.post = function(socket, data, callback) { if(!data) { return callback(new Error('[[error:invalid-data]]')); } topics.post({ uid: socket.uid, title: data.title, content: data.content, cid: data.category_id, thumb: data.topic_thumb, tags: data.tags, req: websockets.reqFromSocket(socket) }, function(err, result) { if (err) { return callback(err); } callback(null, result.topicData); socket.emit('event:new_post', {posts: [result.postData]}); socket.emit('event:new_topic', result.topicData); user.getUidsFromSet('users:online', 0, -1, function(err, uids) { if (err) { return; } privileges.categories.filterUids('read', result.topicData.cid, uids, function(err, uids) { if (err) { return; } plugins.fireHook('filter:sockets.sendNewPostToUids', {uidsTo: uids, uidFrom: data.uid, type: "newTopic"}, function(err, data) { uids = data.uidsTo; for(var i=0; i