|
|
|
@ -174,7 +174,7 @@ module.exports = function (Topics) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
tids = await privileges.topics.filterTids('topics:read', tids, uid);
|
|
|
|
|
let topicData = await Topics.getTopicsFields(tids, ['uid', 'tid', 'cid']);
|
|
|
|
|
let topicData = await Topics.getTopicsFields(tids, ['uid', 'tid', 'cid', 'tags']);
|
|
|
|
|
const topicCids = _.uniq(topicData.map(topic => topic.cid)).filter(Boolean);
|
|
|
|
|
|
|
|
|
|
async function getIgnoredCids() {
|
|
|
|
@ -192,11 +192,13 @@ module.exports = function (Topics) {
|
|
|
|
|
topicData = filtered;
|
|
|
|
|
|
|
|
|
|
const cids = params.cids && params.cids.map(String);
|
|
|
|
|
const { tags } = params;
|
|
|
|
|
tids = topicData.filter(t => (
|
|
|
|
|
t &&
|
|
|
|
|
t.cid &&
|
|
|
|
|
!isCidIgnored[t.cid] &&
|
|
|
|
|
(!cids || cids.includes(String(t.cid)))
|
|
|
|
|
(!cids || cids.includes(String(t.cid))) &&
|
|
|
|
|
(!tags.length || tags.every(tag => t.tags.find(topicTag => topicTag.value === tag)))
|
|
|
|
|
)).map(t => t.tid);
|
|
|
|
|
|
|
|
|
|
const result = await plugins.hooks.fire('filter:topics.filterSortedTids', { tids: tids, params: params });
|
|
|
|
|