diff --git a/src/routes/api.js b/src/routes/api.js index d3bbbdc1cd..f5f19a8075 100644 --- a/src/routes/api.js +++ b/src/routes/api.js @@ -101,9 +101,12 @@ var user = require('./../user.js'), res.json(data); }); - app.get('/api/topic/:id/:slug?', function(req, res) { + app.get('/api/topic/:id/:slug?', function(req, res, next) { var uid = (req.user) ? req.user.uid : 0; topics.getTopicWithPosts(req.params.id, uid, function(err, data) { + if(data.deleted === '1' && data.expose_tools === 0) { + return res.json(404, {}); + } res.json(data); }); }); diff --git a/src/webserver.js b/src/webserver.js index 52cfb71c19..ff0aa67221 100644 --- a/src/webserver.js +++ b/src/webserver.js @@ -207,6 +207,7 @@ var express = require('express'), app.get('/topic/:topic_id/:slug?', function(req, res) { + var tid = req.params.topic_id; if (tid.match(/^\d+\.rss$/)) { fs.readFile('feeds/topics/' + tid, function (err, data) { @@ -221,13 +222,19 @@ var express = require('express'), } async.waterfall([ + function(next) { + topics.getTopicField(tid, 'deleted', function(err, deleted) { + if(deleted === '1') + return next(1, null); + }); + }, function(next) { topics.getTopicWithPosts(tid, ((req.user) ? req.user.uid : 0), function(err, topicData) { next(err, topicData); }); }, function(topicData, next) { - var posts = topicData.posts.push(topicData.main_posts[0]), + var posts = topicData.posts.push(topicData.main_posts[0]), lastMod = 0, timestamp;