Baris Soner Usakli 12 years ago
commit 8c8e1fef93

@ -29,7 +29,9 @@
Feed.updateTopic = function(tid, cid) { Feed.updateTopic = function(tid, cid) {
var cache_time_in_seconds = 60; var cache_time_in_seconds = 60;
topics.getTopicWithPosts(tid, 0, function(topicData) { topics.getTopicWithPosts(tid, 0, function(err, topicData) {
if (err) console.log('Error: Problem saving topic RSS feed', err);
var location = '/topic/' + topicData.slug, var location = '/topic/' + topicData.slug,
xml_url = '/topic/' + tid + '.rss'; xml_url = '/topic/' + tid + '.rss';

@ -7,6 +7,13 @@ var RDB = require('./redis.js'),
(function(ThreadTools) { (function(ThreadTools) {
ThreadTools.exists = function(tid, callback) {
RDB.sismember('topics:tid', tid, function(err, ismember) {
if (err) RDB.handle(err);
callback(!!ismember || false);
});
}
ThreadTools.privileges = function(tid, uid, callback) { ThreadTools.privileges = function(tid, uid, callback) {
//todo: break early if one condition is true //todo: break early if one condition is true

@ -84,6 +84,8 @@ marked.setOptions({
} }
Topics.getTopicWithPosts = function(tid, current_user, callback) { Topics.getTopicWithPosts = function(tid, current_user, callback) {
threadTools.exists(tid, function(exists) {
if (!exists) return callback(new Error('Topic tid \'' + tid + '\' not found'));
Topics.markAsRead(tid, current_user); Topics.markAsRead(tid, current_user);
@ -107,13 +109,14 @@ marked.setOptions({
} }
async.parallel([getTopicData, getTopicPosts, getPrivileges], function(err, results) { async.parallel([getTopicData, getTopicPosts, getPrivileges], function(err, results) {
if (err) console.log(err.message);
var topicData = results[0], var topicData = results[0],
topicPosts = results[1], topicPosts = results[1],
privileges = results[2]; privileges = results[2];
var main_posts = topicPosts.splice(0, 1); var main_posts = topicPosts.splice(0, 1);
callback({ callback(null, {
'topic_name':topicData.title, 'topic_name':topicData.title,
'category_name':topicData.category_name, 'category_name':topicData.category_name,
'category_slug':topicData.category_slug, 'category_slug':topicData.category_slug,
@ -127,6 +130,7 @@ marked.setOptions({
'main_posts': main_posts 'main_posts': main_posts
}); });
}); });
});
} }

@ -133,7 +133,9 @@ var express = require('express'),
var topic_url = tid + (req.params.slug ? '/' + req.params.slug : ''); var topic_url = tid + (req.params.slug ? '/' + req.params.slug : '');
topics.getTopicWithPosts(tid, ((req.user) ? req.user.uid : 0), function(topic) { topics.getTopicWithPosts(tid, ((req.user) ? req.user.uid : 0), function(err, topic) {
if (err) return res.redirect('404');
res.send( res.send(
app.build_header(res) + app.build_header(res) +
'\n\t<noscript>\n' + templates['noscript/header'] + templates['noscript/topic'].parse(topic) + '\n\t</noscript>' + '\n\t<noscript>\n' + templates['noscript/header'] + templates['noscript/topic'].parse(topic) + '\n\t</noscript>' +
@ -238,7 +240,7 @@ var express = require('express'),
res.json(data); res.json(data);
break; break;
case 'topic' : case 'topic' :
topics.getTopicWithPosts(req.params.id, uid, function(data) { topics.getTopicWithPosts(req.params.id, uid, function(err, data) {
res.json(data); res.json(data);
}); });
break; break;

Loading…
Cancel
Save