Baris Soner Usakli 12 years ago
commit 8c8e1fef93

@ -29,7 +29,9 @@
Feed.updateTopic = function(tid, cid) {
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,
xml_url = '/topic/' + tid + '.rss';

@ -7,6 +7,13 @@ var RDB = require('./redis.js'),
(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) {
//todo: break early if one condition is true

@ -84,47 +84,51 @@ marked.setOptions({
}
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);
function getTopicData(next) {
Topics.getTopicData(tid, function(topicData) {
next(null, topicData);
});
}
function getTopicData(next) {
Topics.getTopicData(tid, function(topicData) {
next(null, topicData);
});
}
function getTopicPosts(next) {
Topics.getTopicPosts(tid, 0, -1, current_user, function(topicPosts, privileges) {
function getTopicPosts(next) {
Topics.getTopicPosts(tid, 0, -1, current_user, function(topicPosts, privileges) {
next(null, topicPosts);
});
}
next(null, topicPosts);
});
}
function getPrivileges(next) {
threadTools.privileges(tid, current_user, function(privData) {
next(null, privData);
});
}
function getPrivileges(next) {
threadTools.privileges(tid, current_user, function(privData) {
next(null, privData);
});
}
async.parallel([getTopicData, getTopicPosts, getPrivileges], function(err, results) {
var topicData = results[0],
topicPosts = results[1],
privileges = results[2];
var main_posts = topicPosts.splice(0, 1);
callback({
'topic_name':topicData.title,
'category_name':topicData.category_name,
'category_slug':topicData.category_slug,
'locked': topicData.locked,
'deleted': topicData.deleted,
'pinned': topicData.pinned,
'slug': topicData.slug,
'topic_id': tid,
'expose_tools': privileges.editable ? 1 : 0,
'posts': topicPosts,
'main_posts': main_posts
async.parallel([getTopicData, getTopicPosts, getPrivileges], function(err, results) {
if (err) console.log(err.message);
var topicData = results[0],
topicPosts = results[1],
privileges = results[2];
var main_posts = topicPosts.splice(0, 1);
callback(null, {
'topic_name':topicData.title,
'category_name':topicData.category_name,
'category_slug':topicData.category_slug,
'locked': topicData.locked,
'deleted': topicData.deleted,
'pinned': topicData.pinned,
'slug': topicData.slug,
'topic_id': tid,
'expose_tools': privileges.editable ? 1 : 0,
'posts': topicPosts,
'main_posts': main_posts
});
});
});
}

@ -133,7 +133,9 @@ var express = require('express'),
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(
app.build_header(res) +
'\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);
break;
case 'topic' :
topics.getTopicWithPosts(req.params.id, uid, function(data) {
topics.getTopicWithPosts(req.params.id, uid, function(err, data) {
res.json(data);
});
break;

Loading…
Cancel
Save