mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-02 20:16:04 +01:00
added four new hooks: filter:categories.recent, filter:privileges.categories.get, filter:privileges.posts.filter, filter:privileges.topics.filter
This commit is contained in:
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user