Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v4 hook removals #12216

Open
wants to merge 8 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
5 changes: 1 addition & 4 deletions src/emailer.js
Expand Up @@ -331,10 +331,7 @@ Emailer.sendToEmail = async (template, email, language, params) => {
const usingFallback = !Plugins.hooks.hasListeners('filter:email.send') &&
!Plugins.hooks.hasListeners('static:email.send');
try {
if (Plugins.hooks.hasListeners('filter:email.send')) {
// Deprecated, remove in v1.19.0
await Plugins.hooks.fire('filter:email.send', data);
} else if (Plugins.hooks.hasListeners('static:email.send')) {
if (Plugins.hooks.hasListeners('static:email.send')) {
await Plugins.hooks.fire('static:email.send', data);
} else {
await Emailer.sendViaFallback(data);
Expand Down
1 change: 0 additions & 1 deletion src/flags.js
Expand Up @@ -94,7 +94,6 @@ Flags.init = async function () {
};

try {
({ filters: Flags._filters } = await plugins.hooks.fire('filter:flags.getFilters', hookData));
({ filters: Flags._filters, states: Flags._states } = await plugins.hooks.fire('filter:flags.init', hookData));
} catch (err) {
winston.error(`[flags/init] Could not retrieve filters\n${err.stack}`);
Expand Down
6 changes: 0 additions & 6 deletions src/middleware/index.js
@@ -1,6 +1,5 @@
'use strict';

const async = require('async');
const path = require('path');
const validator = require('validator');
const nconf = require('nconf');
Expand Down Expand Up @@ -90,11 +89,6 @@ middleware.pageView = helpers.try(async (req, res, next) => {
});

middleware.pluginHooks = helpers.try(async (req, res, next) => {
// TODO: Deprecate in v2.0
await async.each(plugins.loadedHooks['filter:router.page'] || [], (hookObj, next) => {
hookObj.method(req, res, next);
});

await plugins.hooks.fire('response:router.page', {
req: req,
res: res,
Expand Down
96 changes: 5 additions & 91 deletions src/plugins/hooks.js
Expand Up @@ -7,97 +7,11 @@ const utils = require('../utils');
const Hooks = module.exports;

Hooks._deprecated = new Map([
['filter:email.send', {
new: 'static:email.send',
since: 'v1.17.0',
until: 'v2.0.0',
}],
['filter:router.page', {
new: 'response:router.page',
since: 'v1.15.3',
until: 'v2.1.0',
}],
['filter:post.purge', {
new: 'filter:posts.purge',
since: 'v1.19.6',
until: 'v2.1.0',
}],
['action:post.purge', {
new: 'action:posts.purge',
since: 'v1.19.6',
until: 'v2.1.0',
}],
['filter:user.verify.code', {
new: 'filter:user.verify',
since: 'v2.2.0',
until: 'v3.0.0',
}],
['filter:flags.getFilters', {
new: 'filter:flags.init',
since: 'v2.7.0',
until: 'v3.0.0',
}],
['filter:privileges.global.list', {
new: 'static:privileges.global.init',
since: 'v3.5.0',
until: 'v4.0.0',
}],
['filter:privileges.global.groups.list', {
new: 'static:privileges.global.init',
since: 'v3.5.0',
until: 'v4.0.0',
}],
['filter:privileges.global.list_human', {
new: 'static:privileges.global.init',
since: 'v3.5.0',
until: 'v4.0.0',
}],
['filter:privileges.global.groups.list_human', {
new: 'static:privileges.global.init',
since: 'v3.5.0',
until: 'v4.0.0',
}],
['filter:privileges.list', {
new: 'static:privileges.categories.init',
since: 'v3.5.0',
until: 'v4.0.0',
}],
['filter:privileges.groups.list', {
new: 'static:privileges.categories.init',
since: 'v3.5.0',
until: 'v4.0.0',
}],
['filter:privileges.list_human', {
new: 'static:privileges.categories.init',
since: 'v3.5.0',
until: 'v4.0.0',
}],
['filter:privileges.groups.list_human', {
new: 'static:privileges.categories.init',
since: 'v3.5.0',
until: 'v4.0.0',
}],

['filter:privileges.admin.list', {
new: 'static:privileges.admin.init',
since: 'v3.5.0',
until: 'v4.0.0',
}],
['filter:privileges.admin.groups.list', {
new: 'static:privileges.admin.init',
since: 'v3.5.0',
until: 'v4.0.0',
}],
['filter:privileges.admin.list_human', {
new: 'static:privileges.admin.init',
since: 'v3.5.0',
until: 'v4.0.0',
}],
['filter:privileges.admin.groups.list_human', {
new: 'static:privileges.admin.init',
since: 'v3.5.0',
until: 'v4.0.0',
}],
/* ['filter:old.hook.name', {
new: 'filter:new.hook.name',
since: 'v4.0.0',
until: 'v5.0.0',
}], */
]);

Hooks.internals = {
Expand Down
8 changes: 0 additions & 8 deletions src/posts/delete.js
Expand Up @@ -61,10 +61,6 @@ module.exports = function (Posts) {
p.cid = tidToTopic[p.tid] && tidToTopic[p.tid].cid;
});

// deprecated hook
await Promise.all(postData.map(p => plugins.hooks.fire('filter:post.purge', { post: p, pid: p.pid, uid: uid })));

// new hook
await plugins.hooks.fire('filter:posts.purge', {
posts: postData,
pids: postData.map(p => p.pid),
Expand All @@ -85,10 +81,6 @@ module.exports = function (Posts) {

await resolveFlags(postData, uid);

// deprecated hook
Promise.all(postData.map(p => plugins.hooks.fire('action:post.purge', { post: p, uid: uid })));

// new hook
plugins.hooks.fire('action:posts.purge', { posts: postData, uid: uid });

await db.deleteAll(postData.map(p => `post:${p.pid}`));
Expand Down
10 changes: 2 additions & 8 deletions src/privileges/admin.js
Expand Up @@ -39,8 +39,8 @@ privsAdmin.init = async () => {
}
};

privsAdmin.getUserPrivilegeList = async () => await plugins.hooks.fire('filter:privileges.admin.list', Array.from(_privilegeMap.keys()));
privsAdmin.getGroupPrivilegeList = async () => await plugins.hooks.fire('filter:privileges.admin.groups.list', Array.from(_privilegeMap.keys()).map(privilege => `groups:${privilege}`));
privsAdmin.getUserPrivilegeList = () => Array.from(_privilegeMap.keys());
privsAdmin.getGroupPrivilegeList = () => Array.from(_privilegeMap.keys()).map(privilege => `groups:${privilege}`);
privsAdmin.getPrivilegeList = async () => {
const [user, group] = await Promise.all([
privsAdmin.getUserPrivilegeList(),
Expand Down Expand Up @@ -146,18 +146,12 @@ privsAdmin.list = async function (uid) {
groupPrivilegeList.splice(idx, 1);
}

const labels = await utils.promiseParallel({
users: plugins.hooks.fire('filter:privileges.admin.list_human', privilegeLabels.slice()),
groups: plugins.hooks.fire('filter:privileges.admin.groups.list_human', privilegeLabels.slice()),
});

const keys = {
users: userPrivilegeList,
groups: groupPrivilegeList,
};

const payload = await utils.promiseParallel({
labels,
labelData: Array.from(_privilegeMap.values()),
users: helpers.getUserPrivileges(0, keys.users),
groups: helpers.getGroupPrivileges(0, keys.groups),
Expand Down
15 changes: 4 additions & 11 deletions src/privileges/categories.js
Expand Up @@ -53,8 +53,8 @@ privsCategories.getType = function (privilege) {
return priv && priv.type ? priv.type : '';
};

privsCategories.getUserPrivilegeList = async () => await plugins.hooks.fire('filter:privileges.list', Array.from(_privilegeMap.keys()));
privsCategories.getGroupPrivilegeList = async () => await plugins.hooks.fire('filter:privileges.groups.list', Array.from(_privilegeMap.keys()).map(privilege => `groups:${privilege}`));
privsCategories.getUserPrivilegeList = () => Array.from(_privilegeMap.keys());
privsCategories.getGroupPrivilegeList = () => Array.from(_privilegeMap.keys()).map(privilege => `groups:${privilege}`);

privsCategories.getPrivilegeList = async () => {
const [user, group] = await Promise.all([
Expand All @@ -72,27 +72,20 @@ privsCategories.getPrivilegesByFilter = function (filter) {

// Method used in admin/category controller to show all users/groups with privs in that given cid
privsCategories.list = async function (cid) {
let labels = Array.from(_privilegeMap.values()).map(data => data.label);
labels = await utils.promiseParallel({
users: plugins.hooks.fire('filter:privileges.list_human', labels.slice()),
groups: plugins.hooks.fire('filter:privileges.groups.list_human', labels.slice()),
});

const keys = await utils.promiseParallel({
users: privsCategories.getUserPrivilegeList(),
groups: privsCategories.getGroupPrivilegeList(),
});

const payload = await utils.promiseParallel({
labels,
labelData: Array.from(_privilegeMap.values()),
users: helpers.getUserPrivileges(cid, keys.users),
groups: helpers.getGroupPrivileges(cid, keys.groups),
});
payload.keys = keys;

payload.columnCountUserOther = payload.labels.users.length - privsCategories._coreSize;
payload.columnCountGroupOther = payload.labels.groups.length - privsCategories._coreSize;
payload.columnCountUserOther = payload.labelData.length - privsCategories._coreSize;
payload.columnCountGroupOther = payload.labelData.length - privsCategories._coreSize;

return payload;
};
Expand Down
13 changes: 2 additions & 11 deletions src/privileges/global.js
Expand Up @@ -54,8 +54,8 @@ privsGlobal.getType = function (privilege) {
return priv && priv.type ? priv.type : '';
};

privsGlobal.getUserPrivilegeList = async () => await plugins.hooks.fire('filter:privileges.global.list', Array.from(_privilegeMap.keys()));
privsGlobal.getGroupPrivilegeList = async () => await plugins.hooks.fire('filter:privileges.global.groups.list', Array.from(_privilegeMap.keys()).map(privilege => `groups:${privilege}`));
privsGlobal.getUserPrivilegeList = () => Array.from(_privilegeMap.keys());
privsGlobal.getGroupPrivilegeList = () => Array.from(_privilegeMap.keys()).map(privilege => `groups:${privilege}`);
privsGlobal.getPrivilegeList = async () => {
const [user, group] = await Promise.all([
privsGlobal.getUserPrivilegeList(),
Expand All @@ -65,21 +65,12 @@ privsGlobal.getPrivilegeList = async () => {
};

privsGlobal.list = async function () {
async function getLabels() {
const labels = Array.from(_privilegeMap.values()).map(data => data.label);
return await utils.promiseParallel({
users: plugins.hooks.fire('filter:privileges.global.list_human', labels.slice()),
groups: plugins.hooks.fire('filter:privileges.global.groups.list_human', labels.slice()),
});
}

const keys = await utils.promiseParallel({
users: privsGlobal.getUserPrivilegeList(),
groups: privsGlobal.getGroupPrivilegeList(),
});

const payload = await utils.promiseParallel({
labels: getLabels(),
labelData: Array.from(_privilegeMap.values()),
users: helpers.getUserPrivileges(0, keys.users),
groups: helpers.getGroupPrivileges(0, keys.groups),
Expand Down
2 changes: 1 addition & 1 deletion src/user/email.js
Expand Up @@ -144,7 +144,7 @@ UserEmail.sendValidationEmail = async function (uid, options) {
uid,
username,
confirm_link,
confirm_code: await plugins.hooks.fire('filter:user.verify.code', confirm_code),
confirm_code,
email: options.email,

subject: options.subject || '[[email:email.verify-your-email.subject]]',
Expand Down