diff --git a/src/plugins/hooks.js b/src/plugins/hooks.js index 00f6cc9f00..491fa0d747 100644 --- a/src/plugins/hooks.js +++ b/src/plugins/hooks.js @@ -55,12 +55,8 @@ module.exports = function(Plugins) { callback = typeof callback === 'function' ? callback : function() {}; var hookList = Plugins.loadedHooks[hook]; - - if (!Array.isArray(hookList) || !hookList.length) { - return callback(null, params); - } - var hookType = hook.split(':')[0]; + switch (hookType) { case 'filter': fireFilterHook(hook, hookList, params, callback); @@ -78,6 +74,10 @@ module.exports = function(Plugins) { }; function fireFilterHook(hook, hookList, params, callback) { + if (!Array.isArray(hookList) || !hookList.length) { + return callback(null, params); + } + async.reduce(hookList, params, function(params, hookObj, next) { if (typeof hookObj.method !== 'function') { if (global.env === 'development') { @@ -98,6 +98,9 @@ module.exports = function(Plugins) { } function fireActionHook(hook, hookList, params, callback) { + if (!Array.isArray(hookList) || !hookList.length) { + return callback(); + } async.each(hookList, function(hookObj, next) { if (typeof hookObj.method !== 'function') { @@ -113,6 +116,9 @@ module.exports = function(Plugins) { } function fireStaticHook(hook, hookList, params, callback) { + if (!Array.isArray(hookList) || !hookList.length) { + return callback(); + } async.each(hookList, function(hookObj, next) { if (typeof hookObj.method === 'function') { var timedOut = false; diff --git a/src/webserver.js b/src/webserver.js index 4e7dc896a8..7e8e01ed92 100644 --- a/src/webserver.js +++ b/src/webserver.js @@ -106,7 +106,7 @@ function initializeNodeBB(callback) { middleware: middleware }, next); }, - function(results, next) { + function(next) { routes(app, middleware); next(); }