From 17e44ff5c945177c2bd4e7dc15f47bb71ea1b5b5 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Fri, 24 Jun 2022 11:00:15 -0400 Subject: [PATCH] feat: fire hook to allow plugins to filter the pids returned in a user profile /cc julianlam/nodebb-plugin-support-forum#14 --- src/controllers/accounts/profile.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/controllers/accounts/profile.js b/src/controllers/accounts/profile.js index 0a505884f0..8b049b8e34 100644 --- a/src/controllers/accounts/profile.js +++ b/src/controllers/accounts/profile.js @@ -7,6 +7,7 @@ const db = require('../../database'); const user = require('../../user'); const posts = require('../../posts'); const categories = require('../../categories'); +const plugins = require('../../plugins'); const meta = require('../../meta'); const privileges = require('../../privileges'); const accountHelpers = require('./helpers'); @@ -106,11 +107,17 @@ async function getPosts(callerUid, userData, setSuffix) { do { /* eslint-disable no-await-in-loop */ - const pids = await db.getSortedSetRevRange(keys, start, start + count - 1); + let pids = await db.getSortedSetRevRange(keys, start, start + count - 1); if (!pids.length || pids.length < count) { hasMorePosts = false; } if (pids.length) { + ({ pids } = await plugins.hooks.fire('filter:account.profile.getPids', { + uid: callerUid, + userData, + setSuffix, + pids, + })); const p = await posts.getPostSummaryByPids(pids, callerUid, { stripTags: false }); postData.push(...p.filter( p => p && p.topic && (isAdmin || cidToIsMod[p.topic.cid] ||