getPostSummary change

v1.18.x
barisusakli 11 years ago
parent 301008b9cb
commit b2a837d283

@ -278,76 +278,85 @@ var db = require('./database'),
Posts.getPostSummaryByPids = function(pids, stripTags, callback) { Posts.getPostSummaryByPids = function(pids, stripTags, callback) {
function getPostSummary(pid, callback) { function getPostSummary(post, callback) {
async.waterfall([ post.relativeTime = utils.toISOString(post.timestamp);
function(next) {
Posts.getPostFields(pid, ['pid', 'tid', 'content', 'uid', 'timestamp', 'deleted'], function(err, postData) {
if(err) {
return next(err);
}
if (parseInt(postData.deleted, 10) === 1) { async.parallel([
return callback(null); function(next) {
} Posts.addUserInfoToPost(post, function() {
next(null, post);
postData.relativeTime = utils.toISOString(postData.timestamp);
next(null, postData);
});
},
function(postData, next) {
Posts.addUserInfoToPost(postData, function() {
next(null, postData);
}); });
}, },
function(postData, next) { function(next) {
topics.getTopicFields(postData.tid, ['title', 'cid', 'slug', 'deleted'], function(err, topicData) { topics.getTopicFields(post.tid, ['title', 'cid', 'slug', 'deleted'], function(err, topicData) {
if (err) { if (err) {
return callback(err); return next(err);
} else if (parseInt(topicData.deleted, 10) === 1) { } else if (parseInt(topicData.deleted, 10) === 1) {
return callback(null); return callback();
} }
categories.getCategoryFields(topicData.cid, ['name', 'icon', 'slug'], function(err, categoryData) { categories.getCategoryFields(topicData.cid, ['name', 'icon', 'slug'], function(err, categoryData) {
postData.category = categoryData; if (err) {
return next(err);
}
post.category = categoryData;
topicData.title = validator.escape(topicData.title); topicData.title = validator.escape(topicData.title);
postData.topic = topicData; post.topic = topicData;
next(null, postData); next();
}); });
}); });
}, },
function(postData, next) { function(next) {
if (!postData.content) { if (!post.content) {
return next(null, postData); return next();
} }
postTools.parse(postData.content, function(err, content) { postTools.parse(post.content, function(err, content) {
if(err) { if(err) {
return next(err); return next(err);
} }
if(stripTags) { if(stripTags) {
var s = S(content); var s = S(content);
postData.content = s.stripTags.apply(s, utils.getTagsExcept(['img', 'i', 'p'])).s; post.content = s.stripTags.apply(s, utils.getTagsExcept(['img', 'i', 'p'])).s;
} else { } else {
postData.content = content; post.content = content;
} }
next(null, postData); next();
}); });
} }
], callback); ], function(err) {
callback(err, post);
});
} }
async.map(pids, getPostSummary, function(err, posts) { var keys = pids.map(function(pid) {
if(err) { return 'post:' + pid;
});
db.getObjectsFields(keys, ['pid', 'tid', 'content', 'uid', 'timestamp', 'deleted'], function(err, posts) {
if (err) {
return callback(err); return callback(err);
} }
posts = posts.filter(function(p) { posts = posts.filter(function(p) {
return p; return !!p || parseInt(p.deleted, 10) !== 1;
}); });
callback(null, posts); async.map(posts, getPostSummary, function(err, posts) {
if (err) {
return callback(err);
}
posts = posts.filter(function(post) {
return !!post;
});
return callback(null, posts);
});
}); });
}; };

Loading…
Cancel
Save