'use strict'; var nconf = require('nconf'), async = require('async'), winston = require('winston'), 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'), events = require('../events'), 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, handle: data.handle, 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); async.waterfall([ function(next) { user.getUidsFromSet('users:online', 0, -1, next); }, function(uids, next) { privileges.categories.filterUids('read', result.topicData.cid, uids, next); }, function(uids, next) { plugins.fireHook('filter:sockets.sendNewPostToUids', {uidsTo: uids, uidFrom: data.uid, type: 'newTopic'}, next); } ], function(err, data) { if (err) { return winston.error(err.stack); } var uids = data.uidsTo; for(var i=0; i