added four new hooks: filter:categories.recent, filter:privileges.categories.get, filter:privileges.posts.filter, filter:privileges.topics.filter

v1.18.x
Julian Lam 11 years ago
parent b480bff3fd
commit 20ea40133b

@ -8,7 +8,8 @@ var async = require('async'),
db = require('../database'), db = require('../database'),
posts = require('../posts'), posts = require('../posts'),
topics = require('../topics'), topics = require('../topics'),
privileges = require('../privileges'); privileges = require('../privileges'),
plugins = require('../plugins');
module.exports = function(Categories) { module.exports = function(Categories) {
Categories.getRecentReplies = function(cid, uid, count, callback) { Categories.getRecentReplies = function(cid, uid, count, callback) {
@ -25,7 +26,12 @@ module.exports = function(Categories) {
return callback(err, []); return callback(err, []);
} }
posts.getPostSummaryByPids(pids, uid, {stripTags: true}, callback); plugins.fireHook('filter:categories.recent', {
uid: uid,
pids: pids
}, function(err, data) {
posts.getPostSummaryByPids(data.pids, uid, {stripTags: true}, callback);
});
}); });
}); });
}; };

@ -16,6 +16,10 @@ var async = require('async'),
module.exports = function(Posts) { module.exports = function(Posts) {
Posts.getPostSummaryByPids = function(pids, uid, options, callback) { Posts.getPostSummaryByPids = function(pids, uid, options, callback) {
if (!pids || !Array.isArray(pids) || !pids.length) {
return callback(null, []);
}
options.stripTags = options.hasOwnProperty('stripTags') ? options.stripTags : false; options.stripTags = options.hasOwnProperty('stripTags') ? options.stripTags : false;
options.parse = options.hasOwnProperty('parse') ? options.parse : true; options.parse = options.hasOwnProperty('parse') ? options.parse : true;
options.extraFields = options.hasOwnProperty('extraFields') ? options.extraFields : []; options.extraFields = options.hasOwnProperty('extraFields') ? options.extraFields : [];

@ -6,8 +6,8 @@ var async = require('async'),
user = require('../user'), user = require('../user'),
categories = require('../categories'), categories = require('../categories'),
groups = require('../groups'), groups = require('../groups'),
helpers = require('./helpers'); helpers = require('./helpers'),
plugins = require('../plugins');
module.exports = function(privileges) { module.exports = function(privileges) {
@ -34,12 +34,14 @@ module.exports = function(privileges) {
var isAdminOrMod = results.isAdministrator || results.isModerator; var isAdminOrMod = results.isAdministrator || results.isModerator;
callback(null, { plugins.fireHook('filter:privileges.categories.get', {
cid: cid,
uid: uid,
'topics:create': results['topics:create'][0] || isAdminOrMod, 'topics:create': results['topics:create'][0] || isAdminOrMod,
editable: isAdminOrMod, editable: isAdminOrMod,
view_deleted: isAdminOrMod, view_deleted: isAdminOrMod,
read: results.read[0] || isAdminOrMod read: results.read[0] || isAdminOrMod
}); }, callback);
}); });
}; };

@ -9,7 +9,8 @@ var async = require('async'),
user = require('../user'), user = require('../user'),
helpers = require('./helpers'), helpers = require('./helpers'),
groups = require('../groups'), groups = require('../groups'),
categories = require('../categories'); categories = require('../categories'),
plugins = require('../plugins');
module.exports = function(privileges) { module.exports = function(privileges) {
@ -94,7 +95,14 @@ module.exports = function(privileges) {
}).map(function(post) { }).map(function(post) {
return post.pid; return post.pid;
}); });
callback(null, pids);
plugins.fireHook('filter:privileges.posts.filter', {
privilege: privilege,
uid: uid,
pids: pids
}, function(err, data) {
callback(null, data.pids);
});
}); });
}); });
}; };

@ -91,7 +91,14 @@ module.exports = function(privileges) {
}).map(function(topic) { }).map(function(topic) {
return topic.tid; return topic.tid;
}); });
callback(null, tids);
plugins.fireHook('filter:privileges.topics.filter', {
privilege: privilege,
uid: uid,
tids: tids
}, function(err, data) {
callback(null, data.tids);
});
}); });
}); });
}; };

@ -115,6 +115,7 @@ module.exports = function(Topics) {
return callback(null, tids); return callback(null, tids);
} }
privileges.topics.filter('read', tids, uid, function(err, tids) {
var keys = tids.map(function(tid) { var keys = tids.map(function(tid) {
return 'topic:' + tid; return 'topic:' + tid;
}); });
@ -148,6 +149,7 @@ module.exports = function(Topics) {
callback(null, topics); callback(null, topics);
}); });
}); });
});
} }
Topics.pushUnreadCount = function(uid, callback) { Topics.pushUnreadCount = function(uid, callback) {

Loading…
Cancel
Save