Vulcan/packages/telescope-comments/lib/server/publications.js

67 lines
1.8 KiB
JavaScript
Raw Normal View History

2015-04-22 07:50:26 +09:00
Comments._ensureIndex({"postId": 1});
// Publish a list of comments
Meteor.publish('commentsList', function(terms) {
if(Users.can.viewById(this.userId)){
var parameters = Comments.getSubParams(terms);
var comments = Comments.find(parameters.find, parameters.options);
// if there are comments, find out which posts were commented on
var commentedPostIds = comments.count() ? _.pluck(comments.fetch(), 'postId') : [];
return [
comments,
Posts.find({_id: {$in: commentedPostIds}})
];
}
});
2015-04-22 07:50:26 +09:00
// Publish a single comment
Meteor.publish('singleCommentAndChildren', function(commentId) {
if(Users.can.viewById(this.userId)){
// publish both current comment and child comments
var commentIds = [commentId];
var childCommentIds = _.pluck(Comments.find({parentCommentId: commentId}, {fields: {_id: 1}}).fetch(), '_id');
commentIds = commentIds.concat(childCommentIds);
return Comments.find({_id: {$in: commentIds}}, {sort: {score: -1, postedAt: -1}});
}
return [];
});
// Publish the post related to the current comment
Meteor.publish('commentPost', function(commentId) {
if(Users.can.viewById(this.userId)){
var comment = Comments.findOne(commentId);
return Posts.find({_id: comment && comment.postId});
}
return [];
});
// Publish author of the current comment, and author of the post related to the current comment
Meteor.publish('commentUsers', function(commentId) {
var userIds = [];
if(Users.can.viewById(this.userId)){
var comment = Comments.findOne(commentId);
2015-04-28 09:44:43 +09:00
if (!!comment) {
userIds.push(comment.userId);
}
2015-04-22 07:50:26 +09:00
var post = Posts.findOne(comment.postId);
2015-04-28 09:44:43 +09:00
if (!!post) {
userIds.push(post.userId);
}
2015-04-22 07:50:26 +09:00
2015-04-25 13:20:51 +09:00
return Meteor.users.find({_id: {$in: userIds}}, {fields: Users.pubsub.publicProperties});
2015-04-22 07:50:26 +09:00
}
return [];
2015-04-23 11:11:07 +09:00
});